我有以下类型:
type RangeFn = fn(&Value, &Value) -> bool;
Run Code Online (Sandbox Code Playgroud)
现在我想用它来说struct:
#[derive(Debug)]
struct Range {
fun: RangeFn,
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我有struct这需要RangeFn作为一个参数,然后我似乎无法把它从派生Debug.如何RangeFn与Debug特质兼容?
但是,这不是你想要做的.你需要的是实现Debug了Range,但你不能做到这一点,因为派生fn■不要执行Debug.实际上,推导Debug需要所有领域Debug.然后你就会被Debug自己坚持执行; 毕竟,这只是一个正常的特征:
type RangeFn = fn(&(), &()) -> bool;
struct Range {
fun: RangeFn,
other_field: u32,
}
impl std::fmt::Debug for Range {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::result::Result<(), std::fmt::Error> {
f.debug_struct("Range")
.field("other_field", &self.other_field)
.finish()
}
}
fn main() {
let r = Range {
fun: |_, _| true,
other_field: 42,
};
println!("{:?}", r);
}
Run Code Online (Sandbox Code Playgroud)
(链接到游乐场)
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |