use std::io::Result;
use std::io::Write;
use crate::Output;
#[must_use]
#[repr(transparent)]
pub struct StdWrite<O> {
inner: O,
}
impl<O> StdWrite<O> {
#[inline]
pub const fn new(inner: O) -> Self {
Self { inner }
}
#[inline]
pub const fn get_ref(&self) -> &O {
&self.inner
}
#[inline]
pub fn get_mut(&mut self) -> &mut O {
&mut self.inner
}
#[inline]
pub fn into_inner(self) -> O {
self.inner
}
}
impl<O> Write for StdWrite<O>
where
O: Output<Item = u8>,
{
#[inline]
fn write(&mut self, input: &[u8]) -> Result<usize> {
Output::write(&mut self.inner, input)
}
#[inline]
fn flush(&mut self) -> Result<()> {
Output::flush(&mut self.inner)
}
}