我注意到,当给定一个 `P` 时,在指针上直接访问 `SomeStruct` 的字段似乎可以工作,但我不确定为什么会这样。例如,以下代码编译并按预期工作(打印“1234”):
什么语言特性使我能够访问 struct_pointer 绑定上的 id 字段?是解引用(Dereferencing)还是强制类型转换(Coercion)?通过查看 P 的文档,是否有办法知道这种情况是否可行?
#![feature(rustc_private)]
extern crate syntax;
use syntax::ptr::P;
struct Baz {
id: String,
}
fn foo() {
let mut struct_pointer: P<Baz> = P(Baz {
id: "1234".to_string(),
});
println!("{}", struct_pointer.id);
}
什么语言特性使我能够访问 struct_pointer 绑定上的 id 字段?是解引用(Dereferencing)还是强制类型转换(Coercion)?通过查看 P 的文档,是否有办法知道这种情况是否可行?
P
和Baz
的定义。 - E net4P
实际上是 Rust 编译器特有的,我还以为它是 Rust 中指针常用的东西(你可以看出我是个 Rust 新手)。我正在制作一个简单的编译器插件。 - Marcus BuffettBox
和引用计数指针(Rc
和Arc
)。 - E net4syntax
库的特定情况。我想不出在其他情境下使用它的理由。无论如何,@Procrade所说的可以被转化为一个实际的答案。 - E net4