Sha256: 60ba28f67a9acaecf8964b611efba416b13f9f2bae4befc329fdf0e037293802
Contents?: true
Size: 1.7 KB
Versions: 30
Compression:
Stored size: 1.7 KB
Contents
//! Reimplements core logic and types from `std::io` in an `alloc`-friendly //! fashion. use alloc::vec::Vec; use core::fmt::{self, Display}; use core::result; pub enum ErrorKind { Other, } // I/O errors can never occur in no-std mode. All our no-std I/O implementations // are infallible. pub struct Error; impl Display for Error { fn fmt(&self, _formatter: &mut fmt::Formatter<'_>) -> fmt::Result { unreachable!() } } impl Error { pub(crate) fn new(_kind: ErrorKind, _error: &'static str) -> Error { Error } } pub type Result<T> = result::Result<T, Error>; pub trait Write { fn write(&mut self, buf: &[u8]) -> Result<usize>; fn write_all(&mut self, buf: &[u8]) -> Result<()> { // All our Write impls in no_std mode always write the whole buffer in // one call infallibly. let result = self.write(buf); debug_assert!(result.is_ok()); debug_assert_eq!(result.unwrap_or(0), buf.len()); Ok(()) } fn flush(&mut self) -> Result<()>; } impl<W: Write> Write for &mut W { #[inline] fn write(&mut self, buf: &[u8]) -> Result<usize> { (*self).write(buf) } #[inline] fn write_all(&mut self, buf: &[u8]) -> Result<()> { (*self).write_all(buf) } #[inline] fn flush(&mut self) -> Result<()> { (*self).flush() } } impl Write for Vec<u8> { #[inline] fn write(&mut self, buf: &[u8]) -> Result<usize> { self.extend_from_slice(buf); Ok(buf.len()) } #[inline] fn write_all(&mut self, buf: &[u8]) -> Result<()> { self.extend_from_slice(buf); Ok(()) } #[inline] fn flush(&mut self) -> Result<()> { Ok(()) } }
Version data entries
30 entries across 30 versions & 1 rubygems