[−][src]Trait const_format::marker_traits::WriteMarker
This is supported on crate feature
fmt
only.Marker trait for types that can be written into.
Implementors
Types that implement this trait are also expected to implement these inherent methods:
ⓘ
// use const_format::{FormattingFlags, Formatter}; const fn borrow_mutably(&mut self) -> &mut Self const fn make_formatter(&mut self, flags: FormattingFlags) -> Formatter<'_>
Coercions
The Kind
and This
associated types
are used in the IsAWriteMarker
marker type
to convert a &mut StrWriter<_>
to a StrWriterMut<'_>
,
and leave other mutable references unconverted.
Example
Implementing this trait for a String-like inline allocated type.
#![feature(const_mut_refs)] use const_format::marker_traits::{IsNotAStrWriter, WriteMarker}; use const_format::{Formatter, FormattingFlags}; use const_format::writec; mod arraystring { use const_format::marker_traits::{IsNotAStrWriter, WriteMarker}; use const_format::{Formatter, FormattingFlags}; const ARRAY_CAP: usize = 64; pub struct ArrayString { len: usize, arr: [u8; ARRAY_CAP], } impl WriteMarker for ArrayString { type Kind = IsNotAStrWriter; type This = Self; } impl ArrayString { pub const fn new() -> Self { Self { len: 0, arr: [0; ARRAY_CAP] } } // Gets the part of the array that has been written to. pub const fn as_bytes(&self) -> &[u8] { const_format::utils::slice_up_to_len_alt(&self.arr, self.len) } pub const fn borrow_mutably(&mut self) -> &mut Self { self } pub const fn make_formatter(&mut self, flags: FormattingFlags) -> Formatter<'_> { Formatter::from_custom(&mut self.arr, &mut self.len, flags) } } } use arraystring::ArrayString; let mut buffer = ArrayString::new(); writec!(buffer, "{:?}", [3u8, 5])?; assert_eq!(buffer.as_bytes(), b"[3, 5]"); writec!(buffer, "{}{:b}", "Hello, world!", 100u16)?; assert_eq!(buffer.as_bytes(), b"[3, 5]Hello, world!1100100");
Associated Types
type Kind
[src]
Whether this is a StrWriter or not, this can be either of
IsAStrWriter
or IsNotAStrWriter
type This: ?Sized
[src]
The type after dereferencing,
implemented as type This = Self;
for all non-reference types
Implementors
impl WriteMarker for Formatter<'_>
[src]
type Kind = IsNotAStrWriter
type This = Self
impl WriteMarker for StrWriterMut<'_>
[src]
type Kind = IsNotAStrWriter
type This = Self
impl<T: ?Sized> WriteMarker for &T where
T: WriteMarker,
[src]
T: WriteMarker,
impl<T: ?Sized> WriteMarker for &mut T where
T: WriteMarker,
[src]
T: WriteMarker,