Rust 程序设计语言 简体中文版 1.85.0个限制的好处是 Rust 可以在编译时就避免数据竞争。数据竞争(data race)类似于竞态条 件,它可由这三个行为造成: • 两个或更多指针同时访问同一数据。 • 至少有一个指针被用来写入数据。 • 没有同步数据访问的机制。 数据竞争会导致未定义行为,难以在运行时追踪,并且难以诊断和修复;Rust 通过拒绝编译 存在数据竞争的代码来避免此问题! 一如既往,可以使用大括号来创建一个新的作用域,以允许拥有多个可变引用,只是不能同时 5。可以尝试用值 5 来提取变量 s 的第一个 单词,不过这是有 bug 的,因为在我们将 5 保存到 word 之后 s 的内容已经改变。 我们不得不时刻担心 word 的索引与 s 中的数据不再同步,这既繁琐又易出错!如果编写这么 一个 second_word 函数的话,管理索引这件事将更加容易出问题。它的签名看起来像这样: fn second_word(s: &String) -> (usize (usize, usize) { 现在我们要跟踪一个开始索引和一个结束索引,同时有了更多从数据的某个特定状态计算而来 的值,但都完全没有与这个状态相关联。现在有三个飘忽不定的不相关变量需要保持同步。 幸运的是,Rust 为这个问题提供了一个解决方法:字符串 slice。 字符串 slice 字符串 slice(string slice)是 String 中一部分值的引用,它看起来像这样: 89/562Rust0 码力 | 562 页 | 3.23 MB | 24 天前3
共 1 条
- 1













