[][src]Struct chalk_solve::rust_ir::FnDefDatumBound

pub struct FnDefDatumBound<I: Interner> {
    pub argument_types: Vec<Ty<I>>,
    pub return_type: Ty<I>,
    pub where_clauses: Vec<QuantifiedWhereClause<I>>,
}

Represents the bounds on a FnDefDatum, including the function definition's type signature and where clauses.

Fields

argument_types: Vec<Ty<I>>

Types of the function's arguments

This example is not tested
fn foo<T>(bar: i32, baz: T);
               ^^^       ^
return_type: Ty<I>

Return type of the function

This example is not tested
fn foo<T>() -> i32;
               ^^^
where_clauses: Vec<QuantifiedWhereClause<I>>

Where clauses defined on the function

This example is not tested
fn foo<T>() where T: Eq;
            ^^^^^^^^^^^

Trait Implementations

impl<I: Clone + Interner> Clone for FnDefDatumBound<I>[src]

impl<I: Debug + Interner> Debug for FnDefDatumBound<I>[src]

impl<I: Eq + Interner> Eq for FnDefDatumBound<I>[src]

impl<I: Interner, _TI> Fold<I, _TI> for FnDefDatumBound<I> where
    _TI: TargetInterner<I>, 
[src]

type Result = FnDefDatumBound<_TI>

The type of value that will be produced once folding is done. Typically this is Self, unless Self contains borrowed values, in which case owned values are produced (for example, one can fold over a &T value where T: Fold, in which case you get back a T, not a &T). Read more

impl<I: Interner> HasInterner for FnDefDatumBound<I>[src]

type Interner = I

impl<I: Hash + Interner> Hash for FnDefDatumBound<I>[src]

impl<I: PartialEq + Interner> PartialEq<FnDefDatumBound<I>> for FnDefDatumBound<I>[src]

impl<I: Interner> StructuralEq for FnDefDatumBound<I>[src]

impl<I: Interner> StructuralPartialEq for FnDefDatumBound<I>[src]

Auto Trait Implementations

impl<I> RefUnwindSafe for FnDefDatumBound<I> where
    <I as Interner>::DefId: RefUnwindSafe,
    <I as Interner>::InternedLifetime: RefUnwindSafe,
    <I as Interner>::InternedSubstitution: RefUnwindSafe,
    <I as Interner>::InternedType: RefUnwindSafe,
    <I as Interner>::InternedVariableKinds: RefUnwindSafe

impl<I> Send for FnDefDatumBound<I> where
    <I as Interner>::DefId: Send,
    <I as Interner>::InternedLifetime: Send,
    <I as Interner>::InternedSubstitution: Send,
    <I as Interner>::InternedType: Send,
    <I as Interner>::InternedVariableKinds: Send

impl<I> Sync for FnDefDatumBound<I> where
    <I as Interner>::DefId: Sync,
    <I as Interner>::InternedLifetime: Sync,
    <I as Interner>::InternedSubstitution: Sync,
    <I as Interner>::InternedType: Sync,
    <I as Interner>::InternedVariableKinds: Sync

impl<I> Unpin for FnDefDatumBound<I> where
    <I as Interner>::DefId: Unpin,
    <I as Interner>::InternedLifetime: Unpin,
    <I as Interner>::InternedSubstitution: Unpin,
    <I as Interner>::InternedType: Unpin,
    <I as Interner>::InternedVariableKinds: Unpin

impl<I> UnwindSafe for FnDefDatumBound<I> where
    <I as Interner>::DefId: UnwindSafe,
    <I as Interner>::InternedLifetime: UnwindSafe,
    <I as Interner>::InternedSubstitution: UnwindSafe,
    <I as Interner>::InternedType: UnwindSafe,
    <I as Interner>::InternedVariableKinds: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Cast for T[src]

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, I> Shift<I> for T where
    I: Interner,
    T: Fold<I, I>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.