2021-03-10 15:21:56 +00:00
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
|
|
|
|
use crate::crdt::crdt::*;
|
|
|
|
|
|
|
|
/// Boolean, where `true` is an absorbing state
|
2022-09-13 14:08:00 +00:00
|
|
|
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
2021-03-10 15:21:56 +00:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-05-02 21:13:08 +00:00
|
|
|
impl Crdt for Bool {
|
2021-03-10 15:21:56 +00:00
|
|
|
fn merge(&mut self, other: &Self) {
|
|
|
|
self.0 = self.0 || other.0;
|
|
|
|
}
|
|
|
|
}
|