当在Rust中使用仿制药时,“;编译时无法知道'str'类型值的大小";
以下代码将起作用并打印当在Rust中使用仿制药时,“;编译时无法知道'str'类型值的大小";,rust,Rust,以下代码将起作用并打印Foo(“hello”): #[派生(调试)] 结构Foo for Foo Self{ 富(s) } } fn main(){ 让我们:&str=“hello”; 设foo=foo::from(s); println!(“{:?}”,foo); } 但是,如果我使用泛型,并将所有str更改为T,它将不起作用: #[派生(调试)] 结构Foo for Foo Self{ 富(s) } } fn main(){ 让我们:&str=“hello”; 设foo=foo::from
Foo(“hello”)
:
#[派生(调试)]
结构Foo for Foo Self{
富(s)
}
}
fn main(){
让我们:&str=“hello”;
设foo=foo::from(s);
println!(“{:?}”,foo);
}
但是,如果我使用泛型,并将所有str
更改为T
,它将不起作用:
#[派生(调试)]
结构Foo for Foo Self{
富(s)
}
}
fn main(){
让我们:&str=“hello”;
设foo=foo::from(s);
println!(“{:?}”,foo);
}
error[E0277]:编译时无法知道'str'类型的值的大小
-->答:12:25
|
2 | struct Foo类型参数在rust中隐式地大小
。您应该明确地添加?大小约束
#[derive(Debug)]
struct Foo<'a, T: ?Sized>(&'a T);
impl<'a, T: ?Sized> From<&'a T> for Foo<'a, T> {
fn from(s: &'a T) -> Self {
Foo(s)
}
}
#[派生(调试)]
结构Foo for Foo Self{
富(s)
}
}
#[derive(Debug)]
struct Foo<'a, T: ?Sized>(&'a T);
impl<'a, T: ?Sized> From<&'a T> for Foo<'a, T> {
fn from(s: &'a T) -> Self {
Foo(s)
}
}