Tracking Issue for debug_closure_helpers (original) (raw)
Feature gate: #![feature(debug_closure_helpers)]
This is a tracking issue for adding helpers to core::fmt that can use closures for formatting values.
Public API
// core::fmt
impl DebugList<'_, '_> { fn entry_with(&mut self, entry_fmt: F) -> &mut Self where F: FnOnce(&mut Formatter) -> fmt::Result; }
impl DebugMap<'_, '_> { fn key_with(&mut self, key_fmt: F) -> &mut Self where F: FnOnce(&mut Formatter) -> fmt::Result;
fn value_with<F>(&mut self, value_fmt: F) -> &mut Self
where
F: FnOnce(&mut Formatter) -> fmt::Result;}
impl DebugSet<'_, '_> { fn entry_with(&mut self, entry_fmt: F) -> &mut Self where F: FnOnce(&mut Formatter) -> fmt::Result; }
impl DebugStruct<'_, '_> { fn field_with(&mut self, name: &str, field_fmt: F) -> &mut Self where F: FnOnce(&mut Formatter) -> fmt::Result; }
impl DebugTuple<'_, '_> { // also DebugSet fn field_with(&mut self, field_fmt: F) -> &mut Self where F: FnOnce(&mut Formatter) -> fmt::Result; }
Steps / History
- Implementation: Closure-consuming helper functions for fmt::Debug helpers #117730
- Moved
FormatterFn/FromFn/from_fnto separate tracking issue: Tracking Issue for fmt_from_fn #146705 - Final comment period (FCP)1
- Stabilization PR: Stabilize debug_closure_helpers #146099
Unresolved Questions
- Naming: Do any strong preferences exist regarding the new method names?
- For now I've named them
{orig_method}_with, for exampleDebugStruct::field_with()is likeDebugStruct::field(). - Resolved: The
FormatterFntype was renamed toFromFn(and wrapped infrom_fn(), the helper methods kept their original names.
- For now I've named them
- The
DebugMapstruct gotkey_with()andvalue_with(), but notentry_with()-- is it worth adding that?- Resolved to not add
entry_with; see Replace Debug::{key_with, value_with} with DebugMap::entry_with libs-team#563 (comment)
- Resolved to not add
- Should
FormatterFn<F>place a trait bound onFso that call sites can be tidier?