学习rust_day13 异步编程 并行性Parallelism:同时执行多个操作 并发性Concurrency:在操作间进行切换 阻塞操作Blocking Operations:阻止程序继续执行直到操作完成 非阻塞操作Non-blocking Operations:允许程序在等待时执行其他任务 操作类型 CPU密集型(CPU-bound):受处理器能力限制(如视频导出) IO密集型O-bound):受输入/ 2026-03-22
学习rust_day12 引用循环可能导致内存泄漏 内存泄漏 永远不会被清理掉的内存 Rust的安全保障使得意外的内存泄漏很难发生,但不是不可能 完全防止内存泄漏并不是Rust的保证之一 一> 内存泄漏是内存安全的 例如:通过Rc和RefCell就可创建出循环引用,导致内存泄漏 各个项的引用数永不为0 例: 123456789101112131415161718192021222324252627282930 2026-03-21
学习rust_day11 Cargo WorkspacesWorkspace(工作空间)是一组共享同一个Cargo.lock文件和输出目录的包Vorkspace例子: 一个Binary crate: main 两个Library Crate: add_one add two 例: 在项目顶级文件夹下创建Cargo.toml: 12345[workspace]members = [ "adder&qu 2026-03-20
学习rust_day10 零成本抽象(zero-cost abstractions) 迭代器虽然是高级抽象,但在编译后,它们被转换成了与你手写低级代码几乎相同的代码。 迭代器是Rust的零成本抽象之一,这意味着使用这种抽象不会引入任何额外的运行时开销。 结论:在Rust中可放心使用迭代器和闭包等高级特性,它们提供了更高层次的代码抽象,同时保持着极高的运行时性能,不会带来性能损失。 自定义构建与发布配置 Cargo提供 2026-03-20
学习rust_day09 闭包 可以存储在变量中或作为参数传递给其他函数的匿名函数。 闭包中的捕获概念可以理解成从该闭包的上下文获得一些变量的信息以至于可以穿透函数定义的界限使用这些变量。 闭包的类型推断和注释 闭包通常不需要像n函数那样标注参数或返回值的类型 不会在暴露给用户的接口中使用 通常很短,只在有限的上下文中使用,以便编译器可推断其参数和返回值的类型 可以添加类型注释 闭包有点类似匿名函数。 例: 12345 2026-03-19
学习rust_day08 生命周期 当引用的生命周期可能以几种不同的方式相关联时,就必须标注生命周期了。 借用检查器Borrow Checker 确保数据存活的时间长于其引用(Outlive) 比较作用域,以确定所有的借用是否有效 例: 1234567891011121314151617181920212223242526272829//函数中的泛型生命周期fn main() { let string1 2026-03-17
学习rust_day07 错误处理 在Rust中没有“异常” 错误分为可恢复和不可恢复 不可恢复的错误:panic!() 两种导致panic的方式: 代码中的某些行为导致panic 显式的调用panic!()宏 默认情况下:panic后,会打印失败信息,展开Stack,清理Stack Panic后的响应 展开Stack并清理数据 立即终止(abort) 设置立即终止,需要在Cargo.toml中加入: 12[pr 2026-03-16
学习rust_day06 Vectors 在单一数据结构存储多个值 在内存中连续存储(相邻) 元素必须是同类型 Vec来自标准库 例: 12345678910111213141516171819202122232425262728293031323334353637fn main() { let v: Vec<i32> = Vec::new(); //需要手动标注类型 let w = 2026-03-15
学习rust_day05 切片 例: 123456fn main() { let s = String::from("Hello World"); let hello: &str = &s[0..5]; //存储"Hello" let world: &str = &s[6..11]; //存储"World" 2026-03-14
学习rust_day04 所有权 1234567891011fn main() { let a = String::new(); let b = a; //在此之后无法再使用a除非重新对其定义 let c = fun1(b); //在此之后无法再使用b}fn fun1(mut name: String) -> String { name.push_str(&quo 2026-03-13