Expand description
§Autoincrement
It is small library for implementing autoincremental values, such as IDs or others.
[dependencies]
autoincrement = "1"
§Synchronous generator example
use autoincrement::prelude::*;
#[derive(Incremental, PartialEq, Eq, Debug)]
struct MyId(u32);
let mut generator = MyId::init();
assert_eq!(generator.pull(), MyId(1));
assert_eq!(generator.pull(), MyId(2));
assert_eq!(generator.pull(), MyId(3));
§Set first value
use autoincrement::prelude::*;
#[derive(Incremental, PartialEq, Eq, Debug)]
struct MyId(u32);
let mut generator = MyId(20).init_from();
assert_eq!(generator.pull(), MyId(20));
assert_eq!(generator.pull(), MyId(21));
assert_eq!(generator.pull(), MyId(22));
§Example with using thread-safe generator
[dependencies]
autoincrement = { version = "1", features = ["derive", "async"] }
use autoincrement::prelude::*;
#[derive(AsyncIncremental, PartialEq, Eq, Debug)]
struct MyId(u32);
let generator = MyId::init(); // does not need to be mutable
assert_eq!(generator.pull(), MyId(1));
assert_eq!(generator.pull(), MyId(2));
assert_eq!(generator.pull(), MyId(3));
Modules§
Structs§
- Async
Increment - Thread-safe container for keeping autoincrement counter
- Auto
Increment - Non-thread-safe container for keeping autoincrement counter
Traits§
- Async
Incremental - Trait for implementing over thread-safe incremental types
- Atomic
- Only for type-safe purposes. You don’t need to use this trait.
- Incremental
- Trait for implementing over non-thread-safe incremental types