protobuf/
cached_size.rs
1use std::hash::Hash;
2use std::hash::Hasher;
3use std::sync::atomic::AtomicUsize;
4use std::sync::atomic::Ordering;
5
6#[derive(Debug, Default)]
13pub struct CachedSize {
14 size: AtomicUsize,
15}
16
17impl CachedSize {
18 pub const fn new() -> CachedSize {
20 CachedSize {
21 size: AtomicUsize::new(0),
22 }
23 }
24
25 pub fn get(&self) -> u32 {
27 self.size.load(Ordering::Relaxed) as u32
28 }
29
30 pub fn set(&self, size: u32) {
32 self.size.store(size as usize, Ordering::Relaxed)
33 }
34}
35
36impl Clone for CachedSize {
37 fn clone(&self) -> CachedSize {
38 CachedSize {
39 size: AtomicUsize::new(self.size.load(Ordering::Relaxed)),
40 }
41 }
42}
43
44impl PartialEq<CachedSize> for CachedSize {
45 fn eq(&self, _other: &CachedSize) -> bool {
46 true
47 }
48}
49
50impl Eq for CachedSize {}
51
52impl Hash for CachedSize {
53 fn hash<H: Hasher>(&self, _state: &mut H) {
54 }
56}