Trait core::fmt::Debug
[−]
[src]
pub trait Debug { fn fmt(&self, &mut Formatter) -> Result; }
Format trait for the ?
character.
Debug
should format the output in a programmer-facing, debugging context.
Generally speaking, you should just derive
a Debug
implementation.
When used with the alternate format specifier #?
, the output is pretty-printed.
For more information on formatters, see the module-level documentation.
This trait can be used with #[derive]
.
Examples
Deriving an implementation:
fn main() { #[derive(Debug)] struct Point { x: i32, y: i32, } let origin = Point { x: 0, y: 0 }; println!("The origin is: {:?}", origin); }#[derive(Debug)] struct Point { x: i32, y: i32, } let origin = Point { x: 0, y: 0 }; println!("The origin is: {:?}", origin);
Manually implementing:
fn main() { use std::fmt; struct Point { x: i32, y: i32, } impl fmt::Debug for Point { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "Point {{ x: {}, y: {} }}", self.x, self.y) } } let origin = Point { x: 0, y: 0 }; println!("The origin is: {:?}", origin); }use std::fmt; struct Point { x: i32, y: i32, } impl fmt::Debug for Point { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "Point {{ x: {}, y: {} }}", self.x, self.y) } } let origin = Point { x: 0, y: 0 }; println!("The origin is: {:?}", origin);
This outputs:
The origin is: Point { x: 0, y: 0 }
There are a number of debug_*
methods on Formatter
to help you with manual
implementations, such as debug_struct
.
Debug
implementations using either derive
or the debug builder API
on Formatter
support pretty printing using the alternate flag: {:#?}
.
Pretty printing with #?
:
#[derive(Debug)] struct Point { x: i32, y: i32, } let origin = Point { x: 0, y: 0 }; println!("The origin is: {:#?}", origin);
This outputs:
The origin is: Point {
x: 0,
y: 0
}
Required Methods
Implementors
impl Debug for Decoded
impl Debug for FullDecoded
impl<'a> Debug for Part<'a>
impl Debug for Sign
impl Debug for Unpacked
impl Debug for Sign
impl<'a> Debug for Decimal<'a>
impl<'a> Debug for ParseResult<'a>
impl Debug for ParseFloatError
impl Debug for FloatErrorKind
impl Debug for Big8x3
impl Debug for Big32x40
impl Debug for Fp
impl<T: Debug> Debug for Wrapping<T>
impl Debug for FpCategory
impl Debug for ParseIntError
impl Debug for IntErrorKind
impl<T: Debug + Zeroable> Debug for NonZero<T>
impl<Ret> Debug for fn() -> Ret
impl<Ret> Debug for extern "C" fn() -> Ret
impl<Ret> Debug for unsafe fn() -> Ret
impl<Ret> Debug for unsafe extern "C" fn() -> Ret
impl<Ret, A> Debug for fn(A) -> Ret
impl<Ret, A> Debug for extern "C" fn(A) -> Ret
impl<Ret, A> Debug for unsafe fn(A) -> Ret
impl<Ret, A> Debug for unsafe extern "C" fn(A) -> Ret
impl<Ret, A, B> Debug for fn(A, B) -> Ret
impl<Ret, A, B> Debug for extern "C" fn(A, B) -> Ret
impl<Ret, A, B> Debug for unsafe fn(A, B) -> Ret
impl<Ret, A, B> Debug for unsafe extern "C" fn(A, B) -> Ret
impl<Ret, A, B, C> Debug for fn(A, B, C) -> Ret
impl<Ret, A, B, C> Debug for extern "C" fn(A, B, C) -> Ret
impl<Ret, A, B, C> Debug for unsafe fn(A, B, C) -> Ret
impl<Ret, A, B, C> Debug for unsafe extern "C" fn(A, B, C) -> Ret
impl<Ret, A, B, C, D> Debug for fn(A, B, C, D) -> Ret
impl<Ret, A, B, C, D> Debug for extern "C" fn(A, B, C, D) -> Ret
impl<Ret, A, B, C, D> Debug for unsafe fn(A, B, C, D) -> Ret
impl<Ret, A, B, C, D> Debug for unsafe extern "C" fn(A, B, C, D) -> Ret
impl<Ret, A, B, C, D, E> Debug for fn(A, B, C, D, E) -> Ret
impl<Ret, A, B, C, D, E> Debug for extern "C" fn(A, B, C, D, E) -> Ret
impl<Ret, A, B, C, D, E> Debug for unsafe fn(A, B, C, D, E) -> Ret
impl<Ret, A, B, C, D, E> Debug for unsafe extern "C" fn(A, B, C, D, E) -> Ret
impl<Ret, A, B, C, D, E, F> Debug for fn(A, B, C, D, E, F) -> Ret
impl<Ret, A, B, C, D, E, F> Debug for extern "C" fn(A, B, C, D, E, F) -> Ret
impl<Ret, A, B, C, D, E, F> Debug for unsafe fn(A, B, C, D, E, F) -> Ret
impl<Ret, A, B, C, D, E, F> Debug for unsafe extern "C" fn(A, B, C, D, E, F) -> Ret
impl<Ret, A, B, C, D, E, F, G> Debug for fn(A, B, C, D, E, F, G) -> Ret
impl<Ret, A, B, C, D, E, F, G> Debug for extern "C" fn(A, B, C, D, E, F, G) -> Ret
impl<Ret, A, B, C, D, E, F, G> Debug for unsafe fn(A, B, C, D, E, F, G) -> Ret
impl<Ret, A, B, C, D, E, F, G> Debug for unsafe extern "C" fn(A, B, C, D, E, F, G) -> Ret
impl<Ret, A, B, C, D, E, F, G, H> Debug for fn(A, B, C, D, E, F, G, H) -> Ret
impl<Ret, A, B, C, D, E, F, G, H> Debug for extern "C" fn(A, B, C, D, E, F, G, H) -> Ret
impl<Ret, A, B, C, D, E, F, G, H> Debug for unsafe fn(A, B, C, D, E, F, G, H) -> Ret
impl<Ret, A, B, C, D, E, F, G, H> Debug for unsafe extern "C" fn(A, B, C, D, E, F, G, H) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I> Debug for fn(A, B, C, D, E, F, G, H, I) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I> Debug for extern "C" fn(A, B, C, D, E, F, G, H, I) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I> Debug for unsafe fn(A, B, C, D, E, F, G, H, I) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I> Debug for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J> Debug for fn(A, B, C, D, E, F, G, H, I, J) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J> Debug for extern "C" fn(A, B, C, D, E, F, G, H, I, J) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J> Debug for unsafe fn(A, B, C, D, E, F, G, H, I, J) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J> Debug for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Debug for fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Debug for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Debug for unsafe fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Debug for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Debug for fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Debug for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Debug for unsafe fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Debug for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
impl Debug for RangeFull
impl<Idx: Debug> Debug for Range<Idx>
impl<Idx: Debug> Debug for RangeFrom<Idx>
impl<Idx: Debug> Debug for RangeTo<Idx>
impl Debug for Ordering
impl Debug for Any
impl Debug for Any + Send
impl Debug for TypeId
impl<T: Debug> Debug for [T; 0]
impl<T: Debug> Debug for [T; 1]
impl<T: Debug> Debug for [T; 2]
impl<T: Debug> Debug for [T; 3]
impl<T: Debug> Debug for [T; 4]
impl<T: Debug> Debug for [T; 5]
impl<T: Debug> Debug for [T; 6]
impl<T: Debug> Debug for [T; 7]
impl<T: Debug> Debug for [T; 8]
impl<T: Debug> Debug for [T; 9]
impl<T: Debug> Debug for [T; 10]
impl<T: Debug> Debug for [T; 11]
impl<T: Debug> Debug for [T; 12]
impl<T: Debug> Debug for [T; 13]
impl<T: Debug> Debug for [T; 14]
impl<T: Debug> Debug for [T; 15]
impl<T: Debug> Debug for [T; 16]
impl<T: Debug> Debug for [T; 17]
impl<T: Debug> Debug for [T; 18]
impl<T: Debug> Debug for [T; 19]
impl<T: Debug> Debug for [T; 20]
impl<T: Debug> Debug for [T; 21]
impl<T: Debug> Debug for [T; 22]
impl<T: Debug> Debug for [T; 23]
impl<T: Debug> Debug for [T; 24]
impl<T: Debug> Debug for [T; 25]
impl<T: Debug> Debug for [T; 26]
impl<T: Debug> Debug for [T; 27]
impl<T: Debug> Debug for [T; 28]
impl<T: Debug> Debug for [T; 29]
impl<T: Debug> Debug for [T; 30]
impl<T: Debug> Debug for [T; 31]
impl<T: Debug> Debug for [T; 32]
impl Debug for AtomicUsize
impl Debug for AtomicIsize
impl Debug for AtomicBool
impl<T> Debug for AtomicPtr<T>
impl Debug for BorrowState
impl<T: Debug> Debug for Option<T>
impl<T: Debug, E: Debug> Debug for Result<T, E>
impl Debug for SearchStep
impl<'a, 'b> Debug for StrSearcher<'a, 'b>
impl Debug for StrSearcherImpl
impl Debug for EmptyNeedle
impl Debug for TwoWaySearcher
impl Debug for ParseBoolError
impl Debug for Utf8Error
impl Debug for RadixFmt<isize, Radix>
impl Debug for isize
impl Debug for RadixFmt<usize, Radix>
impl Debug for usize
impl Debug for RadixFmt<i8, Radix>
impl Debug for i8
impl Debug for RadixFmt<u8, Radix>
impl Debug for u8
impl Debug for RadixFmt<i16, Radix>
impl Debug for i16
impl Debug for RadixFmt<u16, Radix>
impl Debug for u16
impl Debug for RadixFmt<i32, Radix>
impl Debug for i32
impl Debug for RadixFmt<u32, Radix>
impl Debug for u32
impl Debug for RadixFmt<i64, Radix>
impl Debug for i64
impl Debug for RadixFmt<u64, Radix>
impl Debug for u64
impl Debug for Error
impl<'a> Debug for Arguments<'a>
impl<'a, T: ?Sized + Debug> Debug for &'a T
impl<'a, T: ?Sized + Debug> Debug for &'a mut T
impl Debug for bool
impl Debug for str
impl Debug for char
impl Debug for f32
impl Debug for f64
impl<T> Debug for *const T
impl<T> Debug for *mut T
impl<T0: Debug, T1: Debug, T2: Debug, T3: Debug, T4: Debug, T5: Debug, T6: Debug, T7: Debug, T8: Debug, T9: Debug, T10: Debug, T11: Debug> Debug for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
impl<T1: Debug, T2: Debug, T3: Debug, T4: Debug, T5: Debug, T6: Debug, T7: Debug, T8: Debug, T9: Debug, T10: Debug, T11: Debug> Debug for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
impl<T2: Debug, T3: Debug, T4: Debug, T5: Debug, T6: Debug, T7: Debug, T8: Debug, T9: Debug, T10: Debug, T11: Debug> Debug for (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
impl<T3: Debug, T4: Debug, T5: Debug, T6: Debug, T7: Debug, T8: Debug, T9: Debug, T10: Debug, T11: Debug> Debug for (T3, T4, T5, T6, T7, T8, T9, T10, T11)
impl<T4: Debug, T5: Debug, T6: Debug, T7: Debug, T8: Debug, T9: Debug, T10: Debug, T11: Debug> Debug for (T4, T5, T6, T7, T8, T9, T10, T11)
impl<T5: Debug, T6: Debug, T7: Debug, T8: Debug, T9: Debug, T10: Debug, T11: Debug> Debug for (T5, T6, T7, T8, T9, T10, T11)
impl<T6: Debug, T7: Debug, T8: Debug, T9: Debug, T10: Debug, T11: Debug> Debug for (T6, T7, T8, T9, T10, T11)
impl<T7: Debug, T8: Debug, T9: Debug, T10: Debug, T11: Debug> Debug for (T7, T8, T9, T10, T11)
impl<T8: Debug, T9: Debug, T10: Debug, T11: Debug> Debug for (T8, T9, T10, T11)
impl<T9: Debug, T10: Debug, T11: Debug> Debug for (T9, T10, T11)
impl<T10: Debug, T11: Debug> Debug for (T10, T11)
impl<T11: Debug> Debug for (T11,)
impl<T: Debug> Debug for [T]
impl Debug for ()
impl<T: ?Sized> Debug for PhantomData<T>
impl<T: Copy + Debug> Debug for Cell<T>
impl<T: ?Sized + Debug> Debug for RefCell<T>
impl<'b, T: ?Sized + Debug> Debug for Ref<'b, T>
impl<'b, T: ?Sized + Debug> Debug for RefMut<'b, T>