【学习笔记】rust拾遗

本文是Rust编程学习笔记,涵盖项目创建、运行,变量定义、类型,基本运算,控制流语句,如if、loop、for,还介绍了元组、数组、结构体、枚举等数据结构,以及值传递、match匹配等内容,为Rust编程入门提供基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. cargo new 项目名称 创建一个新项目

  2. src 项目源码

  3. Cargo.toml 依赖包 类似于pom

  4. cargo run 运行项目

  5. 函数开头是fn

  6. println!() 打印

  7. println!(“i is {i}”) 序列化

  8. let n= 1 建立一个只读参数

  9. let mut n =1 创建一个变量

  10. let n:u32 =1 创建一个变量 并指定类型

11.1 let guess: u32 = “42”.parse().expect(“Not a number!”); 字符串转 int

  1. 8b i8 u8 整型

    128b i128 u128
    arch isize usize 如果系统是32位则类似与i32 ,64位则是i64

12 let sum = 1+3 ; 加法
let difference= 3.2-2.2 ; 减法
let multiplication = 4*30 ;乘法
let division = -5/3 ; 除法
let remainder = 32 %3 ;取余

13 浮点型 f32 ,f64

  1. bool true false

  2. char 字符型 单引号 let a = “a” ; a是字节 let a = “a” ; a是字符串切片

16 fn print_type_of(_: &T) {
println!(“{}”, std::any::type_name::())
}
打印变量类型

17 元组 let tup: (i32, f64, u8) = (500, 6.4, 1);

18 数组 let a = [1,2,3,4]; 不可变长 let a:[i32;5] = [1,2,3,4,5]

19 fn print_labeled_measurement(value: i32, unit_label: char) -> u32 { // 形参:类型 -> 出参类型
}

20 let num = 3;
if num <5 {
println!(“condition was true”);
} else if num<50 {
println!(“condision was 48”);
}else{
println!(“condition was false”);
}

21 fn main() { // loop循环
let mut count = 0;
'counting_up: loop {
println!(“count = {count}”);
let mut remaining = 10;
loop {
println!(“remaining = {remaining}”);
if remaining == 9 {
break;
}
if count == 2 {
break 'counting_up;
}
remaining -= 1;
}
count += 1;
}
println!(“End count = {count}”);
}

22 fn main() {
let mut count = 0;
'counting_up: loop {
println!(“count = {count}”);
let mut remaining = 10;
loop {
println!(“remaining = {remaining}”);
if remaining == 9 {
break;
}
if count == 2 {
break 'counting_up; // break 到标签
}
remaining -= 1;
}
count += 1;
}
println!(“End count = {count}”);
}

23 let a =[1,2,3,4,5]; 遍历列表
for ls in a {
println!(“ls is {ls}”);
}

24 for i in (1…9) { 打印1到 9
println!( "po num {i} " );
}

25 let e = [1,2,3,4,5,6]; 打印整个列表
println!(“list 3… {:?}”,e);

26 println!(“adress {:p}”,e); 打印内存地址

27 let e = [1,2,3,4,5,6]; 数组切片
let ee = &e[2…];

28 struct User { 结构体的定义 与 构建一个 结构体
active: bool,
username: String,
email: String,
sign_in_count: u64,
}
impl User{ 结构体方法
fn add(&self) -> String {
let b:String = self.email.clone();
let a:String = self.email.clone() + &self.username ;
a
}

}

fn main() {
let a_user = User{
active: true,
username:“alanqiu”.to_string()
,email:“111@11.com”.to_string()
,sign_in_count:1,
};
println!(" my name is {} " , a_user.username);
}

29 struct Color(i32, i32, i32); 元组结构体

30 值传递 到另一个作用域 , 当原先的作用域 访问时 会被拒绝
可以使用clone()出一个新的作用域, 或者用指针

31 match a>1 {
true => { println!(“yes”); }
false => {println!(“no”) }
}
let a =1;
match a {
1 => { println!(“yes”); }
0 => {println!(“no”) }
_ => () 其他 情况的分支,空返回
}

32 struct , enum #[derive(Debug)] 加上才能友好打印

33 自定义包 的 属性 前要加pub,如果需要在main中使用
#[derive(Debug)]
pub struct Asparagus {
pub Age :u32,
pub Name :String,

}

34 enum SpreadsheetCell { 自定义一个枚举类 ,vec 就可以装进去
Int(i32),
Float(f64),
Text(String),
}
let row = vec![
SpreadsheetCell::Int(3),
SpreadsheetCell::Text(String::from(“blue”)),
SpreadsheetCell::Float(10.12),
];

35
#[derive(Debug)]
pub struct Stduent {
pub id: usize,
pub name:String
}
#[derive(Debug)]
pub struct Teacher {
pub id: usize,
pub name:String
}
#[derive(Debug)]
enum School{
Stduent(Stduent),
Teacher(Teacher)
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值