• IB-Rust-并发2

    Codes in lesson26 使用共享来实现并发 Go 语言:不要用共享内存来通信,要用通信来共享内存 Rust 支持通过共享状态来实现并发 Channel 类似单所有权:一旦将值的所有权转移至 Channeel,就无法使用它了 共享内存并发类似多所有权:多个线程可以同时访问同一块内存 使用 Mutex 来每次只允许一个线程来访问数据 Mutex 是 mutualexclusion(...
  • IB-Rust-并发1

    Codes in lesson25 并发与并行的区别 并发(Concurrency):多个任务在时间上交替执行 并行(Parallelism):多个任务同时执行 进程与线程 在大部分 OS 里,代码运行在进程(process)中,OS同时管理多个进程 在程序里,各独立部分可以同时运行,运行这些独立部分的就是线程(thread) 多线程运行 可以提升性能表现 和 增加复杂性,但无法保障各线程...
  • IB-Rust-测试

    Codes in lesson24.1 Codes in lesson24.2 Unit Test测试结构基本单元测试使用 #[cfg(test)] 属性标记测试模块: 123456789101112131415#[cfg(test)]mod tests { // 导入要测试的模块 use super::*; #[test] fn it_works(...
  • IB-Rust-迭代器

    Codes in lesson23 什么是迭代器? 迭代器模式:对一系列项执行某些任务 迭代器负责: 遍历每个项 确定序列(遍历)何时完成 Rust 的迭代器: 懒惰的:除非调用消费迭代器的方法,否则迭代器本身没有任何效果 123456let v1 = vec![1, 2, 3];let v1_iter = v1.iter();// rust 的迭代器是懒惰的,除非调用消费迭代器的...
  • IB-Rust-闭包

    Codes in lesson22 闭包介绍 什么是闭包? 闭包是一个可以捕获所在环境中的变量的匿名函数 闭包通过 || 符号定义,可以像普通函数一样调用,但与函数不同,闭包可以访问外部作用域的变量 闭包的特点 可以捕获周围作用域的变量 支持作为参数传递给其他函数 可以返回闭包作为函数的返回值 闭包通常通过类型推断来确定参数和返回值的类型 闭包定义12let add_one =...
  • IB-Rust-macro宏

    Codes in lesson21 常用宏123456println!("Hello, world!"); // 常用println! {"Hello, world!"};println!["Hello, world!"];let v = vec![1, 2, 3, 4, 5];assert_eq!(1, 10)...
  • IB-Rust-trait特性

    Codes in lesson20 trait 定义trait 定义了某个特定类型拥有可能与其他类型共享的功能 trait 类似于其他语言中 接口(interfaces)的功能 trait 实现普通实现 使用 trait 关键字声明一个特征 在大括号中定义该特征的所有方法 只定义特征方法的签名,而不进行实现,此时方法签名结尾是 ;,而不是 {} 123pub tr...
  • IB-Rust-智能指针2

    Codes in lesson19 课程概述 Rc<T> RefCell<T> Weak<T> Rc<T> 引用计数指针什么是 Rc<T>? Rc 是 Reference Counted(引用计数) 的缩写 允许多所有者的共享所有权模型 举例说明使用 Box<T> 定义 cons list 的例子。这一次,我们希望创...
  • IB-Rust-生命周期

    Codes in lesson18 创建生命周期⽣命周期主要通过⽣命周期注解来创建和使⽤。⽣命周期注解是⼀种显式声明引⽤有效时间的⽅式,通常⽤’a、’b 这样的符号表示 生命周期类别fn‘a ⽣命周期注解 表明返回值的⽣命周期与输⼊参数的⽣命周期相同: 123fn longest<'a>(x: &'a str, y: &'a str)...
  • IB-Rust-泛型

    Codes in lesson17 泛型的例子用同一功能的函数处理不同类型的数据,例如两个数的加法,无论是整数、浮点数、还是自定义类型,都能支持。在不支持泛型的编程语言中,需要为每种类型编写一个函数: 1234567891011121314fn add_i8(a:i8, b:i8) -> i8 { a + b}fn add_i32(a:i32, b:i32) ...
123410