一,输入输出
println!("Hello, World");
二,函数
1,main函数
fn main() {
println!("Hello, World");
}
2,普通函数
fn myPrint(){
println!("{}", 1234);
}
fn main() {
myPrint();
}
3,库函数
调用库函数,末尾带感叹号
三,变量
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,整数类型
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,基本类型的代数结构
在c++中,基本类型都是有相等关系的。
然而在rust中,浮点数只有std::cmp::PartialEq
特征,没有std::cmp::Eq
特征,Rust 的整数类型、字符串类型、布尔类型都实现了该特征。
所以,哈希表的key类型可以是整数类型、字符串类型、布尔类型,不能是浮点数类型。
4,序列
for i in 1..=5{
println!("{}",i);
}
带了等号,所以序列是1,2,3,4,5
去掉等号,序列就是1,2,3,4
5,vector
fn main() {
let mut nums=vec![1,2,4,3];
println!("{}",nums.len());
}
五,算法库
1,排序
fn main() {
let mut nums=vec![1,2,4,3];
nums.sort();
println!("{}",nums[3]);
}
vector的默认排序,从小到大排序,输出4