我正参考 这篇 文章尝试撰写一个接收 String 和 &str 两种类型参数的函数,但是我现在遇到了一个问题。我有以下的函数:
pub fn new<S>(t_num: S) -> BigNum where S: Into<String> {
let t_value = t_num.into();
let t_digits = t_value.len();
BigNum { value: t_value, digits: t_digits }
}
BigNum
是一个简单的结构体,但是当我尝试使用 &collections::string::String
调用它时,会出现错误:
let line = "123456".to_string()
let big = bignum::BigNum::new(&line)
main.rs:23:15: 23:34 error: the trait `core::convert::From<&collections::string::String>` is not implemented for the type `collections::string::String` [E0277]
main.rs:23 let big = bignum::BigNum::new(&line);
我原本以为一个&String
会被隐式地拆分成一个&str
,是这样吗?如果是这种情况,Into
trait 会将&str
转换为我可以使用的字符串。我做错了什么?