pub enum ExprFnSig<'tcx> {
Sig(Binder<'tcx, FnSig<'tcx>>, Option<DefId>),
Closure(Option<&'tcx FnDecl<'tcx>>, Binder<'tcx, FnSig<'tcx>>),
Trait(Binder<'tcx, Ty<'tcx>>, Option<Binder<'tcx, Ty<'tcx>>>, Option<DefId>),
}
Expand description
A signature for a function like type.
Variants§
Sig(Binder<'tcx, FnSig<'tcx>>, Option<DefId>)
Closure(Option<&'tcx FnDecl<'tcx>>, Binder<'tcx, FnSig<'tcx>>)
Trait(Binder<'tcx, Ty<'tcx>>, Option<Binder<'tcx, Ty<'tcx>>>, Option<DefId>)
Implementations§
Source§impl<'tcx> ExprFnSig<'tcx>
impl<'tcx> ExprFnSig<'tcx>
Sourcepub fn input(self, i: usize) -> Option<Binder<'tcx, Ty<'tcx>>>
pub fn input(self, i: usize) -> Option<Binder<'tcx, Ty<'tcx>>>
Gets the argument type at the given offset. This will return None
when the index is out of
bounds only for variadic functions, otherwise this will panic.
Sourcepub fn input_with_hir(
self,
i: usize,
) -> Option<(Option<&'tcx Ty<'tcx>>, Binder<'tcx, Ty<'tcx>>)>
pub fn input_with_hir( self, i: usize, ) -> Option<(Option<&'tcx Ty<'tcx>>, Binder<'tcx, Ty<'tcx>>)>
Gets the argument type at the given offset. For closures this will also get the type as
written. This will return None
when the index is out of bounds only for variadic
functions, otherwise this will panic.
Sourcepub fn output(self) -> Option<Binder<'tcx, Ty<'tcx>>>
pub fn output(self) -> Option<Binder<'tcx, Ty<'tcx>>>
Gets the result type, if one could be found. Note that the result type of a trait may not be specified.
pub fn predicates_id(&self) -> Option<DefId>
Trait Implementations§
Auto Trait Implementations§
impl<'tcx> Freeze for ExprFnSig<'tcx>
impl<'tcx> !RefUnwindSafe for ExprFnSig<'tcx>
impl<'tcx> Send for ExprFnSig<'tcx>
impl<'tcx> Sync for ExprFnSig<'tcx>
impl<'tcx> Unpin for ExprFnSig<'tcx>
impl<'tcx> !UnwindSafe for ExprFnSig<'tcx>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreLayout§
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: 40 bytes
Size for each variant:
Sig
: 40 bytesClosure
: 40 bytesTrait
: 40 bytes