vtid

Crates.iovtid
lib.rsvtid
version0.1.3
sourcesrc
created_at2024-11-14 21:06:58.909185
updated_at2024-11-14 21:15:02.802411
descriptionA Rust library for generating volatile type IDs
homepage
repositoryhttps://github.com/zakarumych/vtid
max_upload_size
id1448326
size6,707
development (github:dabbotorg:development)

documentation

https://docs.rs/vtid

README

vtid - Volatile Type ID

A Rust library for generating volatile type IDs that change when a crate is recompiled.

🚀 Features

  • Extended Type IDs: Generate extended type IDs that change with each crate recompilation.
  • Derive Macro Support: Easily derive the HasVtid trait for your types.
  • no_std Compatible: Use in embedded and other no_std environments.
  • Minimal Dependencies: Zero dependencies, except for the derive macro.

📦 Installation

Add vtid to your Cargo.toml:

[dependencies]
vtid = { version = "0.1.0", features = ["derive"] }

🛠️ Usage

Here's how to use vtid in your project:

use vtid::{Vtid, HasVtid};

// Derive HasVtid for your types
#[derive(HasVtid)]
struct MyType;

// Get the volatile type ID
let type_id = Vtid::of::<MyType>();
println!("Type ID: {:?}", type_id);

// IDs change when crate is recompiled
let id1 = Vtid::of::<MyType>();

// Restart the program.
let id2 = Vtid::of::<MyType>(); // Same as id1

// Recompile program, but this crate and deps are not changed, so rlib is reused.
let id3 = Vtid::of::<MyType>(); // Should be the same as id1

// After this crate recompilation...
let id4 = Vtid::of::<MyType>(); // Different from id1

📜 License

Licensed under either of

at your option.

Commit count: 3

cargo fmt