Armanriazi•rust•trait•object•safe

Code examples

0
0

armanriazi•rust•trait•object•safe

Object safe traits can be the base trait of a trait object. A trait is object safe if it has the following qualities (defined in RFC 255):

All supertraits must also be object safe.
Sized must not be a supertrait. In other words, it must not require Self: Sized.
It must not have any associated constants.
All associated functions must either be dispatchable from a trait object or be explicitly non-dispatchable:
*Dispatchable functions require:
Not have any type parameters (although lifetime parameters are allowed),
Be a method that does not use Self except in the type of the receiver.
Have a receiver with one of the following types:
  &Self (i.e. &self)
  &mut Self (i.e &mut self)
  Box<Self>
  Rc<Self>
  Arc<Self>
  Pin<P> where P is one of the types above
Does not have a where Self: Sized bound (receiver type of Self (i.e. self) implies this).
*Explicitly non-dispatchable functions require:
Have a where Self: Sized bound (receiver type of Self (i.e. self) implies this).

Similar pages

Similar pages with examples

In other languages

This page is in other languages

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................
Балгарскі
..................................................................................................................
Íslensk
..................................................................................................................