gpt4 book ai didi

rust - 尝试实现 core::fmt::Show

转载 作者:行者123 更新时间:2023-11-29 08:05:39 24 4
gpt4 key购买 nike

我正在尝试为我的二叉树实现 core::fmt::Show。这是我的实现代码:

impl<T: PartialEq + PartialOrd + Show> Show for Node<T>
{
fn fmt(&self, f: &mut Formatter) -> Result<(), &str>
{
match self.left {
Some(ref x) => {x.fmt(f);},
None => {}
};
match self.value {
Some(ref x) => {
write!(f, "{}", x.to_string().as_slice());
},
None => {}
};
match self.right {
Some(ref x) => {x.fmt(f);},
None => {}
};
Ok(())
}
}

但是编译器抛出以下错误:

Compiling binary_tree v0.0.1 (file:///home/guillaume/projects/binary_tree) src/binary_tree.rs:60:2: 77:3 error: method fmt has an incompatible type for trait: expected enum core::fmt::FormatError, found &-ptr [E0053] src/binary_tree.rs:60 fn fmt(&self, f: &mut Formatter) -> Result<(), &str> src/binary_tree.rs:61 { src/binary_tree.rs:62 match self.left { src/binary_tree.rs:63 Some(ref x) => {x.fmt(f);}, src/binary_tree.rs:64 None => {} src/binary_tree.rs:65 };

我不明白为什么。完整代码可见here .欢迎对我的代码提出任何意见。

最佳答案

错误告诉您方法 fmt 没有它期望的类型,特别是它在应该有 FormatError 的地方找到了 &-ptr(即 &str)。

将方法签名更改为此将修复您的编译错误:

  fn fmt(&self, f: &mut Formatter) -> Result<(), fmt::FormatError>

我已经在 github 上发送了一个 pull request 来进行这个更改(并且还修复了你的测试,所以我可以验证它是否有效)

关于rust - 尝试实现 core::fmt::Show,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26917549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com