Trait std::fmt::Debug 1.0.0[−][src]
Expand description
?
formatting.
Debug
应该在面向程序员的调试上下文中格式化输出。
一般来说,您应该只将 derive
和 Debug
实现。
当与备用格式说明符 #?
一起使用时,输出将被漂亮地打印。
有关格式化程序的更多信息,请参见 the module-level documentation。
如果所有字段都实现 Debug
,则此 trait 可以与 #[derive]
一起使用。
当为结构体 derived' 时,它将使用
struct的名称,然后是
{,然后是每个字段名称和
Debug值的逗号分隔列表,然后是
}。 对于
enum,它将使用成员的名称,如果适用,将使用
(,然后是字段的
Debug值,然后是
)`。
Stability
派生的 Debug
格式不稳定,因此 future Rust 版本可能会更改。
此外,标准库提供的类型 (libstd
,libcore
,liballoc
等) 的 Debug
实现不稳定,并且可能随 future Rust 版本而改变。
Examples
派生实现:
#[derive(Debug)] struct Point { x: i32, y: i32, } let origin = Point { x: 0, y: 0 }; assert_eq!(format!("The origin is: {:?}", origin), "The origin is: Point { x: 0, y: 0 }");Run
手动实现:
use std::fmt; struct Point { x: i32, y: i32, } impl fmt::Debug for Point { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("Point") .field("x", &self.x) .field("y", &self.y) .finish() } } let origin = Point { x: 0, y: 0 }; assert_eq!(format!("The origin is: {:?}", origin), "The origin is: Point { x: 0, y: 0 }");Run
Formatter
结构体上有许多辅助方法可以帮助您实现手动实现,例如 debug_struct
。
Debug
使用 derive
或 Formatter
上的调试构建器 API 的实现都支持使用 Alternate 标志进行漂亮的打印: {:#?}
.
使用 #?
进行漂亮的打印:
#[derive(Debug)] struct Point { x: i32, y: i32, } let origin = Point { x: 0, y: 0 }; assert_eq!(format!("The origin is: {:#?}", origin), "The origin is: Point { x: 0, y: 0, }");Run
Required methods
使用给定的格式化程序格式化该值。
Examples
use std::fmt; struct Position { longitude: f32, latitude: f32, } impl fmt::Debug for Position { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_tuple("") .field(&self.longitude) .field(&self.latitude) .finish() } } let position = Position { longitude: 1.987, latitude: 2.983 }; assert_eq!(format!("{:?}", position), "(1.987, 2.983)"); assert_eq!(format!("{:#?}", position), "( 1.987, 2.983, )");Run
Implementations on Foreign Types
Implementors
This is supported on (Android or DragonFly BSD or Emscripten or FreeBSD or Linux or NetBSD or OpenBSD) and Unix only.
This is supported on Unix only.
This is supported on Unix only.
This is supported on Unix only.
This is supported on Unix only.
impl<'_, K, V> Debug for std::collections::btree_map::VacantEntry<'_, K, V> where
K: Debug + Ord,
1.12.0[src]
impl<'_, K, V> Debug for std::collections::btree_map::VacantEntry<'_, K, V> where
K: Debug + Ord,
1.12.0[src]impl<'_, T> Debug for std::collections::btree_set::SymmetricDifference<'_, T> where
T: Debug,
1.17.0[src]
impl<'_, T> Debug for std::collections::btree_set::SymmetricDifference<'_, T> where
T: Debug,
1.17.0[src]This is supported on Unix only.
This is supported on (Android or DragonFly BSD or Emscripten or FreeBSD or Linux or NetBSD or OpenBSD) and Unix only.