oct 0.26.0

Octonary transcodings.
Documentation
// Copyright 2024-2025 Gabriel Bjørnager Jensen.
//
// This Source Code Form is subject to the terms of
// the Mozilla Public License, v. 2.0. If a copy of
// the MPL was not distributed with this file, you
// can obtain one at:
// <https://mozilla.org/MPL/2.0/>.

//! The [`Repeat`] type and [`repeat`] function.

use crate::io::{Read, Result};

/// A type that ignores reads and writes.
#[derive(Clone, Copy, Debug, Default)]
pub struct Repeat {
	/// The repeating octet value.
	value: u8,
}

/// Constructs a new [`Repeat`] object.
#[inline]
#[must_use]
pub const fn repeat(value: u8) -> Repeat {
	Repeat { value }
}

impl Read for Repeat {
	#[inline]
	fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
		buf.fill(self.value);
		Ok(buf.len())
	}

	#[inline]
	fn read_exact(&mut self, buf: &mut [u8]) -> Result<()> {
		buf.fill(self.value);
		Ok(())
	}
}