use super::prelude::*;
merge_thin_wrapper! {
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct First;
}
impl<T> Merge for First<T> {
#[inline]
fn merge_ref(&mut self, _: Self) -> Result<(), Error> {
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_merge_ab() {
let a = First(42);
let b = First(43);
let merged = a.merge(b).unwrap();
assert_eq!(*merged, 42);
}
#[test]
fn test_merge_ba() {
let a = First(42);
let b = First(43);
let merged = b.merge(a).unwrap();
assert_eq!(*merged, 43);
}
}
#[cfg(test)]
#[cfg(feature = "serde")]
mod serde_tests {
use super::*;
#[test]
fn test_deserialize() {
let x: First<i32> = serde_json::from_str("42").unwrap();
assert_eq!(*x, 42);
}
}