26 lines
799 B
Rust
26 lines
799 B
Rust
/// A app-unique version number for content.
|
|
/// This is used for tracking and comparing versions of content across the application.
|
|
/// The Rich Text Buffer and the LocalFileModel use this for comparing versions of content.
|
|
use std::sync::atomic::{AtomicUsize, Ordering};
|
|
|
|
#[derive(Clone, PartialEq, Debug, Copy, Eq, PartialOrd, Ord, Hash)]
|
|
pub struct ContentVersion(usize);
|
|
|
|
impl ContentVersion {
|
|
/// Constructs a new app-unique content version.
|
|
#[allow(clippy::new_without_default)]
|
|
pub fn new() -> Self {
|
|
static NEXT_ID: AtomicUsize = AtomicUsize::new(0);
|
|
let raw = NEXT_ID.fetch_add(1, Ordering::Relaxed);
|
|
ContentVersion(raw)
|
|
}
|
|
|
|
pub fn as_i32(&self) -> i32 {
|
|
self.0 as i32
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
#[path = "content_version_test.rs"]
|
|
mod tests;
|