use serde::{Serialize, Serializer};
use super::SerializeIn;
use crate::Reader;
#[derive(Debug)]
pub struct SerializeInWith<'a, T: ?Sized, R: Reader + ?Sized> {
value: &'a T,
reader: &'a R,
}
impl<'a, T: ?Sized, R: Reader + ?Sized> SerializeInWith<'a, T, R> {
#[must_use]
pub const fn new(value: &'a T, reader: &'a R) -> Self {
Self { value, reader }
}
}
impl<T, R> Serialize for SerializeInWith<'_, T, R>
where
T: ?Sized + SerializeIn<R>,
R: Reader + ?Sized,
{
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
self.value.serialize_in(self.reader, serializer)
}
}