Skip to main content

Letter

Struct Letter 

Source
pub struct Letter(/* private fields */);
Expand description

The single-letter abbreviation of a player style.

A Letter is the identity part of a SIN token, independent of side. Per the specification the abbreviation is case-insensitive (C and c denote the same style), so a Letter is always stored uppercase; the case of the original token is carried separately by Side.

§Invariant

The wrapped byte is always an uppercase ASCII letter (b'A'..=b'Z'). Every constructor enforces this, so the invariant cannot be violated from outside the crate.

Ordering is alphabetical (A < B < … < Z).

Implementations§

Source§

impl Letter

Source

pub const ALL: [Self; 26]

Every abbreviation, in alphabetical order (A through Z).

Source

pub const fn from_ascii(byte: u8) -> Option<(Self, Side)>

Decodes a raw ASCII byte into a Letter and the Side its case implies.

Returns None for any byte that is not an ASCII letter. This is the lossless decoder used by the token parser.

§Examples
use sashite_sin::{Letter, Side};

let (letter, side) = Letter::from_ascii(b'c').unwrap();
assert_eq!(letter.as_char(), 'C');
assert_eq!(side, Side::Second);

assert!(Letter::from_ascii(b'1').is_none());
Source

pub const fn try_from_char(c: char) -> Result<Self, ParseError>

Builds a Letter from a char, folding case.

Both 'C' and 'c' yield the same Letter; the case (which encodes side) is not retained.

§Errors

Returns ParseError::InvalidLetter if c is not an ASCII letter.

§Examples
use sashite_sin::Letter;

assert_eq!(Letter::try_from_char('j').unwrap().as_char(), 'J');
assert!(Letter::try_from_char('+').is_err());
Source

pub const fn as_char(self) -> char

Returns the abbreviation as an uppercase char.

Source

pub const fn as_ascii(self) -> u8

Returns the abbreviation as its raw uppercase ASCII byte.

Trait Implementations§

Source§

impl Clone for Letter

Source§

fn clone(&self) -> Letter

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 Letter

Source§

impl Debug for Letter

Source§

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

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

impl Eq for Letter

Source§

impl Hash for Letter

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Letter

Source§

fn cmp(&self, other: &Letter) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Letter

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 PartialOrd for Letter

Source§

fn partial_cmp(&self, other: &Letter) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl StructuralPartialEq for Letter

Source§

impl TryFrom<char> for Letter

Source§

type Error = ParseError

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

fn try_from(c: char) -> Result<Self, Self::Error>

Performs the conversion.

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