Skip to main content

Annotation

Struct Annotation 

Source
pub struct Annotation<'ast> {
    pub typ: Option<Type<'ast>>,
    pub contracts: &'ast [Type<'ast>],
}
Expand description

A type and/or contract annotation.

Fields§

§typ: Option<Type<'ast>>

The type annotation (using :).

§contracts: &'ast [Type<'ast>]

The contract annotations (using |).

Implementations§

Source§

impl Annotation<'_>

Source

pub fn contracts_to_string(&self) -> Option<String>

Returns a string representation of the contracts (without the static type annotation) as a comma-separated list.

Source

pub fn is_empty(&self) -> bool

Returns true if this annotation is empty, i.e. hold neither a type annotation nor contracts annotations.

Trait Implementations§

Source§

impl<'ast> AttachToAst<'ast, Ast<'ast>> for Annotation<'ast>

Source§

fn attach_to_ast(self, alloc: &'ast AstAlloc, ast: Ast<'ast>) -> Ast<'ast>

Source§

impl<'ast> Clone for Annotation<'ast>

Source§

fn clone(&self) -> Annotation<'ast>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl CloneTo for Annotation<'_>

Source§

type Data<'ast> = Annotation<'ast>

This is always Self, be we need associated types to make Rust understand that Self is always parametric over the 'ast lifetime. We’re using GATs to emulate higher-kinded types.
Source§

fn clone_to<'to>(data: Self::Data<'_>, dest: &'to AstAlloc) -> Self::Data<'to>

Clones owned data from the current allocator to dest.
Source§

impl<'ast> Combine<'ast> for Annotation<'ast>

Source§

fn combine(alloc: &'ast AstAlloc, left: Self, right: Self) -> Self

Combine two annotations. If both have types set, the final type is the one of the left annotation, while the right one’s type is put inside the final contracts.

Contracts are combined from left to right; the left one’s are put first, then maybe the right one’s type annotation and then the right one’s contracts.

Source§

impl<'ast> CombineAlloc<'ast> for Annotation<'ast>

Source§

fn combine(alloc: &'ast AstAlloc, left: Self, right: Self) -> Self

Combine two annotations. If both have types set, the final type is the one of the left annotation, while the right one’s type is put inside the final contracts.

Contracts are combined from left to right; the left one’s are put first, then maybe the right one’s type annotation and then the right one’s contracts.

Source§

impl<'ast> Debug for Annotation<'ast>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'ast> Default for Annotation<'ast>

Source§

fn default() -> Annotation<'ast>

Returns the “default value” for a type. Read more
Source§

impl<'ast> From<Annotation<'ast>> for FieldMetadata<'ast>

Source§

fn from(annotation: Annotation<'ast>) -> Self

Converts to this type from the input type.
Source§

impl<'ast> PartialEq for Annotation<'ast>

Source§

fn eq(&self, other: &Annotation<'ast>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> Pretty<'a, Allocator> for &Annotation<'_>

Source§

fn pretty(self, allocator: &'a Allocator) -> DocBuilder<'a, Allocator>

Converts self into a document
Source§

impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for Annotation<'ast>

Source§

fn traverse<F, E>( self, alloc: &'ast AstAlloc, f: &mut F, order: TraverseOrder, ) -> Result<Self, E>
where F: FnMut(Ast<'ast>) -> Result<Ast<'ast>, E>,

Same as Traverse::traverse, but takes an additional AST allocator.
Source§

fn traverse_ref<S, U>( &'ast self, f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>, scope: &S, ) -> Option<U>

Same as Traverse::traverse_ref, but takes an additional AST allocator. Read more
Source§

fn find_map<S>(&'ast self, pred: impl FnMut(&'ast T) -> Option<S>) -> Option<S>
where T: Clone + 'ast,

Source§

impl Allocable for Annotation<'_>

Source§

impl<'ast> Eq for Annotation<'ast>

Source§

impl<'ast> StructuralPartialEq for Annotation<'ast>

Auto Trait Implementations§

§

impl<'ast> Freeze for Annotation<'ast>

§

impl<'ast> RefUnwindSafe for Annotation<'ast>

§

impl<'ast> Send for Annotation<'ast>

§

impl<'ast> Sync for Annotation<'ast>

§

impl<'ast> Unpin for Annotation<'ast>

§

impl<'ast> UnsafeUnpin for Annotation<'ast>

§

impl<'ast> UnwindSafe for Annotation<'ast>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T, U> ExactFrom<T> for U
where U: TryFrom<T>,

Source§

fn exact_from(value: T) -> U

Source§

impl<T, U> ExactInto<U> for T
where U: ExactFrom<T>,

Source§

fn exact_into(self) -> U

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T, U> OverflowingInto<U> for T
where U: OverflowingFrom<T>,

Source§

impl<T, U> RoundingInto<U> for T
where U: RoundingFrom<T>,

Source§

impl<T, U> SaturatingInto<U> for T
where U: SaturatingFrom<T>,

Source§

impl<T> ToDebugString for T
where T: Debug,

Source§

fn to_debug_string(&self) -> String

Returns the String produced by Ts Debug implementation.

§Examples
use malachite_base::strings::ToDebugString;

assert_eq!([1, 2, 3].to_debug_string(), "[1, 2, 3]");
assert_eq!(
    [vec![2, 3], vec![], vec![4]].to_debug_string(),
    "[[2, 3], [], [4]]"
);
assert_eq!(Some(5).to_debug_string(), "Some(5)");
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryConvert<'_, T> for U
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

Source§

fn try_convert( _: &AstAlloc, from: T, ) -> Result<U, <U as TryConvert<'_, T>>::Error>

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> WrappingInto<U> for T
where U: WrappingFrom<T>,

Source§

fn wrapping_into(self) -> U