这可能是我还不知道的功能。我有这样的编译器消息:
$ 货物构建--lib 编译 secondaryimpl v0.1.0 (/home/nsdd/garage/sames/rustex/secondimpl) 警告:字段
永远不会被读取 --> src/lib.rs:6:5 | 5 | pub 结构示例结构 { | ------------- 该结构中的字段 6 |一些布尔:布尔, | ^^^^^^^^ | = 注意:somebool
默认开启#[warn(dead_code)]
警告:关联函数
从未使用过 --> src/lib.rs:31:8 | 31 | fn playhere(&self) -> usize { | ^^^^^^^^playhere
警告:
(lib)生成了 2 个警告 在 0.16 秒内完成了开发 [未优化 + 调试信息] 目标secondimpl
这是我的示例代码:
pub trait ExampleTrait {
fn new(mynum: usize) -> Self;
}
pub struct ExampleStruct {
somebool: bool,
somenum: usize,
}
impl Default for ExampleStruct {
fn default() -> Self {
ExampleStruct {
somebool: true,
somenum: 999,
}
}
}
impl ExampleTrait for ExampleStruct {
fn new(mynum: usize) -> Self {
let mut buffer: ExampleStruct = Default::default();
buffer.somenum = mynum;
return buffer;
}
}
impl ExampleStruct {
fn playhere(&self) -> usize {
if self.somebool {
return self.somenum;
}
return 0;
}
}
所以因为我只在第二个实现中使用 self.somenum ,所以编译器似乎不喜欢它。据推测,我可以进行一些声明或语法更改来阻止此警告,因为这显然是一个没有考虑第二个实现的问题。该字段是其他 Trait 中不会出现的东西,所以我不能将其放在 Traits 中。
Rust 考虑传递性地使用什么。是的,该字段是从
ExampleStruct::play_here()
读取的,但是 这个函数永远不会被调用。 因为该函数没有被调用,所以在决定是否使用程序中的其他内容时它是无关紧要的。