带有字符串的旧锈代码会每晚打破

时间:2014-12-08 23:04:37

标签: string rust

我的一些较旧的防锈代码中有一行使用了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))

如何正确转换这行代码?

1 个答案:

答案 0 :(得分:3)

push_str声明为:

fn push_str(&mut self, string: &str)

这意味着它在可变字符串上运行,并返回()。在没有看到其余代码的情况下,我的猜测是你试图将push_str的结果传递给期望字符串的东西 - 也许你期望将结果分配给字符串?相反,您可能希望维护一个可变字符串并调用push_strhex_to_bin(y)附加到其中。