pub trait Sized: MetaSized { }
Expand description
Types with a constant size known at compile time.
All type parameters have an implicit bound of Sized
. The special syntax ?Sized
can be used to remove this bound if itâs not appropriate.
struct Foo<T>(T);
struct Bar<T: ?Sized>(T);
struct BarUse(Bar<[i32]>);
The one exception is the implicit Self
type of a trait. A trait does not have an implicit Sized
bound as this is incompatible with trait objects where, by definition, the trait needs to work with all possible implementors, and thus could be any size.
Although Rust will let you bind Sized
to a trait, you wonât be able to use it to form a trait object later:
trait Foo { }
trait Bar: Sized { }
struct Impl;
impl Foo for Impl { }
impl Bar for Impl { }
let x: &dyn Foo = &Impl;
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4