马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
rust和其他语言一样除了根本的整型、浮点型、布尔、字符外也有复合范例、聚集范例等复杂范例
1.复合范例数组和元组
数组不消过多先容,但元组不是全部语言都有,现在我学的语言只有python,rust有这个范例
与数组相比类似点:都是复合范例、长度都是固定的,差别点在于元组可以是差别范例的数据范例,数组必须同一范例的数据范例。
数组声明与使用- fn main() {
- //声明 a 是一个长度为 5 的整型数组
- let a = [1, 2, 3, 4, 5];
- //声明b 是一个长度为3的字符串数组
- let b = ["python", "go", "rust"];
- // 等同于 let c = [3, 3, 3, 3, 3];
- let c = [3; 5];
- //访问
- println!("{}",a[0]);
- //a[0] = 123; //同样如果没有mut:数组 a 不可变,不可改变里面的值
- let mut a = [1, 2, 3]; //加了mut才能修改
- a[0] = 4; // 正确
- //循环遍历
- for i in a.iter() {
- println!("值为 : {}", i);
- }
- }
复制代码 元组声明与使用- fn main() {
- //声明一个元组tuple
- let tuple = (1, "beijing", true, 0.9);
- //访问
- println!("{}", tuple.0);
- /*元组不可遍历和切片(这点与python中的元组有很大不同)
- Rust中的元组不能直接进行遍历。元组是一个固定长度的、可以包含不同类型元素的复合类型。
- 不能使用for循环直接遍历元组,因为元组没有实现Iterator trait。
- 元组也不能像数组那样进行切片操作。只能通过索引来访问元组中的单个元素,索引从0开始,
- 使用点号(.)来访问,例如:tuple.0,tuple.1等。
- 如果你需要遍历或切片操作,有以下替代方案:
- 1.如果需要遍历,可以将元组转换为数组(要求数据类型相同)
- 2.如果元素类型相同,考虑使用数组或Vec替代元组
- 3.可以使用模式匹配来一次性获取多个元素
- */
- // 使用模式匹配解构元组
- let(a,b,c,d) = tuple;
- println!("a: {}, b: {}, c: {}, d:{}", a, b, c, d);
- }
复制代码 2.内存管理模子
其他语言内存管理方式
1.C/C++ 纯手工管理内存(缺乏安全抽象模子),容易堕落
2.以Java/Python/Go即是语言,接纳gc管理:垃圾接纳,固然内存安全,
但是有(stop the world),对性能影响非常大
rust语言内存管理方式
1.思量性能,鉴戒c++的rall资源管理方式
2.思量安全:增长全部权语义
全部权的三大焦点规则
1.每个值有且只有一个全部者
值在恣意时间只能被一个变量拥有,全部者负责值的生命周期。
2.全部者离开作用域时,值会被自动开释
通过 Drop trait 自动调用清算代码(如开释内存)。
3.全部权可通过赋值或函数转达转移(Move)
赋值 let x = y; 或传参会转移值的全部权,原变量将失效(编译器确保安全)。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |