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:
| Component | Encodes | Values |
|---|---|---|
| letter case | Side | uppercase → First, lowercase → Second |
| letter | Letter | the player-style abbreviation (A–Z) |
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_stdand allocation-free: parsing borrows the input bytes and anIdentifieris a 2-byteCopyvalue; nothing is heap-allocated.- No
unsafe: the crate is built under a forbid-unsafelint 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
serdefeature addsserde(keptno_std).
Structs§
- Encoded
Sin - 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§
- Parse
Error - The reason a string could not be parsed as a SIN token.
- Side
- The camp a player belongs to.