上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 79 下一页
摘要: 使用extern函数设用外部代码 有时我们的Rust代码可能需要与其它语言编写的代码交互。为此Rust有一个关键字,extern,有助于创建和使用 外部函数接口(Foreign Function Interface, FFI)。外部函数接口是一个编程语言用以定义函数的方式,其允许不同(外部)编程语言 阅读全文
posted @ 2021-10-09 23:46 johnny_zhao 阅读(1422) 评论(0) 推荐(0) 编辑
摘要: 我们到目前为止讨论过的代码都有Rust在编译时会强制执行的内存安全保证。然而,Rust还隐藏有第二种语言 ,它不会强制执行这类内存安全保证:这被称为 不安全Rust (unsafe Rust)。它与常规Rust代码无异,但是会提供额外的超能力。 尽管代码可能没问题,但如果Rust编译器没有足够的信息 阅读全文
posted @ 2021-10-09 21:00 johnny_zhao 阅读(798) 评论(0) 推荐(0) 编辑
摘要: dyn是trait对象类型的前缀 dyn关键字用于强调相关trait的方法是动态分配的。要以这种方式使用trait,它必须是“对象安全”的。 与泛型参数或植入型特质不同,编译器不知道被传递的具体类型。也就是说,该类型已经被抹去。因此,一个dyn Trait引用包含两个指针。一个指针指向数据(例如,一 阅读全文
posted @ 2021-10-09 12:37 johnny_zhao 阅读(9444) 评论(0) 推荐(0) 编辑
摘要: Rust并没有继承,因为在 Rust 设计目标中,零成本抽象是非常重要的一条,它让 Rust 具备高级语言表达能力的同时,又不会带来性能损耗。因此我们通过其它方法来实现类似继承的功能。为了展示如何实现这一点,这里将创建一个图形用户接口(Graphical User Interface)工具的例子,它 阅读全文
posted @ 2021-10-08 12:30 johnny_zhao 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 对象包含数据和行为 The Gang of Four,它是面向对象编程模式的目录。它这样定义面向对象编程: 面向对象的程序是由对象组成。一个对象包含数据和操作这些数据的过程。这些过程通常被称为方法或操作。 在这个定义下,Rust是面向对象的:结构体和枚举包含数据而impl块提供了在结构本和枚举之上的 阅读全文
posted @ 2021-10-07 23:35 johnny_zhao 阅读(346) 评论(0) 推荐(0) 编辑
摘要: Rust的并发模型中一个有趣的方面是:语言本身对并发知之甚少。我们之前讨论的几乎所有内容,都属于标准库,而不是语言本身的内容。由于不需要语言提供并发相关的基础设施,并发方案不受标准库或语言所限:我们可以编写自已的或使用别人编写的并发功能。 然而有两个并发概念是内嵌于语言中的:std::marker 阅读全文
posted @ 2021-10-07 17:15 johnny_zhao 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 虽然消息传递是一个很好的处理并发的方式,但并不是唯一一个。再一次思考一下Go编程语言文档中口号的这一部分:“不要通过共享内存来通讯” 通过共享内存通讯看起来如何?除此之外,为何消息传递的拥护者并不使用它并反其道而行之呢? 在某种程度上,任何编程语言中的通道都类似于单所有权的,因为一旦将一个值传送到通 阅读全文
posted @ 2021-10-07 01:04 johnny_zhao 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 一个日益流行的确保安全并发的方式是消息传递(message passing),这里线程或actor通过发送包含数据的消息来相互沟通。这个思想来源于Go编程语言文档中的口号:“不要通过共享内存来通讯;而是通过通讯来共享内存。” ("Do not communicate by sharing memor 阅读全文
posted @ 2021-10-04 18:15 johnny_zhao 阅读(817) 评论(0) 推荐(0) 编辑
摘要: 在大部分现代操作系统中,已执行程序的代码在一个进程(process)中运行,操作系统则负责管理多个进程。在程序内部,也可以拥有多个同时运行的独立部分。运行这些独立部分的功能被程序为线程(threads)。 将程序中的计算拆分进多个线程可以改善性能,因为程序可以同时进行多个任务,不过这也会增加复杂性。 阅读全文
posted @ 2021-10-02 11:30 johnny_zhao 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 内部可变性 (Interior mutability) 是Rust中的一个设计模式,它允许你即使在有不可变引用时也可以改变数据,这通常是借用规则不允许的。为了改变数据,该模式在数据结构中使用 unsafe 代码来模糊Rust通常的可变性和借用规则。 通过RefCell<T>在运行时检查借用规则 不同 阅读全文
posted @ 2021-09-30 12:11 johnny_zhao 阅读(316) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 79 下一页