rust 是强类型语言,所有变量、常量都必须有明确的数据类型;很多情况下,省略类型声明,编译器可自动推导,但不是所有情况下都会成功。
rust 有整型、浮点型、布尔型、字符型、数组、元组、枚举、结构体等数据结构,其中:
整型有:i8、i16、i32、i64、isize、u8、u16、u32、u64、usize 等
浮点型有:f32、f64,自动推导默认类型 f64
一、rust 中的变量值默认是不允许改变的,即不可二次斌值,如下代码无法通过编译,需要在变量前添加 mut 标识
fn main() {
let zVar: i64 = 0; // let mut zVar: i64 = 0;
zVar = 1;
println!("{}", zVar);
}
二、rust 中可以连续定义同名变量,新的变量将覆盖旧的变量,且前后的变量类型可以不一致:即 shadowing 特性。
fn main() {
let zvar: i32 = 0;
let zvar: i32 = zvar + 1;
let zvar: i32 = zvar * 2;
let zvar: &str = "Hello World!";
let zvar = zvar.len();
println!("{}", zvar);
}
三、rust 中常量定义必须显示指明数据类型,同一作用域内不可重名,局部定义覆盖全局定义。
const GLOB_NUM: f64 = 0.0; // 右值必须符合左值声明的数据类型,如指定 f64,但右值赋值为 1,则无法通过编译。
fn main() {
let zvar: i32 = 0;
let zvar: i32 = zvar + 1;
let zvar: i32 = zvar * 2;
let zvar: &str = "Hello World!";
let zvar = zvar.len();
const GLOB\_NUM: f64 = 1.0;
println!("{} {}", zvar, GLOB\_NUM);
}
四、结构体
fn main() {
#[derive(Debug)]
struct _T {
a: i32,
b: u64,
}
let mut \_test = \_T {a: , b: }; // 必须斌值,否则后续无法使用
\_test.a = ;
\_test.b = ;
println!("{} {}\\n{:?}", \_test.a, \_test.b, \_test);
}
注:
五、枚举
#[derive(Debug)]
enum _T {
_A(i32),
_B(String),
_C(i64, u32),
_D,
_E{x: i32, y: i32},
}
impl _T {
fn print_self(&self) -> i32 {
println!("{:?}", self);
}
}
fn main() {
let _var = _T::_D;
let _var0 = _T::_E{x: , y:};
\_var.print\_self();
\_var0.print\_self();
}
____
手机扫一扫
移动阅读更方便
你可能感兴趣的文章