rust 中的文章

用rust实现简单的单链表

作为初学者,在掌握了rust的基本语法和所有权机制,尝试写一下常见数据结构和算法,目标是为了更好的理解rust的所有权机制。 受限于个人目前对rust仍处于入门阶段,因此本文代码实现不一定是最合适的,甚至可能存在问题。 今天的目标是用rust实……

阅读全文

Rust 1.58已经发布, 这些新特性需要我们关注

最近,Rust 1.58版本发布了,因为Rust新版本发布比较频繁,稳定版本大约每六周就会发布一次,所以每个版本的新特性不会太多。 如果你在以前已经通过rustup安装了Rust,可以通过下面的命令将Rust升级到1.58: 1rustup update stable Rust 1.58的主……

阅读全文

rust语言基础学习: 闭包

今天来学习rust中的闭包。 rust中的闭包实际上是一个匿名函数,这个匿名函数可以被赋值给一个变量,可以作为参数传递给函数,可以作为函数返回值被返回,也可以为它实现某个trait,使其表现出其他行为。 在rust中可以在一个地方创建闭包,然后……

阅读全文

rust语言基础学习: 写时克隆智能指针Cow

昨天学习了Rust中与借用数据相关的三个trait: Borrow, BorrowMut和ToOwned。 理解了这三个trait之后,今天来学习Rust中能够实现写时克隆的智能指针Cow<'a B>。 1.Cow的定义 Cow是Rust提供的用于实现……

阅读全文

rust语言基础学习: rust中的slice类型

今天来学习Rust中的slice类型。 为什么需要slice类型 为什么Rust会提供slice类型呢? Rust中的借用(Borrow语义)可以将一个值在其所有权不发生转移的情况下,借给其他变量使用,借用通过创建引用来实现,Rust中创建引用的……

阅读全文

rust语言基础学习: 使用ref关键字在模式匹配中通过引用进行绑定

今天来学习rust中的ref关键字。 由一个例子引出ref关键字的使用 先看下面的例子。 例1: 1 2#[derive(Debug)] 3enum HttpMethod { 4 Get(Get), 5 Post(Post), 6} 7 8#[derive(Debug)] 9struct Get { 10 url: String, 11} 12 13#[derive(Debug)] 14struct Post { 15 url: String, 16 body: Vec<u8>, 17} 18 19 fn main() { 20 let method = HttpMethod::Get(Get{ 21 url: String::from("https://google.com"), 22 }); 23 24 match method { 25 HttpMethod::Get(get) => println!("send get reuqest: {:?}", get), 26 HttpMethod::Post(post) => println!("send post reuqest: {:?}", post), 27 } 28 29 println!("{:?}", method); // 编……

阅读全文