# Enum rustc_trait_selection::infer::region_constraints::VerifyBound

source ·

    pub enum VerifyBound<'tcx> {
        IfEq(Binder<'tcx, VerifyIfEq<'tcx>>),
        OutlivedBy(Region<'tcx>),
        IsEmpty,
        AnyBound(Vec<VerifyBound<'tcx>>),
        AllBounds(Vec<VerifyBound<'tcx>>),
    }

Expand description

Describes the things that some `GenericKind` value `G` is known to outlive. Each variant of `VerifyBound` can be thought of as a function:

ⓘ

    fn(min: Region) -> bool { .. }

where `true` means that the region `min` meets that `G: min`. (False means nothing.)

So, for example, if we have the type `T` and we have in scope that `T: 'a` and `T: 'b`, then the verify bound might be:

ⓘ

    fn(min: Region) -> bool {
       ('a: min) || ('b: min)
    }

This is described with an `AnyRegion('a, 'b)` node.

## Variants§

§

### IfEq(Binder<'tcx, VerifyIfEq<'tcx>>)

See `VerifyIfEq` docs

§

### OutlivedBy(Region<'tcx>)

Given a region `R`, expands to the function:

ⓘ

    fn(min) -> bool {
        R: min
    }

This is used when we can establish that `G: R` – therefore, if `R: min`, then by transitivity `G: min`.

§

### IsEmpty

Given a region `R`, true if it is `'empty`.

§

### AnyBound(Vec<VerifyBound<'tcx>>)

Given a set of bounds `B`, expands to the function:

ⓘ

    fn(min) -> bool {
        exists (b in B) { b(min) }
    }

In other words, if we meet some bound in `B`, that suffices. This is used when all the bounds in `B` are known to apply to `G`.

§

### AllBounds(Vec<VerifyBound<'tcx>>)

Given a set of bounds `B`, expands to the function:

ⓘ

    fn(min) -> bool {
        forall (b in B) { b(min) }
    }

In other words, if we meet all bounds in `B`, that suffices. This is used when some bound in `B` is known to suffice, but we don’t know which.

## Auto Trait Implementations§

§

### impl<'tcx> !RefUnwindSafe for VerifyBound<'tcx>

§

### impl<'tcx> Send for VerifyBound<'tcx>

§

### impl<'tcx> Sync for VerifyBound<'tcx>

§

### impl<'tcx> Unpin for VerifyBound<'tcx>

§

### impl<'tcx> !UnwindSafe for VerifyBound<'tcx>

## Blanket Implementations§

source§

### impl<T> Any for T
where T: 'static + ?Sized,

source§

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
source§

### impl<T> Borrow<T> for T
where T: ?Sized,

source§

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

### impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

### impl<T> From<T> for T

source§

#### fn from(t: T) -> T

Returns the argument unchanged.

source§

### impl<T, U> Into<U> for T
where U: From<T>,

source§

#### fn into(self) -> U

Calls `U::from(self)`.

That is, this conversion is whatever the implementation of `From<T> for U` chooses to do.

source§

### impl<T> ToOwned for T
where T: Clone,

§

#### type Owned = T

The resulting type after obtaining ownership.
source§

#### fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

#### fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

### impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

#### type Error = Infallible

The type returned in the event of a conversion error.
source§

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

### impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

## Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain `repr(...)` attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 32 bytes

Size for each variant:

- `IfEq`: 24 bytes
- `OutlivedBy`: 8 bytes
- `IsEmpty`: 0 bytes
- `AnyBound`: 24 bytes
- `AllBounds`: 24 bytes