Struct rustc::middle::ty::TypeContentsUnstable [-] [+] [src]

pub struct TypeContents {
    pub bits: u64,
}

Type contents is how the type checker reasons about kinds. They track what kinds of things are found within a type. You can think of them as kind of an "anti-kind". They track the kinds of values and thinks that are contained in types. Having a larger contents for a type tends to rule that type out from various kinds. For example, a type that contains a reference is not sendable.

The reason we compute type contents and not kinds is that it is easier for me (nmatsakis) to think about what is contained within a type than to think about what is not contained within a type.

Fields

bits

Methods

impl TypeContents

fn when(&self, cond: bool) -> TypeContents

fn intersects(&self, tc: TypeContents) -> bool

fn owns_managed(&self) -> bool

fn owns_owned(&self) -> bool

fn is_sized(&self, _: &ctxt) -> bool

fn interior_param(&self) -> bool

fn interior_unsafe(&self) -> bool

fn interior_unsized(&self) -> bool

fn needs_drop(&self, _: &ctxt) -> bool

fn owned_pointer(&self) -> TypeContents

Includes only those bits that still apply when indirected through a Box pointer

fn reference(&self, bits: TypeContents) -> TypeContents

Includes only those bits that still apply when indirected through a reference (&)

fn managed_pointer(&self) -> TypeContents

Includes only those bits that still apply when indirected through a managed pointer (@)

fn unsafe_pointer(&self) -> TypeContents

Includes only those bits that still apply when indirected through an unsafe pointer (*)

fn union<T, F>(v: &[T], f: F) -> TypeContents where F: FnMut(&T) -> TypeContents

fn has_dtor(&self) -> bool

Trait Implementations

impl BitOr for TypeContents

type Output = TypeContents

fn bitor(self, other: TypeContents) -> TypeContents

impl BitAnd for TypeContents

type Output = TypeContents

fn bitand(self, other: TypeContents) -> TypeContents

impl Sub for TypeContents

type Output = TypeContents

fn sub(self, other: TypeContents) -> TypeContents

impl Debug for TypeContents

fn fmt(&self, f: &mut Formatter) -> Result

Derived Implementations

impl Copy for TypeContents

impl Clone for TypeContents

fn clone(&self) -> TypeContents

fn clone_from(&mut self, source: &Self)