27 lines
556 B
Rust
27 lines
556 B
Rust
|
#[cfg(not(test))]
|
||
|
use std::sync::atomic::AtomicUsize;
|
||
|
#[cfg(not(test))]
|
||
|
static TOC_KEY: AtomicUsize = AtomicUsize::new(0);
|
||
|
|
||
|
#[cfg(not(test))]
|
||
|
pub trait TocKeyGenerator {
|
||
|
fn generate() -> String {
|
||
|
use std::sync::atomic::Ordering;
|
||
|
|
||
|
let id = TOC_KEY.load(Ordering::Relaxed);
|
||
|
TOC_KEY.store(id + 1, Ordering::Relaxed);
|
||
|
format!("_Toc{:08}", id)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pub struct TocKey {}
|
||
|
|
||
|
impl TocKeyGenerator for TocKey {}
|
||
|
|
||
|
#[cfg(test)]
|
||
|
pub trait TocKeyGenerator {
|
||
|
fn generate() -> String {
|
||
|
"_Toc00000000".to_string()
|
||
|
}
|
||
|
}
|