随笔分类 - rust
摘要:use std::collections::HashMap; macro_rules! map { ($($key:expr => $val:expr),*) => {{ let mut hm = HashMap::new(); $(hm.insert($key, $val);)* hm }}; /
阅读全文
摘要:#[derive(Debug)] enum Cell { s(String), i(i64), f(f64) } type Col = Vec<Cell>; trait ColumnFactory { fn build(self) -> Cell; } impl ColumnFactory for
阅读全文
摘要:impl Trait:静态分发dyn Trait:动态分发 静态分发:在编译期就确定了具体返回类型,函数只能返回一种类型。动态分发:在运行时才能确定具体返回类型,函数可以返回多种类型。 Trait Object:指向trait的指针,假设Animal是一个triait,那么&Animal和Box<A
阅读全文
摘要:fn main() { let values = vec![1, 2, 3]; for v in values.into_iter() { println!("{}", v) } // 下面的代码将报错,因为 values 的所有权在上面 `for` 循环中已经被转移走 // println!("{
阅读全文
摘要:https://blog.csdn.net/wowotuo/article/details/116489754 所有 trait 的方法是顺序放在一起,并没有区分方法属于哪个 trait,这样也就导致无法进行 upcast,社区内有 RFC 2765 在追踪这个问题,感兴趣的读者可参考,这里就不讨论
阅读全文
摘要:fn main() { let s = String::from("hello, 世界"); let slice1 = &s[0..1]; //提示: `h` 在 UTF-8 编码中只占用 1 个字节 assert_eq!(slice1, "h"); let slice2 = &s[7..=9];/
阅读全文
摘要:struct Sheep {} struct Cow {} trait Animal { fn noise(&self) -> String; } impl Animal for Sheep { fn noise(&self) -> String { "baaaaah!".to_string() }
阅读全文
摘要:struct Val<T> { val: T,} impl<T> Val<T> { fn value(&self) -> &T { &self.val }} fn main() { let x = Val{ val: 3.0 }; let y = Val{ val: "hello".to_strin
阅读全文
摘要:fn main() { let a = [4,3,2,1]; // 通过索引和值的方式迭代数组 `a` for (i,v) in a.iter().enumerate() { println!("第{}个元素是{}",i+1,v); }} fn main() { let names = [Strin
阅读全文
摘要:struct Unit;trait SomeTrait { // ...定义一些行为} // 我们并不关心结构体中有什么数据( 字段 ),但我们关心它的行为。// 因此这里我们使用没有任何字段的单元结构体,然后为它实现一些行为impl SomeTrait for Unit { }fn main()
阅读全文
摘要:cratesrust-analysisTOML language supportrust -hint开启?
阅读全文
摘要:[dependencies] reqwest = { version = "0.11", default-features = false, features = ["rustls-tls", "blocking"] } html2md = "0.2" use std::fs; fn main()
阅读全文
摘要:https://kaisery.github.io/trpl-zh-cn/foreword.html rust 的核心思想是 由程序员,语法,编译器 共同 维护 程序内的变量生成,使用,复制,转移和销毁。 基本数据类型 i8,i16,i32,i64,i128 // 有符号整数 u8,u16,u32,
阅读全文
摘要:// 什么是问号操作符? // 参考: https://doc.rust-lang.org/book/second-edition/ch09-02-recoverable-errors-with-result.html // 参考: https://stackoverflow.com/questio
阅读全文
摘要:资源:内存区块。不同的内存区块位置和大小就是不同的资源。 strlet a = "xxx".to_string(); 含义:a绑定到字符串资源A上,拥有资源A的所有权 let mut a = "xxx".to_string(); 含义:a绑定到字符串资源A上,拥有资源A的所有权,同时a还可绑定到新的
阅读全文
浙公网安备 33010602011771号