1.变量默认不可变
2.宏使用感叹号调用
let x=1;
println!("{:?}",x); //:?调试模式
3.if else
let x=10;
if x>10 {
println!("big");
}else{
println!("small");
}
4.循环
let mut x=0;
loop{
if x==5 {
break;
}
println!("{:?}",x);
x=x+1;
}
//0
//1
//2
//3
//4
let mut x=0;
while x!=5 {
println!("{:?}",x);
x=x+1;
}
5.函数
fn main() {
first_name();//first
last_name(666);//666
println!("{}", add(1,2));//3
}
fn first_name(){
println!("first");
}
fn last_name(last:i32){
println!("{}",last);
}
fn add(a:i32, b:i32)->i32{
a+b
}
6.match
fn main() {
let fuck=true;
match fuck{
true=>println!("true"),
false=>println!("false"),
}//true
let some_int=5;
match some_int{
1=>println!("one"),
2=>println!("two"),
_=>println!("else"),
}//else
}
match编译器会检查,所有可能性,if else不会
7.枚举
fn main() {
enum Fuck {
Up,
Down,
} //枚举类型
fn which_way(go: Fuck){
match go {
Fuck::Up => println!("up"),
Fuck::Down => println!("down"),
} //枚举值
}
which_way(Fuck::Up); //up
which_way(Fuck::Down); //down
}
8.结构体
fn main() {
struct Fuckbox{
depth: i32,
width: i32,
height: i32,
}
let fuck=Fuckbox{
depth: 10,
width: 20,
height: 30,
};
println!("{}",fuck.depth); //10
println!("{}",fuck.width); //20
println!("{}",fuck.height); //30
}
9.元组
fn main() {
fn one_two_three()->(i32,i32,i32){
(1,2,3)
}
let (a,b,c) = one_two_three();
let numbers=one_two_three();
println!("{:?},{:?}",a,numbers.0); //1,1
println!("{:?},{:?}",b,numbers.1); //2,2
println!("{:?},{:?}",c,numbers.2); //3,3
}
10.表达式
fn main() {
let x=3;
let to_five=if x<5 {
true
} else {
false
};
println!("{}", to_five); //true
let to_5=x<5;
println!("{}", to_5); //true
}
fn main() {
let x=2;
let message=match x{
1=>"one",
_=>"else",
};
println!("{}",message);//else
}
11.借用
enum Light{
Dull,
}
fn display_light(light:&Light){
match light{
Light::Dull => println!("dull"),
}
}
fn main() {
let dull = Light::Dull;
display_light(&dull);//dull
//不借用的话,下面无法执行,因为所有权被转移
display_light(&dull);//dull
}