pub struct Ty(HashConsed<TyKind>);
Expand description
A type.
Warning: for performance reasons, the Drive
and DriveMut
impls of Ty
don’t explore the
contents of the type, they only yield a pointer to the type itself. To recurse into the type,
use drive_inner{_mut}
or visit_inside
.
Tuple Fields§
§0: HashConsed<TyKind>
Implementations§
source§impl Ty
impl Ty
pub fn is_unsigned_scalar(&self) -> bool
pub fn is_signed_scalar(&self) -> bool
pub fn as_box(&self) -> Option<&Ty>
sourcepub fn visit_inside<V>(visitor: V) -> VisitInsideTy<V>
pub fn visit_inside<V>(visitor: V) -> VisitInsideTy<V>
Wrap a visitor to make it visit the contents of types it encounters.
sourcepub fn visit_inside_stateless<V>(visitor: V) -> VisitInsideTy<V>
pub fn visit_inside_stateless<V>(visitor: V) -> VisitInsideTy<V>
Wrap a stateless visitor to make it visit the contents of types it encounters. This will only visit each type once and cache the results. For this to behave as expecte, the visitor must be stateless. The performance impact does not appear to be significant.
Methods from Deref<Target = TyKind>§
pub fn variant_name(&self) -> &'static str
pub fn is_adt(&self) -> bool
pub fn is_type_var(&self) -> bool
pub fn is_literal(&self) -> bool
pub fn is_never(&self) -> bool
pub fn is_ref(&self) -> bool
pub fn is_raw_ptr(&self) -> bool
pub fn is_trait_type(&self) -> bool
pub fn is_dyn_trait(&self) -> bool
pub fn is_arrow(&self) -> bool
pub fn as_adt(&self) -> Option<(&TypeId, &GenericArgs)>
pub fn as_type_var(&self) -> Option<&TypeVarId>
pub fn as_literal(&self) -> Option<&LiteralTy>
pub fn as_never(&self) -> Option<()>
pub fn as_ref(&self) -> Option<(&Region, &Ty, &RefKind)>
pub fn as_raw_ptr(&self) -> Option<(&Ty, &RefKind)>
pub fn as_trait_type(&self) -> Option<(&TraitRef, &TraitItemName)>
pub fn as_dyn_trait(&self) -> Option<&ExistentialPredicate>
pub fn as_arrow(&self) -> Option<(&Vector<RegionId, RegionVar>, &Vec<Ty>, &Ty)>
pub fn variant_index_arity(&self) -> (u32, usize)
Trait Implementations§
source§impl<'de> Deserialize<'de> for Ty
impl<'de> Deserialize<'de> for Ty
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl DriveMut for Ty
impl DriveMut for Ty
See comment on Ty
: this impl doesn’t recurse into the contents of the type.
source§impl<C: AstFormatter> FmtWithCtx<C> for Ty
impl<C: AstFormatter> FmtWithCtx<C> for Ty
impl DerefPure for Ty
For deref patterns.
impl Eq for Ty
impl StructuralPartialEq for Ty
Auto Trait Implementations§
impl Freeze for Ty
impl RefUnwindSafe for Ty
impl Send for Ty
impl Sync for Ty
impl Unpin for Ty
impl UnwindSafe for Ty
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.§impl<I, T> ExtractContext<I, ()> for T
impl<I, T> ExtractContext<I, ()> for T
§fn extract_context(self, _original_input: I)
fn extract_context(self, _original_input: I)
Given the context attached to a nom error, and given the original
input to the nom parser, extract more the useful context information. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
Converts
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>
Converts
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 more§impl<I> RecreateContext<I> for I
impl<I> RecreateContext<I> for I
§fn recreate_context(_original_input: I, tail: I) -> I
fn recreate_context(_original_input: I, tail: I) -> I
Given the original input, as well as the context reported by nom,
recreate a context in the original string where the error occurred. Read more