4.2.4 文档测试
没有什么比带有示例的文档更好的了.也没有什么比不能工作的例子更糟的了,因为有可能文档中的代码已经修改了.为此,Rust支持自动测试我们示例代码.让我们看一个富有血肉的src/lib.rs的例子:
//! The àdder` crate provides functions that add numbers to other numbers.
//!
//...
分类:
其他好文 时间:
2015-07-10 09:31:30
阅读次数:
258
Page 71
我们给j,i,h分配了内存.i在堆上,所以是一个指向堆的指针保存在i里.然后再main()函数的结尾,foo()函数被调用:
地址
名字
值
230
20
...
...
...
5
z
4
4
y
10
3
x
0
2
j
0
1
i
230
...
分类:
其他好文 时间:
2015-07-08 09:35:52
阅读次数:
151
大多数使用垃圾回收的语言都默认在堆上分配内存.这就意味着每个值都要装箱.有很多原因导致他们这样设计,但是这超出了本书的范围.同样,也有很多优化设计导致它并不是100%这样工作的.垃圾回收器宁愿选择在堆上分配内存,也不使用栈和Drop操作来释放内存.
4.1.7 该用哪一种呢?
所以当栈又快又好用的时候,为什么我们还需要使用堆呢?一个重要的原因是,栈只给你提供了LIFO语义来管理...
分类:
其他好文 时间:
2015-07-08 09:34:51
阅读次数:
139
Page 63
我们已经学习了如何写一些Rust代码了.但是能写Rust代码和能写好的Rust代码又很大区别.
这一章讲述一些相对独立的指南,告诉你如何把的Rust代码更进一步.一些常用的模式和标准库会被提到.你可以随意安排阅读本章的顺序.
4.1 栈和堆
作为一个系统级别的语言,Rust可以在底层进行操作.如果你来自于高层语言,有一些系统编程概念你可能不太...
分类:
其他好文 时间:
2015-07-03 19:19:18
阅读次数:
175
我们的第三个工程,会秀一下Rust语言的其中一个最棒的优点:没有实际上的运行时环境.
随着组织的增加,他们依赖于等多的编程语言.不同的编程语言有各自的有点和缺点,一个全语言栈的可以使你使用一种语言的优点的同时,用另一种语言来代替它的缺点.
许多编程语言的一个通病就是运行时环境下的性能很差.通常来说,使用一种慢速的语言,代价换来的是生产力的提高.为了缓和这个问题,有一种方法是使用C语言来...
分类:
其他好文 时间:
2015-07-03 16:02:57
阅读次数:
111
3.3.4 Python
创建一个embed.py文件,然后编辑如下:
from ctypes import cdll
lib = cdll.LoadLibrary("target/release/embed.dll")
lib.process()
print("done!")
更简单了!我们使用ctypes模块中的cdll.调用了LoadLibra...
分类:
其他好文 时间:
2015-07-03 15:57:16
阅读次数:
140
Page 54
另一个奇怪的问题是:我们使用了_left和_right来命名.下划线是怎么回事?我们并没有计划在加锁时使用这两个变量.我们仅仅只想要得到它.因此,Rust会警告我们并没有使用这些值.通过使用下划线,我们告诉Rust这就是我们想要的,它就不会抛出警告了.
如何释放锁呢?_left和_right离开自己的作用域之后就会自动释放.
let table = Arc::...
分类:
其他好文 时间:
2015-07-02 14:10:39
阅读次数:
129
我们的第二个工程,来解决一个经典的并发问题.我们称之为"哲学家吃饭问题".这个问题的最初构想是由Dijkstra于1965年提出的,但是这里我们使用1985年Tony Hoare在这篇论文中的版本.
在古代,一个富有的慈善家给五位杰出的哲学家捐赠了一所学院.每一位哲学家都有一个小房间供他们思考哲学问题;另外有一个公共的房间,放置了一张圆桌,五把椅子,每一把上面写有坐在它上面的哲学家的...
分类:
其他好文 时间:
2015-07-01 14:11:20
阅读次数:
144
去台湾玩儿了一个礼拜,赶紧回来继续翻译吧!
3.1.5 循环
Page 38
loop关键字可以实现一个无限循环.让我们来加入一个循环:
extern crate rand;
use std::io;
use std::cmp::Ordering;
use rand::Rng;
fn main() {
println!("Guess the nu...
分类:
其他好文 时间:
2015-06-30 22:08:42
阅读次数:
229
不知道为什么这个文件就是编译不过[package]name = "hello_world"version = "0.0.1"author = "Noah"后来发现...目录结构应该是这样的,然而书里没写清楚有歧义----Cargo.toml ---src--- |------main.rs配置...
分类:
其他好文 时间:
2015-06-21 19:44:33
阅读次数:
291