use std::ops::Deref;
use serde::{Deserialize, Serialize};
pub trait Merge: Default {
fn merge(&mut self, other: Self);
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Fixed<T> {
value: T,
}
impl<T> Fixed<T> {
pub fn new(value: T) -> Self {
Self { value }
}
}
impl<T> Fixed<T> {
pub fn get(&self) -> &T {
&self.value
}
}
impl<T: Default> Merge for Fixed<T> {
fn merge(&mut self, _other: Self) {
}
}
impl<T: Default> Default for Fixed<T> {
fn default() -> Self {
Self {
value: Default::default(),
}
}
}
impl<T> Deref for Fixed<T> {
type Target = T;
fn deref(&self) -> &Self::Target {
&self.value
}
}