本文简要介绍rust语言中 core::fmt::Formatter.debug_set
的用法。
用法
pub fn debug_set<'b>(&'b mut self) -> DebugSet<'b, 'a>
创建一个DebugSet
构建器,旨在帮助为set-like 结构创建fmt::Debug
实现。
例子
use std::fmt;
struct Foo(Vec<i32>);
impl fmt::Debug for Foo {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.debug_set().entries(self.0.iter()).finish()
}
}
assert_eq!(format!("{:?}", Foo(vec![10, 11])), "{10, 11}");
在这个更复杂的示例中,我们使用 format_args!
和 .debug_set()
来构建匹配臂列表:
use std::fmt;
struct Arm<'a, L: 'a, R: 'a>(&'a (L, R));
struct Table<'a, K: 'a, V: 'a>(&'a [(K, V)], V);
impl<'a, L, R> fmt::Debug for Arm<'a, L, R>
where
L: 'a + fmt::Debug, R: 'a + fmt::Debug
{
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
L::fmt(&(self.0).0, fmt)?;
fmt.write_str(" => ")?;
R::fmt(&(self.0).1, fmt)
}
}
impl<'a, K, V> fmt::Debug for Table<'a, K, V>
where
K: 'a + fmt::Debug, V: 'a + fmt::Debug
{
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.debug_set()
.entries(self.0.iter().map(Arm))
.entry(&Arm(&(format_args!("_"), &self.1)))
.finish()
}
}
相关用法
- Rust Formatter.debug_struct用法及代码示例
- Rust Formatter.debug_list用法及代码示例
- Rust Formatter.debug_tuple用法及代码示例
- Rust Formatter.debug_map用法及代码示例
- Rust Formatter.precision用法及代码示例
- Rust Formatter.sign_minus用法及代码示例
- Rust Formatter.write_fmt用法及代码示例
- Rust Formatter.write_str用法及代码示例
- Rust Formatter.fill用法及代码示例
- Rust Formatter.alternate用法及代码示例
- Rust Formatter.sign_plus用法及代码示例
- Rust Formatter.sign_aware_zero_pad用法及代码示例
- Rust Formatter.pad_integral用法及代码示例
- Rust Formatter.pad用法及代码示例
- Rust Formatter.align用法及代码示例
- Rust Formatter.width用法及代码示例
- Rust FromUtf16Error用法及代码示例
- Rust FromUtf8Error.as_bytes用法及代码示例
- Rust File用法及代码示例
- Rust FromVecWithNulError.into_bytes用法及代码示例
- Rust FileExt.read_exact_at用法及代码示例
- Rust FileTypeExt.is_char_device用法及代码示例
- Rust FromBytesWithNulError用法及代码示例
- Rust File.open用法及代码示例
- Rust File.sync_data用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 core::fmt::Formatter.debug_set。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。