本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。