pub struct Param {
pub attrs: AttrVec,
pub ty: Box<Ty>,
pub pat: Box<Pat>,
pub id: NodeId,
pub span: Span,
pub is_placeholder: bool,
pub has_const_keyword: bool,
}Expand description
A parameter in a function header.
E.g., bar: usize as in fn foo(bar: usize).
Fields§
§attrs: AttrVec§ty: Box<Ty>§pat: Box<Pat>§id: NodeId§span: Span§is_placeholder: bool§has_const_keyword: boolRecords whether const was written before the parameter.
This only tracks syntax, not whether it’s a valid const generic param.
Implementations§
Source§impl Param
impl Param
Sourcepub fn to_self(&self) -> Option<ExplicitSelf>
pub fn to_self(&self) -> Option<ExplicitSelf>
Attempts to cast parameter to ExplicitSelf.
Sourcepub fn from_self(
attrs: AttrVec,
eself: ExplicitSelf,
eself_ident: Ident,
) -> Param
pub fn from_self( attrs: AttrVec, eself: ExplicitSelf, eself_ident: Ident, ) -> Param
Builds a Param object from ExplicitSelf.
Sourcepub fn const_param_ident(&self) -> Option<Ident>
pub fn const_param_ident(&self) -> Option<Ident>
Returns the ident if this param is a valid arg position const param. Unlike has_const_keyword, this also checks the pats
Sourcepub fn is_const_param(&self) -> bool
pub fn is_const_param(&self) -> bool
Checks if this is an arg position const param. Use this instead of has_const_keyword, which only checks for the keyword.
Trait Implementations§
Source§impl HasAttrs for Param
impl HasAttrs for Param
Source§const SUPPORTS_CUSTOM_INNER_ATTRS: bool = false
const SUPPORTS_CUSTOM_INNER_ATTRS: bool = false
true if this HasAttrs might support ‘custom’ (proc-macro) inner
attributes. Attributes like #![cfg] and #![cfg_attr] are not
considered ‘custom’ attributes. Read morefn attrs(&self) -> &[Attribute]
fn visit_attrs(&mut self, f: impl FnOnce(&mut AttrVec))
Source§impl HasTokens for Param
impl HasTokens for Param
fn tokens(&self) -> Option<&LazyAttrTokenStream>
fn tokens_mut(&mut self) -> Option<&mut Option<LazyAttrTokenStream>>
Source§impl<V: MutVisitor> MutVisitable<V> for Param
impl<V: MutVisitor> MutVisitable<V> for Param
Source§impl<__V> MutWalkable<__V> for Paramwhere
__V: MutVisitor,
impl<__V> MutWalkable<__V> for Paramwhere
__V: MutVisitor,
Auto Trait Implementations§
impl DynSend for Param
impl DynSync for Param
impl Freeze for Param
impl RefUnwindSafe for Param
impl Send for Param
impl Sync for Param
impl Unpin for Param
impl UnsafeUnpin for Param
impl UnwindSafe for Param
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
Source§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
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: 40 bytes