Skip to main content

Crate sashite_sin

Crate sashite_sin 

Source
Expand description

§Style Identifier Notation (SIN)

A no_std, unsafe-free implementation of the SIN v1.0.0 specification.

SIN is a compact, ASCII-only token that encodes a player’s identity — the pair (player side, player style) — at the level of notation. A token has the shape:

<abbr>

matching the anchored regular expression ^[A-Za-z]$, and maps to exactly two attributes:

ComponentEncodesValues
letter caseSideuppercase → First, lowercase → Second
letterLetterthe player-style abbreviation (AZ)

SIN standardizes only the encoding; which letter denotes which style is left to the rule system. See the glossary.

§Example

use sashite_sin::{Identifier, Side};

let western: Identifier = "W".parse()?;
assert_eq!(western.letter().as_char(), 'W');
assert_eq!(western.side(), Side::First);

// A SIN token is exactly one character.
assert_eq!(western.to_char(), 'W');
assert_eq!(western.encode().as_str(), "W");

// Cheap, infallible transformations (the type is `Copy`).
assert_eq!(western.flipped().to_char(), 'w');

§Guarantees

  • no_std and allocation-free: parsing borrows the input bytes and an Identifier is a 2-byte Copy value; nothing is heap-allocated.
  • No unsafe: the crate is built under a forbid-unsafe lint policy.
  • Bounded, panic-free parsing: inputs longer than one byte are rejected before inspection, and the public parsing API never panics.
  • No required dependencies: SIN is self-contained, so the default build has an empty dependency graph; the optional serde feature adds serde (kept no_std).

Structs§

EncodedSin
The canonical string form of an Identifier, stored inline.
Identifier
A parsed SIN token: a player’s identity at the level of notation.
Letter
The single-letter abbreviation of a player style.

Enums§

ParseError
The reason a string could not be parsed as a SIN token.
Side
The camp a player belongs to.