docx_rs/documents/
toc_key.rs

1#[cfg(not(test))]
2use std::sync::atomic::AtomicUsize;
3#[cfg(not(test))]
4static TOC_KEY: AtomicUsize = AtomicUsize::new(0);
5
6#[cfg(not(test))]
7pub trait TocKeyGenerator {
8    fn generate() -> String {
9        use std::sync::atomic::Ordering;
10
11        let id = TOC_KEY.load(Ordering::Relaxed);
12        TOC_KEY.store(id + 1, Ordering::Relaxed);
13        format!("_Toc{:08}", id)
14    }
15}
16
17pub struct TocKey {}
18
19impl TocKeyGenerator for TocKey {}
20
21#[cfg(test)]
22pub trait TocKeyGenerator {
23    fn generate() -> String {
24        "_Toc00000000".to_string()
25    }
26}