12 2021 档案

摘要:智能指针 Box, RC, RefCell 智能指针是数据结构,表现类似于指针,但也拥有额外的数据结构。 引用和智能指针的区别:引用只是只借用数据的指针,而智能指针则是拥有它们指向的数据。 Box box值是放在堆上,而指向的堆上的数据的指针是留在栈上。 fn main() { // v存在栈上,5 阅读全文
posted @ 2021-12-08 14:17 阿初 阅读(174) 评论(0) 推荐(0) 编辑
摘要:迭代器 迭代器是惰性的,调用方法使用迭代器之前,不会有任何的效果。 每个迭代器都实现了iterator trait,这个 trait 定义在标准库里。 trait Iterator { type Item; // type Item和Self::Item这种用法叫做定义trait的关联类型。这里只定 阅读全文
posted @ 2021-12-06 16:52 阿初 阅读(274) 评论(0) 推荐(0) 编辑
摘要:闭包 创建闭包 fn main() { let use_closure = || { println!("Hello, world!"); }; use_closure() } 语法格式 let func = |函数参数| -> 返回值 {逻辑}; let func = |x: u32| -> u3 阅读全文
posted @ 2021-12-06 15:47 阿初 阅读(127) 评论(0) 推荐(0) 编辑
摘要:# 随笔&一些概念 ## 地址 B800:0000 400 显存地址。 冒号左边的是**段地址**,冒号右边的是**偏移地址**。 段地址保存在段地址寄存器中,偏移地址保存在偏移地址寄存器中。 CPU中可以存放地址信息和数据信息的地方叫做**寄存器**。 修改寄存器中的内容从而控制CPU(控制整个计 阅读全文
posted @ 2021-12-02 19:15 阿初 阅读(65) 评论(0) 推荐(0) 编辑
摘要:阶段性笔记(理解) 引用和借用 泛型 struct trait 引用和借用 引用和借用都有生命周期。引用是作为参数传递给函数的地址。 创建一个变量,借用/引用都是指向同一个内存地址。只不过所有权不一样。 借用&: let b = &3; 引用ref: let ref c: i32 = 2; 这两种类 阅读全文
posted @ 2021-12-02 17:27 阿初 阅读(70) 评论(0) 推荐(0) 编辑
摘要:生命周期 避免悬垂引用。 rust可以提前声明,即声明一个变量但不初始化,因为没有赋值,所以也用不了,rust也不存在空值。 借用检查器 比较作用域来判断所有的借用是否合法。被引用的数据存活时间,必须比引用者的长。 函数中的泛型生命周期 手动设置生命周期,当函数返回一个引用的时候,它不会知道这个引用 阅读全文
posted @ 2021-12-02 10:26 阿初 阅读(279) 评论(0) 推荐(0) 编辑
摘要:Trait Trait告诉rust编译器某种类型具有哪些并且可以与其他类型共享的功能。抽象的定义共享行为。 有点类似继承。 定义一个Trait trait Summary { // 只创建方法,声明签名 fn summarize(&self) -> String; } 在类型实现trait impl 阅读全文
posted @ 2021-12-01 14:23 阿初 阅读(200) 评论(0) 推荐(0) 编辑
摘要:重复代码 提取函数。 fn largest(list: &[i32]) -> i32 { let mut largeNumber = list[0]; for item in list { if *item > largeNumber { largeNumber = *item } } largeN 阅读全文
posted @ 2021-12-01 10:49 阿初 阅读(96) 评论(0) 推荐(0) 编辑