我有一些代码,但问题归结为:
pub struct Thing<S>
where S: AsRef<str> // im using AsRef here but the point is just that `S` is string-like
{
this: S
}
impl<S> Default for Thing<S>
where S: AsRef<str> {
fn default() -> Self {
Self {
this: "i am a `&'static str`"
}
}
}
Cargo说:
expected type parameter `S`
found reference `&'static str`
我知道这个问题与它是对str
的引用有关,我只是不知道该怎么办。如何限制泛型为“类似字符串”,同时确保该泛型至少可以是&str
或String
?
2条答案
按热度按时间bxjv4tth1#
在这种情况下,您根本不需要仿制药。该函数不会生成通用的
Self
,而是生成一个特定的Self
。don't put trait bounds on struct definitions。
mcvgt66p2#
为了避免将来的生存期问题,您还可以使用
String
而不是&str
来解决该任务: