let a = (1i32, false); // 元组中包含两个元素,第一个是i32类型,第二个是bool类型 let b = ("a", (1i32, 2i32)); // 元组中包含两个元素,第二个元素本身也是元组,它又包含了两个元素 let a = (0, ); // a是一个元组,它有一个元素 let b = (0); // b是一个括号表达式,它是i32类型
let p = (1i32, 2i32); let (a, b) = p;
let x = p.0; let y = p.1; println!("{} {} {} {}", a, b, x, y);
fn main() { println!("size of i8 {}" , std::mem::size_of::<i8>()); println!("size of char {}" , std::mem::size_of::<char>()); println!("size of '()' {}" , std::mem::size_of::<()>()); }
struct
1 2 3 4
struct Point { x: i32, y: i32, }
初始化,类json语法初始化
1 2 3 4
fn main() { let p = Point { x: 0, y: 0}; println!("Point is at {} {}", p.x, p.y); }
使用局部变量初始化
1 2 3 4 5 6 7 8
fn main() { // 刚好局部变量名字和结构体成员名字一致 let x = 10; let y = 20; // 下面是简略写法,等同于 Point { x: x, y: y },同名字的相对应 let p = Point { x, y }; println!("Point is at {} {}", p.x, p.y); }
error[E0072]: recursive type `Recursive` has infinite size
--> test.rs:2:1
|
2 | struct Recursive {
| ^^^^^^^^^^^^^^^^ recursive type has infinite size
3 | data: i32,
4 | rec: Recursive,
| -------------- recursive without indirection
|
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make