Rust 程序设计语言 简体中文版 1.85.0
总而言之,字符串还是很复杂的。不同的语言选择了不同的向程序员展示其复杂性的方式。 Rust 选择了以准确的方式处理 String 数据作为所有 Rust 程序的默认行为,这意味着程序员 们必须更多的思考如何预先处理 UTF-8 数据。这种权衡相比其他语言更多地暴露出了字符串的 复杂性,不过也使你在开发周期后期免于处理涉及非 ASCII 字符的错误。 好消息是标准库提供了很多围绕 String 和 这个字符串的文本被直接储存在程序的二进制文件中而这个文件总是可用的。因此所有的字符 串字面值都是 'static 的。 你可能在错误信息的帮助文本中见过使用 'static 生命周期的建议,不过将引用指定为 'static 之前,思考一下这个引用是否真的在整个程序的生命周期里都有效,以及你是否希望 它存在得这么久。大部分情况中,推荐 'static 生命周期的错误信息都是尝试创建一个悬垂引 用或者可用的生命周期不匹配的结果。在这 leaf.parent 将会指向 branch 而 branch.children 会包含 leaf 的指针,这会形成引用循环,会造成其 strong_count 永远也不会为 0。 现在换一种方式思考这个关系,父节点应该拥有其子节点:如果父节点被丢弃了,其子节点也 应该被丢弃。然而子节点不应该拥有其父节点:如果丢弃子节点,其父节点应该依然存在。这 正是弱引用的例子! 所以 parent 使用 Weak0 码力 | 562 页 | 3.23 MB | 8 天前3
共 1 条
- 1