pub(crate) enum Type {
Show 13 variants
Path {
path: Path,
},
DynTrait(Vec<PolyTrait>, Option<Lifetime>),
Generic(Symbol),
Primitive(PrimitiveType),
BareFunction(Box<BareFunctionDecl>),
Tuple(Vec<Type>),
Slice(Box<Type>),
Array(Box<Type>, String),
RawPointer(Mutability, Box<Type>),
BorrowedRef {
lifetime: Option<Lifetime>,
mutability: Mutability,
type_: Box<Type>,
},
QPath {
name: Symbol,
self_type: Box<Type>,
self_def_id: Option<DefId>,
trait_: Path,
},
Infer,
ImplTrait(Vec<GenericBound>),
}Expand description
Rustdoc’s representation of types, mostly based on the hir::Ty.
Variants
Path
Fields
path: PathA named type, which could be a trait.
This is mostly Rustdoc’s version of hir::Path.
It has to be different because Rustdoc’s PathSegment can contain cleaned generics.
DynTrait(Vec<PolyTrait>, Option<Lifetime>)
A dyn Trait object: dyn for<'a> Trait<'a> + Send + 'static
Generic(Symbol)
A type parameter.
Primitive(PrimitiveType)
A primitive (aka, builtin) type.
BareFunction(Box<BareFunctionDecl>)
A function pointer: extern "ABI" fn(...) -> ...
Tuple(Vec<Type>)
A tuple type: (i32, &str).
Slice(Box<Type>)
A slice type (does not include the &): [i32]
Array(Box<Type>, String)
An array type.
The String field is a stringified version of the array’s length parameter.
RawPointer(Mutability, Box<Type>)
A raw pointer type: *const i32, *mut i32
BorrowedRef
A reference type: &i32, &'a mut Foo
QPath
Fields
name: Symbolself_def_id: Option<DefId>FIXME: This is a hack that should be removed; see this discussion.
trait_: PathA qualified path to an associated item: <Type as Trait>::Name
Infer
A type that is inferred: _
ImplTrait(Vec<GenericBound>)
An impl Trait: impl TraitA + TraitB + ...
Implementations
When comparing types for equality, it can help to ignore & wrapping.
Check if two types are “potentially the same”.
This is different from Eq, because it knows that things like
Placeholder are possible matches for everything.
Checks if this is a T::Name path for an associated type.
Use this method to get the DefId of a clean AST node, including PrimitiveTypes.
See Self::def_id_no_primitives for more.
Use this method to get the DefId of a clean AST node.
This will return None when called on a primitive clean::Type.
Use Self::def_id if you want to include primitives.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Type
impl UnwindSafe for Type
Blanket Implementations
Mutably borrows from an owned value. Read more
pub fn vzip(self) -> V
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more
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: 72 bytes
Size for each variant:
Path: 55 bytesDynTrait: 31 bytesGeneric: 7 bytesPrimitive: 1 byteBareFunction: 15 bytesTuple: 31 bytesSlice: 15 bytesArray: 39 bytesRawPointer: 15 bytesBorrowedRef: 15 bytesQPath: 71 bytesInfer: 0 bytesImplTrait: 31 bytes