上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 79 下一页
摘要: 继承/多态性 书中认为继承给子类分享了一些可能并不需要的代码,因此并不好。Rust中最接近继承/多态的是trait。 通过使用不同的Trait和Trait bound,可以达到类似接口的效果。我们可以要求一些参数/域实现了某种Trait而无需知道究竟这些参数/域是什么具体类型,这样的参数/域称之为T 阅读全文
posted @ 2020-10-27 22:11 雪溯 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 使用线程来并行化任务一方面可以加快速度,避免因为IO等待耗费太久时间,另外一方面,也带来了资源竞争,死锁和潜在的难以复现的种种bug。不同的编程语言采取不同策略来生成管理调度线程,如果用户在编程语言中申请一个线程,就通过系统接口获取系统的一个线程,那么就称之为1:1模型。编程语言提供的线程被称为gr 阅读全文
posted @ 2020-10-27 21:03 雪溯 阅读(111) 评论(0) 推荐(0) 编辑
摘要: Smart Pointer也是指向内存中一块数据的指针的一种,但是它提供了比指针更为强大的功能。Smart Pointer与引用的区别是,引用只是借用了对那个的数据,但是smart pointer有时会直接拥有对应的数据。 String和Vec<T>都可以算作是Smart Pointer,都有met 阅读全文
posted @ 2020-10-27 17:10 雪溯 阅读(171) 评论(0) 推荐(0) 编辑
摘要: Profiles Cargo有两大主要的profiles:dev和release。 例如,可以在Cargo.toml里自定义: [profile.dev] opt-level = 0 [profile.release] opt-level = 3 Publish crate to Crates.io 阅读全文
posted @ 2020-10-27 14:57 雪溯 阅读(179) 评论(0) 推荐(0) 编辑
摘要: Closures Closure是匿名函数,并且可以存下来。此外,Closure会获取创建时的作用域中的变量。 fn generate_workout(intensity: u32, random_number: u32) { let expensive_closure = |num| { //cl 阅读全文
posted @ 2020-10-26 20:08 雪溯 阅读(96) 评论(0) 推荐(0) 编辑
摘要: src/lib.rs use std::error::Error; use std::fs; struct Config { pub query: String, pub filename: String, pub case_sensitive: bool, } impl Config { fn n 阅读全文
posted @ 2020-10-26 18:35 雪溯 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 单元测试 The Rust Programming Language认为,单元测试分为3部分,1. 设置好需要的数据和状态 2. 运行需要测试的代码 3. 检查返回的结果是否如预期。 使用cargo test即可运行以下单元测试。 #[cfg(test)] mod tests { #[test] f 阅读全文
posted @ 2020-10-26 18:08 雪溯 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 泛型 在函数中 fn largest<T>(list: &[T]) -> &T { let mut largest = list[0]; for item in list { if item > largest { largest = item; } } largest } 在struct中 str 阅读全文
posted @ 2020-10-26 16:48 雪溯 阅读(123) 评论(0) 推荐(0) 编辑
摘要: panic! 默认panic!时,rust会unwinding,回溯stack并且清理剩余数据。如果需要最快速度停止而不清理,就可以在Cargo.toml这样设置: [profile.release]# 在release模式下 panic = 'abort' panic之后会返回错误信息: $ ca 阅读全文
posted @ 2020-10-26 01:37 雪溯 阅读(99) 评论(0) 推荐(0) 编辑
摘要: Vector let v: Vec<i32> = Vec::new();//实例化 { let v = vec![1, 2, 3];//Rust自动推测类型 }//出了作用域自动析构 v.push(5); v.push(6); let third: &i32 = &v[2];//[]会得到一个引用, 阅读全文
posted @ 2020-10-25 17:06 雪溯 阅读(173) 评论(0) 推荐(0) 编辑
上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 79 下一页