什么时候明确类型注释?

When to be explicit with type annotation?

我一直在通读 The Rust Programming Language,但我一直无法找到关于类型注释的最佳实践的明确答案,特别是原始类型。

比如让编译器判断类型:

let v = true;

或者,使用显式类型注释:

let v: bool = true;

总的来说,我喜欢直截了当,但我不确定这是否违反最佳实践或首选风格。由于编译器不必推断类型,是否会缩短编译时间?

against best practices or the preferred style

是的,我会说流行的风格是让类型推断尽可能多地发生。

Would compile times be improved due to the compiler not having to infer the type?

从技术上讲,是的,应该有一些小的节省,但在绝大多数情况下,它是无法衡量的。编译器必须确定所有内容的类型以确保代码类型检查。

some pathological cases 消耗的时间呈指数级增长,但在需要时通常可以 "fixed" 使用一个适当放置的类型。

In general I like to be explicit

然后你做你需要做的。通常,在学习时,我们比我们需要的更明确。一旦您熟悉了这门语言,您就会放下训练轮。当经验丰富的 Rust 程序员查看您的代码时,请准备好大量旁白 ("you know, you don't have to put this type here...")。

我更喜欢在 types 中不那么明确,因为我觉得程序的其余部分(主要是变量和函数名称)应该代表逻辑。在大多数情况下,如果我有 BTreeMapHashMap 并不重要,但是键值结构的概念是。