forked from Deuxfleurs/garage
34 lines
623 B
Rust
34 lines
623 B
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
use crate::crdt::crdt::*;
|
|
|
|
/// Boolean, where `true` is an absorbing state
|
|
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq)]
|
|
pub struct Bool(bool);
|
|
|
|
impl Bool {
|
|
/// Create a new boolean with the specified value
|
|
pub fn new(b: bool) -> Self {
|
|
Self(b)
|
|
}
|
|
/// Set the boolean to true
|
|
pub fn set(&mut self) {
|
|
self.0 = true;
|
|
}
|
|
/// Get the boolean value
|
|
pub fn get(&self) -> bool {
|
|
self.0
|
|
}
|
|
}
|
|
|
|
impl From<bool> for Bool {
|
|
fn from(b: bool) -> Bool {
|
|
Bool::new(b)
|
|
}
|
|
}
|
|
|
|
impl CRDT for Bool {
|
|
fn merge(&mut self, other: &Self) {
|
|
self.0 = self.0 || other.0;
|
|
}
|
|
}
|