#[non_exhaustive]pub enum Type {
Show 15 variants
Array(TypeArray),
BareFn(TypeBareFn),
Group(TypeGroup),
ImplTrait(TypeImplTrait),
Infer(TypeInfer),
Macro(TypeMacro),
Never(TypeNever),
Paren(TypeParen),
Path(TypePath),
Ptr(TypePtr),
Reference(TypeReference),
Slice(TypeSlice),
TraitObject(TypeTraitObject),
Tuple(TypeTuple),
Verbatim(TokenStream),
}
full
or derive
only.Expand description
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Array(TypeArray)
A fixed size array type: [T; n]
.
BareFn(TypeBareFn)
A bare function type: fn(usize) -> bool
.
Group(TypeGroup)
A type contained within invisible delimiters.
ImplTrait(TypeImplTrait)
An impl Bound1 + Bound2 + Bound3
type where Bound
is a trait or
a lifetime.
Infer(TypeInfer)
Indication that a type should be inferred by the compiler: _
.
Macro(TypeMacro)
A macro in the type position.
Never(TypeNever)
The never type: !
.
Paren(TypeParen)
A parenthesized type equivalent to the inner type.
Path(TypePath)
A path like std::slice::Iter
, optionally qualified with a
self-type as in <Vec<T> as SomeTrait>::Associated
.
Ptr(TypePtr)
A raw pointer type: *const T
or *mut T
.
Reference(TypeReference)
A reference type: &'a T
or &'a mut T
.
Slice(TypeSlice)
A dynamically sized slice type: [T]
.
TraitObject(TypeTraitObject)
A trait object type dyn Bound1 + Bound2 + Bound3
where Bound
is a
trait or a lifetime.
Tuple(TypeTuple)
A tuple type: (A, B, C, String)
.
Verbatim(TokenStream)
Tokens in type position not interpreted by Syn.
Implementations§
Source§impl Type
impl Type
Sourcepub fn without_plus(input: ParseStream<'_>) -> Result<Self>
Available on crate feature parsing
only.
pub fn without_plus(input: ParseStream<'_>) -> Result<Self>
parsing
only.In some positions, types may not contain the +
character, to
disambiguate them. For example in the expression 1 as T
, T may not
contain a +
character.
This parser does not allow a +
, while the default parser does.
Trait Implementations§
Source§impl From<TypeBareFn> for Type
impl From<TypeBareFn> for Type
Source§fn from(e: TypeBareFn) -> Type
fn from(e: TypeBareFn) -> Type
Source§impl From<TypeImplTrait> for Type
impl From<TypeImplTrait> for Type
Source§fn from(e: TypeImplTrait) -> Type
fn from(e: TypeImplTrait) -> Type
Source§impl From<TypeReference> for Type
impl From<TypeReference> for Type
Source§fn from(e: TypeReference) -> Type
fn from(e: TypeReference) -> Type
Source§impl From<TypeTraitObject> for Type
impl From<TypeTraitObject> for Type
Source§fn from(e: TypeTraitObject) -> Type
fn from(e: TypeTraitObject) -> Type
Source§impl Parse for Type
Available on crate feature parsing
only.
impl Parse for Type
parsing
only.fn parse(input: ParseStream<'_>) -> Result<Self>
Source§impl ToTokens for Type
Available on crate feature printing
only.
impl ToTokens for Type
printing
only.Source§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
Source§fn to_token_stream(&self) -> TokenStream
fn to_token_stream(&self) -> TokenStream
Source§fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
impl Eq for Type
extra-traits
only.Auto Trait Implementations§
impl Freeze for Type
impl RefUnwindSafe for Type
impl !Send for Type
impl !Sync for Type
impl Unpin for Type
impl UnwindSafe for Type
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> Spanned for Twhere
T: Spanned + ?Sized,
impl<T> Spanned for Twhere
T: Spanned + ?Sized,
Source§fn span(&self) -> Span
fn span(&self) -> Span
parsing
and printing
only.Span
covering the complete contents of this syntax tree
node, or Span::call_site()
if this node is empty.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: 224 bytes
Size for each variant:
Array
: 208 bytesBareFn
: 224 bytesGroup
: 24 bytesImplTrait
: 48 bytesInfer
: 12 bytesMacro
: 112 bytesNever
: 12 bytesParen
: 32 bytesPath
: 88 bytesPtr
: 40 bytesReference
: 64 bytesSlice
: 32 bytesTraitObject
: 48 bytesTuple
: 56 bytesVerbatim
: 40 bytes