`
zcmit
  • 浏览: 17886 次
文章分类
社区版块
存档分类
最新评论
文章列表
5.14 Match 经常,一个简单的if/else还不够,因为你可能会有多于两种情况.而且,条件会变得更加复杂.Rust有一个关键字,match,允许你替代复杂的if/else组合,来实现一些更强大的功能.看一下: let x = 5; match x { 1 => println!("one"), ...
5.13 枚举 Rust中的枚举是一个可以代表一个或多个可能值的类型: enum Message { Quit, ChangeColor(i32, i32, i32), Move { x: i32, y: i32 }, Write(String), } 每一个变量都可以成为这些值的其中一个.定义一个枚举的语法复用了定义一个结构体的语法,你可以顶一个一个没有数据的变量(就像一个单元结构体),有名子的变量,和无名变量(就像一个元组).和结构体中分开的定义不同,一个枚举就是一个类型.一个枚举的值可以是任意一个变量.因此,一个枚举有时被称为"集合类型& ...
最近忙着离职的事情,一个月了都没有更新. 明天继续搞起. 版权声明:本文为博主原创文章,未经博主允许不得转载。
5.12 结构体 结构体是一个表示复杂数据类型的方式.例如,你可以计算二维坐标,我们需要x和y的值: let origin_x = 0; let origin_y = 0; 一个结构体就可以让你将两个值合并成一个独立的值: struct Point { x: i32, y: i32, } fn main() { let origin = Point {x: 0, y: 0}; // origin: Point println!("The origin is at ({}, {})", origin.x, origin.y) ...
5.11 可变性 可变性,就是改变某些值的能力,Rust语言和其他语言有很大的区别.第一点就是Rust默认是不可变的: let x = 5; x = 6; // error! 我们可以引入mut关键字来增加可变性: let mut x = 5; x = 6; // no problem! 这是一个可变绑定. ...
5.10 生命期 本节是Rust三处描述所有权系统的其中之一.所有权是Rust最独特和引人注目的特性,这也是Rust程序员必须熟悉的一个特性.所有权使Rust得以实现它最大的设计目标,内存安全.这里有一些不同的概念,每一个都有自己的章节 ...
5.9 引用和借用 本节是Rust三处描述所有权系统的其中之一.所有权是Rust最独特和引人注目的特性,这也是Rust程序员必须熟悉的一个特性.所有权使Rust得以实现它最大的设计目标,内存安全.这里有一些不同的概念,每一个都有自己的 ...
5.8 所有权 本节是Rust三处描述所有权系统的其中之一.所有权是Rust最独特和引人注目的特性,这也是Rust程序员必须熟悉的一个特性.所有权使Rust得以实现它最大的设计目标,内存安全.这里有一些不同的概念,每一个都有自己的章节: 所有权,你正在读的 借用(borrowing, 5.9), 以及它的关联特性'引用' 生命期(5.10),以及borrowing的高级特性 这三者是相关的,也是循序渐进的.你必须要完全理解这个三个部分. 5.8.1 元 在我们讨论细节之前,有两个关于所有权系统的重要说明. Rust致力于安全和快速.它实现这个目标通过" ...
5.5 if Rust 对if的操作并不复杂,但是你会发现它更像一个动态类型语言,而不是一个传统的系统语言.让我们看看你是否知道这其中的微妙之处. if是一个非常常见的概念的一个特定表述,"分支".这个名字来自于树的分支:一个决策点,多条路径可供选择. 在if的分支,是两条路的一种选择: let x = 5; if x == 5 { println!("x is five!"); } 如果我们改变了x的值,这行字就不会被打印.更特别的,如果if后面的表达式是true,那么代码块就会被执行.如果是false,就不会. ...
5.3 基本类型 Rust有很多基本数据类型.这意味着他们属于语言内建类型.Rust标准库还提供了很多其他基于基本类型的类型,但是本节说的基本类型是最基本的类型. 5.3.1 Booleans Rust有内建布尔类型,名叫bool.它有两种值,true和false. let x = true; let y: bool = false; 布尔类型常用语if条件. 你可以在标准库说明文档中找到更多说明(http://doc.rust-lang.org/std/primitive.bool.html). 5.3.2 char char类型代表了一个Unicode字 ...
本章我们将把Rust代码拆成一个个的片段,逐个概念来分析. 如果你喜欢从底层细节学习Rust语言,那么按顺序学习本章是最好的选择. 本章的小节也会串联引用每一个概念,如果你读到了其他的概念你不清楚的,那么你可以在对应章节找到说明. 5.1 变量绑定 基本上每一个非"Hello World"Rust程序都会用到变量绑定.他们看起来像这样: fn main() { let x = 5; } 在每一个例子中都写一遍fn main() {有点累赘,所以我们以后就不写他了.如果你依照着写代码的话,记得自己加上你的main()函数.否则你会得到一个错误. ...
4.9 Borrow 和 AsRef Borrow和AsRef特性特性很相似,但是不一样.这里有一个快速的关于两者的回顾. 4.9.1 Borrow Borrow特性是当你写了一个数据结构,然后你想让一个它的所有者或者借用者类型作为同义词对象来使用. 例如,HashMap就有一个get方法使用了Borrow: fn get<Q: ?Sized>(&self, k: &Q) -> Option<&V> where K: Borrow<Q>, Q: Hash + Eq 这个签名非常复杂 ...
4.8 FFI 4.8.1 导论 本章将会介绍一种高速的压缩/解压缩库,以供其他语言使用的方法.Rust目前还不能直接调用C++库,但是可以包含C接口. 下面这个例子就是调用外部函数,如果安装了snappy的话: # #![feature(libc)] extern crate libc; use lib ...
4.7 错误处理 有时候程序会发生错误.对于不可避免的事情发生时最好有一个计划来处理.Rust有丰富的处理错误的方法. 你的程序会出现两种类型的错误:失败和崩溃.我们先讨论两者的区别,然后讨论如何处理他们.然后,我们讨论把错误升级为崩溃. Page 107 4.7.1 失败和崩溃 Rust使用两种错误的类型:失败和崩溃.失败是一种可以被挽回的错误.崩溃却不行. "挽回"是什么意思呢?在多数情况下,很有可能会发生错误.例如,一个parse函数: "5".parse(); 这个方法将一个字符转换为另一个类型.但是因为他是 ...
4.6 并发 Page 100 并发和并行在计算机科学中是非常重要的主题.在工业领域也很火.计算机如今有越来越多的核心,然而很多程序员还没有准备好使用它们. Rust安全的内存特性同样适用于并发存储.并发的Rust代码也是内存安全的,没有数据竞争.Rust的类型系统会保证这一点,给你提供了有利的帮助在编译时实现并发代码. 在我们开始讨论Rust的并发之前,我们需要理解一个很重要的事情:Rust是一个低级别语言,它的所有功能都是通过库来提供的,而不是语言自身.也就是说你不喜欢Rust处理并发的方式,你完全可以实现一个你自己的版本.mio(https://github.com/c ...
Global site tag (gtag.js) - Google Analytics