uso usar usa texto puntos punto poner para los ejemplos cuando comas coma syntax rust semicolon

syntax - usar - ¿Son los puntos y comas opcionales en Rust?



uso de los dos puntos (1)

Dado que los puntos y coma son aparentemente opcionales en Rust, por qué, si hago esto:

fn fn1() -> i32 { let a = 1 let b = 2 3 }

Me sale el error

error: expected one of `.`, `;`, `?`, or an operator, found `let` --> src/main.rs:3:9 | 2 | let a = 1 | - expected one of `.`, `;`, `?`, or an operator here 3 | let b = 2 | ^^^ unexpected token

?


No son opcionales. Los puntos y coma modifican el comportamiento de una declaración de expresión, por lo que debería ser una decisión consciente si los usa o no para una línea de código.

Casi todo en Rust es una expresión. Una expresión es algo que devuelve un valor. Si pones un punto y coma, estás suprimiendo el resultado de esta expresión, que en la mayoría de los casos es lo que quieres.

Por otro lado, esto significa que si finaliza su función con una expresión sin punto y coma, se devolverá el resultado de esta última expresión. Lo mismo se puede aplicar para un bloque en una declaración de match .

Puede usar expresiones sin punto y coma en cualquier otro lugar donde se espera un valor.

Por ejemplo:

let a = { let inner = 2; inner * inner };

Aquí la expresión inner * inner no termina con un punto y coma, por lo que su valor no se suprime. Ya que es la última expresión en el bloque, su valor será devuelto y asignado a a . Si coloca un punto y coma en esta misma línea, no se devolverá el valor de inner * inner .

En su caso específico, no suprimir el valor de su declaración de let no tiene sentido, y el compilador le está dando un error correcto. De hecho, let que no sea una expresión.