# Trait std::marker::Sized 1.0.0 [−] [src]

    #[lang = "sized"]
    pub trait Sized { }

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 FooUse(Foo<[i32]>); // error: Sized is not implemented for [i32]
    struct BarUse(Bar<[i32]>); // OKRun

The one exception is the implicit `Self` type of a trait, which does not get an implicit `Sized` bound. This is because a `Sized` bound prevents the trait from being used to form a trait object:

    trait Foo { }
    trait Bar: Sized { }

    struct Impl;
    impl Foo for Impl { }
    impl Bar for Impl { }

    let x: &Foo = &Impl;    // OK
    // let y: &Bar = &Impl; // error: the trait `Bar` cannot
                            // be made into an objectRun

## Implementors

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)