Rust 引用

有两种引用的类型:

  • 共享指针:&
  • 可变指针:&mut

它们遵守以下的规则:

  • 引用的生命周期不能超过被引用内容
  • 可变引用不能存在别名(alias)

就这些。这就是全部的引用模型。

当然,我们可能需要定义一下别名(alias)是什么意思。

error[E0425]: cannot find value `aliased` in this scope
 --> <rust.rs>:2:20
  |
2 |     println!("{}", aliased);
  |                    ^^^^^^^ not found in this scope

error: aborting due to previous error

很不幸,Rust实际上没有定义别名模型。:scream_cat:

在Rust的开发者从语义层面确定别名的意义之前,我们先在下一章讨论一般意义上的别名指什么,还有它为什么很重要。

首先,有几点重要声明:以下的讨论将采用最广泛意义上的别名的定义。而Rust的定义可能会更加严格,需要考虑到可变性和生命周期。我们假设程序都是单线程且不会中断的,同时也不会去考虑存储器映射之类的问题。除非特别指定,否则Rust ...