我的一些较旧的防锈代码中有一行使用了append()
,我检查了最近的文档,并附加了似乎已从std::string::String
删除的内容。我的代码行是:
hex_to_bin(x).to_string().append(hex_to_bin(y))
main.rs:34:29: 34:50 error: type `collections::string::String` does not implement any method in scope named `append`
main.rs:34 hex_to_bin(x).to_string().append(hex_to_bin(y))
所以根据我认为push_str()
的文档是相同的,但是当我切换时我得到了
main.rs:34:3: 34:52 error: mismatched types: expected `collections::string::String`, found `()` (expected struct collections::string::String, found ())
main.rs:34 hex_to_bin(x).to_string().push_str(hex_to_bin(y))
如何正确转换这行代码?
答案 0 :(得分:3)
push_str
声明为:
fn push_str(&mut self, string: &str)
这意味着它在可变字符串上运行,并返回()
。在没有看到其余代码的情况下,我的猜测是你试图将push_str
的结果传递给期望字符串的东西 - 也许你期望将结果分配给字符串?相反,您可能希望维护一个可变字符串并调用push_str
将hex_to_bin(y)
附加到其中。