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