Rust
创建
Rust 定义结构体也是以struct关键字开头
#[derive(Debug)]
struct Rectangle {
length:u32,
width:u32,
user:String,
}
上面我们定义了结构体Rectangle,包含成员变量usert是String类型的,String在赋值时执行的是Move操作,如果将user值赋给其他变量会怎么样?
fn main() {
let rec1 = Rectangle{length:50,width:30,user:String::from("kingeasternsun")};
println!("{:#?}",rec1);
let s3 = rec1.user;
println!("{}",s3);
println!("{:#?}",rec1);
}
报错如下:
rec1中的user的值已经移动给s3了,所以
println!("{:#?}",rec1);
就非法了。
我们把
println!("{:#?}",rec1);
注释掉
再次执行
我们可以使用引用来避免move
let rec1 = Rectangle{length:50,width:30,user:String::from("kingeasternsun")};
println!("{:#?}",rec1);
let s3 = &rec1.user;
println!("{}",s3);
println!("{:#?}",rec1);
执行结果如下:
元祖结构体
没有具体的字段名只有字段的类型
#[derive(Debug)]
struct Color(i32,i32,i32);
let black = Color(0,0,0);
println!("{:#?}",black);
打印结果: