我目前正在学习Rust。我主要使用The Rust Programming Language书和and this nice reference,它们将Rust功能/语法与C ++等效项相关联。
我很难理解核心语言在哪里停止,标准库在哪里开始。我遇到了很多运算符和/或特征,它们似乎与编译器有特殊关系。例如,Rust有一个名为trait
的Deref
(据我所知像是一个接口),让我们使用*
运算符取消实现它的类型:
fn main() {
let x = 5;
let y = Box::new(x);
assert_eq!(5, x);
assert_eq!(5, *y);
}
另一个示例是?
运算符,它似乎取决于Result
和Option
类型。
使用这些运算符的代码可以在没有标准库的情况下进行编译吗?如果不是,那么Rust语言的哪些部分取决于标准库?没有它甚至可以编译any Rust代码吗?