vds 1.0.1

Visibly distinguishable string types for identifiers and codes.
docs.rs failed to build vds-1.0.1
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: vds-1.0.3

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