#serde #identifier #string #code #no-std

no-std vds

Visibly distinguishable string types for identifiers and codes

4 stable releases

new 1.0.3 May 20, 2025
1.0.1 May 19, 2025

#619 in Text processing

Download history 76/week @ 2025-05-14

76 downloads per month

MIT/Apache

27KB
403 lines

vds

Visibly Distinguishable Strings โ€” a #![no_std] Rust crate for creating and validating string identifiers composed of easily readable characters.

This crate helps you generate and work with strings that:

  • Exclude confusing glyphs like O, 0, I, 1
  • Use only uppercase Latin letters and select digits
  • Are safe for UI display, voice transmission, QR encoding, and more

๐Ÿš€ Getting Started

Install via Cargo:

cargo add vds

Enable optional features:

  • serde โ€” enables Serialize/Deserialize for VDChar and VDString
  • generate โ€” adds a builder for random string generation using rand_core
[dependencies]
vds = { version = "1.0", features = ["generate", "serde"] }

๐ŸŽฏ Types

VDChar

A single, clearly readable character from a curated set.

use vds::VDChar;
assert!(VDChar::new('A').is_some());
assert!(VDChar::new('O').is_none()); // O is excluded

VDString

A validated string composed of VDChars. Acts like &str and supports .parse(), indexing, and iteration.

use vds::VDString;
let code: VDString = "AB29XY".parse().unwrap();
assert_eq!(&*code, "AB29XY");

VDGenerator (requires generate feature)

A builder for generating readable strings with optional constraints:

use vds::VDGenerator;
use rand::SeedableRng;

let mut rng = rand::rngs::SmallRng::seed_from_u64(123);
let code = VDGenerator::new()
    .length(8)
    .no_repeats()
    .no_adjacent_repeats()
    .generate(&mut rng)
    .unwrap();

๐Ÿงช Development & Testing

๐Ÿ›  Dev Commands

This repo includes a .cargo/config.toml file with helpful aliases:

  • cargo docs โ€” build and open full-featured docs
  • cargo tests โ€” run the full test suite with all features
  • cargo checks โ€” check build with no default features
  • cargo builds โ€” build with all features enabled

๐Ÿ“ฆ Crate Metadata


๐Ÿ“œ License

Licensed under either of:

  • MIT OR Apache-2.0

Dependencies

~170KB