`#[lang = "..."]` 属性有什么作用?

Pau*_*ker 5 rust

我正在阅读https://doc.rust-lang.org/1.56.0/src/core/str/mod.rs.html#120-122上的代码:

#[lang = "str"]
#[cfg(not(test))]
impl str {
...
Run Code Online (Sandbox Code Playgroud)

我找不到对此属性的引用lang。它与声明原始类型的结构有关吗str?如果是这样,处理 的内部结构的信息在哪里str

Cam*_*lid 1

#[lang = "..."]定义了一个语言项,它允许 Rust 编译器查找它所附加的项并可能添加特殊行为。

就 而言#[lang = "str"],Rust 编译器当前(截至 2021 年 10 月)使用str语言项来收集在str原语上定义的方法,以便在调用时可以查找它们。编译器还使用str语言项来防止为原语定义多个固有的impls(在本例中impl str { ... }为 )str