reliakit-primitives 0.1.0

Reusable type-safe primitives for constrained and reliability-oriented Rust values.
Documentation

reliakit-primitives

Type-safe primitives for constrained and reliability-oriented Rust values.

Crates.io Crates.io Downloads Docs.rs CI codecov License: MIT

reliakit-primitives provides small owned wrapper types for values that should satisfy common constraints before they move through an application or library boundary.

The crate has no dependencies and forbids unsafe code.

When To Use It

Use this crate when a value has simple validity rules that should be checked once and then carried as a typed value:

  • names and identifiers that must not be empty,
  • strings with minimum or maximum character lengths,
  • percentages constrained to 0..=100,
  • ports constrained to 1..=65535,
  • byte sizes that should display consistently.

When Not To Use It

Do not use this crate as a replacement for domain-specific validation, parsing, serialization, or schema libraries. The types here are intentionally small and general.

Installation

After publishing:

[dependencies]
reliakit-primitives = "0.1"

Until then:

[dependencies]
reliakit-primitives = { git = "https://github.com/satyakwok/reliakit", package = "reliakit-primitives" }

Examples

Non-empty strings

use reliakit_primitives::NonEmptyStr;

let name = NonEmptyStr::new("service-api")?;

Bounded strings

use reliakit_primitives::BoundedStr;

type Username = BoundedStr<3, 32>;

let username = Username::new("satyakwok")?;

Numeric primitives

use reliakit_primitives::{ByteSize, Percent, Port};

let limit = ByteSize::from_mb(10);
let threshold = Percent::new(80)?;
let port = Port::new(3000)?;

Available Types

  • NonEmptyStr: owned string that is not empty and not whitespace-only.
  • BoundedStr<MIN, MAX>: owned string constrained by character length.
  • Percent: percentage value from 0 to 100 inclusive.
  • Port: TCP/UDP port from 1 to 65535 inclusive.
  • ByteSize: byte size value with human-readable display output.

Feature Flags

  • default = ["std"]
  • std: enables std::error::Error for primitive errors.
  • alloc: marker feature for allocation-backed usage without std.

no_std

The crate is designed for no_std usage when default features are disabled and alloc is available for string-backed types.

[dependencies]
reliakit-primitives = { version = "0.1", default-features = false, features = ["alloc"] }

Safety

This crate forbids unsafe code.

Status

Active. The 0.1.x API is considered stable for the current set of types.

License

Licensed under the MIT License. See ../../LICENSE.