随笔分类 - Rust
rust tricks
摘要:如果T实现了某个trait,那么整个T类型的&T,也实现了该trait了吗?不是这样的。 为什么这样,例子说明下: trait Speaker { fn speak(&self); } struct BasicSpeaker; impl Speaker for BasicSpeaker { fn s
阅读全文
摘要:点号操作会有一些神奇的类型转换发生。将auto-referencing,auto-dereferencing和强转直到类型匹配。 有个函数foo有一个参数(self, &self或者&mut self)。如果调用value.foo,在调用合适的函数实现之前,编译器需要决定什么类型的Self.为了更好
阅读全文
摘要:1.One-Liners 1.strings // 1. 拼接字符串 format!("{x}{y}") // 2.显示Display write!(x, "{y}") // 3. 分隔符分开string,s.split(pattern) s.split("abc"); s.split('/');
阅读全文
摘要:Rust语法速查小册 #1. 数据结构 通过关键字定义的数据类型和内存位置 struct S{}定义一个命名成员的结构体 struct S {x:T} 定义一个结构体,成员名为x,成员类型为T struct S(T) 定义元组类型结构体,成员.0类型为T struct S 定义零长单元结构体,不占空
阅读全文
摘要:可以将所有权、借用规则与这些智能指针做一个对比 | Rust 规则 | 智能指针带来的额外规则 | | | | | 一个数据只有一个所有者 | Rc/Arc让一个数据可以拥有多个所有者 | | 要么多个不可变借用,要么一个可变借用 | RefCell实现编译期可变、不可变引用共存 | | 违背规则导
阅读全文
摘要:1.Copy和Drop 我们无法为一个类型同时实现 Copy 和 Drop 特征。因为实现了 Copy 的特征会被编译器隐式的复制,因此非常难以预测析构函数执行的时间和频率。因此这些实现了 Copy 的类型无法拥有析构函数。 #[derive(Copy)] struct Foo; impl Drop
阅读全文
摘要:1.介绍 方法调用的点操作符看起来简单,实际上非常不简单,它在调用时,会发生很多魔法般的类型转换,例如:自动引用、自动解引用,强制类型转换直到类型能匹配等。 假设有一个方法 foo,它有一个接收器(接收器就是 self、&self、&mut self 参数)。如果调用 value.foo(),编译器
阅读全文

浙公网安备 33010602011771号