Rust by Example | страница 18
>let _unused_variable = 3u32;
>let noisy_unused_variable = 2u32;
>// FIXME ^ Prefix with an underscore to suppress the warning
>}
>הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Variable bindings are immutable by default, but this can be overridden using the mut modifier.
>fn main() {
>let _immutable_binding = 1;
>let mut mutable_binding = 1;
>println!("Before mutation: {}", mutable_binding);
>// Ok
>mutable_binding += 1;
>println!("After mutation: {}", mutable_binding);
>// Error!
>_immutable_binding += 1;
>// FIXME ^ Comment out this line
>}
>הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The compiler will throw a detailed diagnostic about mutability errors.
Variable bindings have a scope, and are constrained to live in a block. A block is a collection of statements enclosed by braces {}.
>fn main() {
>// This binding lives in the main function
>let long_lived_binding = 1;
>// This is a block, and has a smaller scope than the main function
>{
>// This binding only exists in this block
>let short_lived_binding = 2;
>println!("inner short: {}", short_lived_binding);
>}
>// End of the block
>// Error! `short_lived_binding` doesn't exist in this scope
>println!("outer short: {}", short_lived_binding);
>// FIXME ^ Comment out this line
>println!("outer long: {}", long_lived_binding);
>}
>הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה