Something went wrong. Try again.
Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108// SPDX-License-Identifier: GPL-2.0
//! Formatting utilities.//!//! This module is intended to be used in place of `core::fmt` in kernel code.
pub use core::fmt::{ Arguments, Debug, Error, Formatter, Result, Write, //};
/// Internal adapter used to route and allow implementations of formatting traits for foreign types.////// It is inserted automatically by the [`fmt!`] macro and is not meant to be used directly.////// [`fmt!`]: crate::prelude::fmt!#[doc(hidden)]pub struct Adapter<T>(pub T);
macro_rules! impl_fmt_adapter_forward { ($($trait:ident),* $(,)?) => { $( impl<T: $trait> $trait for Adapter<T> { fn fmt(&self, f: &mut Formatter<'_>) -> Result { let Self(t) = self; $trait::fmt(t, f) } } )* };}
use core::fmt::{ Binary, LowerExp, LowerHex, Octal, Pointer, UpperExp, UpperHex, //};impl_fmt_adapter_forward!(Debug, LowerHex, UpperHex, Octal, Binary, Pointer, LowerExp, UpperExp);
/// A copy of [`core::fmt::Display`] that allows us to implement it for foreign types.////// Types should implement this trait rather than [`core::fmt::Display`]. Together with the/// [`Adapter`] type and [`fmt!`] macro, it allows for formatting foreign types (e.g. types from/// core) which do not implement [`core::fmt::Display`] directly.////// [`fmt!`]: crate::prelude::fmt!pub trait Display { /// Same as [`core::fmt::Display::fmt`]. fn fmt(&self, f: &mut Formatter<'_>) -> Result;}
impl<T: ?Sized + Display> Display for &T { fn fmt(&self, f: &mut Formatter<'_>) -> Result { Display::fmt(*self, f) }}
impl<T: ?Sized + Display> core::fmt::Display for Adapter<&T> { fn fmt(&self, f: &mut Formatter<'_>) -> Result { let Self(t) = self; Display::fmt(t, f) }}
macro_rules! impl_display_forward { ($( $( { $($generics:tt)* } )? $ty:ty $( { where $($where:tt)* } )? ),* $(,)?) => { $( impl$($($generics)*)? Display for $ty $(where $($where)*)? { fn fmt(&self, f: &mut Formatter<'_>) -> Result { core::fmt::Display::fmt(self, f) } } )* };}
impl_display_forward!( bool, char, core::panic::PanicInfo<'_>, Arguments<'_>, i128, i16, i32, i64, i8, isize, str, u128, u16, u32, u64, u8, usize, {<T: ?Sized>} crate::sync::Arc<T> {where crate::sync::Arc<T>: core::fmt::Display}, {<T: ?Sized>} crate::sync::UniqueArc<T> {where crate::sync::UniqueArc<T>: core::fmt::Display},);