docx_rs/documents/
toc_key.rs1#[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}