目录
一,输入输出
二,函数
1,main函数
2,普通函数
3,库函数
4,常用库函数
三,变量
1,变量绑定、let、mut
2,变量作用域
四,数据结构
1,基本类型
(1)整数类型
(2)浮点数
(3)bool类型
2,基本类型的代数结构
3,序列
4,类型范畴
五,常用关键字
1,match
六,面向对象
rust 在线运行
一,输入输出
println!("Hello, World");
二,函数
1,main函数
fn main() {println!("Hello, World");
}
2,普通函数
(1)void函数
fn myPrint(){println!("{}", 1234);
}
fn main() {myPrint();
}
(2)带返回值的函数
可以这样:
fn f()->i32{let x=123;return x+1;
}
fn main() {println!("{}",f());
}
也可以这样:
fn f()->i32{let x:i32 = 1234;x+1
}
还可以这样:
fn f()->i32{123456
}
也就是说,大括号{}里面可以当成一个大的表达式,而表达式是可以直接return的,不要带分号结尾,而return语句要带分号结尾。
3,库函数
调用库函数,末尾带感叹号
4,常用库函数
assert_eq 用于校验2个值相等
三,变量
1,变量绑定、let、mut
let x = "what";println!("{}",x);
绑定行为类似于引用,所以这里面的x是不可修改的。
错误代码:
let x = "what";x="rrr";
正确代码:
let mut x = "what";x="rrr";
2,变量作用域
fn main() {let x=5;let x=x+1;{let x=x*2;println!("{}",x);}println!("{}",x);
}
输出:
12 6
代码等价于:
fn main() {let x=5;let x2=x+1;{let x3=x2*2;println!("{}",x3);}println!("{}",x2);
}
也就是说,同一个作用域内,同样的变量名,重复进行绑定,就取代了之前的绑定,
而大括号{}则自成作用域,作用域内可以重新绑定,出了作用域又退回之前的绑定状态。
四,数据结构
1,基本类型
(1)整数类型
let x=111_222_3334;let y:u16=1123;
整数默认是i32类型,整数中间的下划线可以忽略。
(2)浮点数
在 Rust 中浮点类型数字也有两种基本类型: f32
和 f64
let x=2.5;let y:f32=1.23;
浮点数默认是f64类型。
(3)bool类型
取值:false true
2,基本类型的代数结构
在c++中,基本类型都是有相等关系的。
然而在rust中,浮点数只有std::cmp::PartialEq
特征,没有std::cmp::Eq
特征,Rust 的整数类型、字符串类型、布尔类型都实现了该特征。
所以,哈希表的key类型可以是整数类型、字符串类型、布尔类型,不能是浮点数类型。
3,序列
for i in 1..=5{ println!("{}",i);}
带了等号,所以序列是1,2,3,4,5
去掉等号,序列就是1,2,3,4
4,类型范畴
int表示整数范畴,包括很多种整数类型,而int本身不能当做整数类型来用。
五,常用关键字
1,match
match用于流程控制,和c++的switch case类似。
fn main() {let x:Option<u8>=Some(2);let y = match x{Some(int)=>int*int+3,None=>10};println!("{}",y);
}
每个匹配结果都是一个表达式,这里的匹配int就是int范畴,而匹配结果的表达式里面,就用int代表匹配出的整数值。
也可以用函数调用作为匹配结果:
let x=Some(7);match x{Some(x) if x<5 => println!("x<5"),Some(x) if x>=5 => println!("x>=5"),None => println!("none"),_ => println!("else")};
其中_表示剩余的所有情况。
貌似表达式和函数调用不能混合。
六,面向对象
数据、接口描述、接口实现要分开。
trait Solution{fn find(&self)-> i32;
}
struct SearchData{}
impl Solution for SearchData{fn find(&self)-> i32{return 123;}
}
fn main() {let x=SearchData{};println!("{}",x.find());
}