Skip to main content

AtomicClass

Enum AtomicClass 

Source
pub enum AtomicClass {
    Int,
    Float,
    Byte,
    Char,
    Text,
}
Expand description

The class of result §7.4’s ten atomics produce — five for ten kinds.

Stated here because it is answered twice, on either side of the parser-planner/parser-executor boundary. atomic_type turns a class into the static Type; praxis-runtime’s atomic_descriptor turns the same class into the runtime TypeDescriptor a collection carries for its elements. A descriptor that disagrees with the static type behind it is a defect, and exhaustiveness cannot prevent it: an eleventh atomic forces both sites to be touched but not to make the same grouping decision. There is one decision, and the two sides only choose how to spell its answer.

Deliberately its own enum rather than a praxis_typeck::ScalarType: praxis-runtime does not depend on praxis-typeck (it already depends on this crate, so there is no cycle), and UInt — the one scalar neither side may answer — is not nameable here at all. See AtomicClass::of.

Variants§

§

Int

int, uint, digit.

§

Float

float.

§

Byte

byte.

§

Char

char.

§

Text

word, identifier, text, rest.

Implementations§

Source§

impl AtomicClass

Source

pub fn of(kind: AtomicKind) -> AtomicClass

Classify an atomic by the result it produces (§7.4).

uint is Int, deliberately, in the static type and at runtime alike (§7.4): ScalarType::UInt is reserved and has no runtime object (praxis_repr::builtin_for_type answers NoRuntimeRepr), so there is no descriptor for the runtime side to answer, and typing a uint capture as UInt would make every program containing one fail to compile under D9. The non-negativity is the parse rule, in walk_atomic.

Trait Implementations§

Source§

impl Clone for AtomicClass

Source§

fn clone(&self) -> AtomicClass

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for AtomicClass

Source§

impl Debug for AtomicClass

Source§

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

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

impl Eq for AtomicClass

Source§

impl PartialEq for AtomicClass

Source§

fn eq(&self, other: &AtomicClass) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for AtomicClass

Auto Trait Implementations§

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<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> 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> 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.