Trait collections::fmt::Debug
[−]
[src]
pub trait Debug { fn fmt(&self, &mut Formatter) -> Result<(), Error>; }
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<T> Debug for Box<T> where T: Debug + ?Sized
impl<T> Debug for Weak<T> where T: Debug + ?Sized
impl<T> Debug for Arc<T> where T: Debug + ?Sized
impl<T> Debug for Rc<T> where T: Debug + ?Sized
impl<T> Debug for Weak<T> where T: Debug + ?Sized
impl<T: Debug + Ord> Debug for BinaryHeap<T>
impl<K: Debug, V: Debug> Debug for BTreeMap<K, V>
impl<T: Debug> Debug for BTreeSet<T>
impl<'a, B: ?Sized> Debug for Cow<'a, B> where B: Debug + ToOwned, B::Owned: Debug
impl<E: CLike + Debug> Debug for EnumSet<E>
impl<A: Debug> Debug for LinkedList<A>
impl Debug for Utf16Item
impl Debug for FromUtf8Error
impl Debug for FromUtf16Error
impl Debug for String
impl Debug for ParseError
impl<T: Debug> Debug for Vec<T>
impl<T: Debug> Debug for VecDeque<T>
impl<T: Debug> Debug for Bound<T>