| buf.rs | A buffer for constructing a string while avoiding heap allocation. | 6187 | 
        
          | ext.rs | Extension traits. | 1831 | 
        
          | lib.rs | `powerfmt` is a library that provides utilities for formatting values. Specifically, it makes it
 significantly easier to support filling to a minimum width with alignment, avoid heap
 allocation, and avoid repetitive calculations. | 530 | 
        
          | smart_display.rs | Definition of [`SmartDisplay`] and its related items.
 [`SmartDisplay`] is a trait that allows authors to provide additional information to both the
 formatter and other users. This information is provided in the form of a metadata type. The only
 required piece of metadata is the width of the value. This is _before_ it is passed to the
 formatter (i.e. it does not include any padding added by the formatter). Other information
 can be stored in a custom metadata type as needed. This information may be made available to
 downstream users, but it is not required.
 This module contains the [`SmartDisplay`] and associated items.
 # Example
 ```rust
 use std::fmt;
 use powerfmt::ext::FormatterExt as _;
 use powerfmt::smart_display::{self, FormatterOptions, Metadata, SmartDisplay};
 #[derive(Debug)]
 struct User {
     id: usize,
 }
 // If you try to use `UserMetadata` in the `SmartDisplay` implementation, you will get a
 // compiler error about a private type being used publicly. To avoid this, use this attribute to
 // declare a private metadata type. You shouldn't need to worry about how this works, but be
 // aware that any public fields or methods remain usable by downstream users.
 #[smart_display::private_metadata]
 struct UserMetadata {
     username: String,
     legal_name: String,
 }
 // This attribute can be applied to `SmartDisplay` implementations. It will generate an
 // implementation of `Display` that delegates to `SmartDisplay`, avoiding the need to write
 // boilerplate.
 #[smart_display::delegate]
 impl SmartDisplay for User {
     type Metadata = UserMetadata;
     fn metadata(&self, _: FormatterOptions) -> Metadata<'_, Self> {
         // This could be obtained from a database, for example.
         let legal_name = "John Doe".to_owned();
         let username = "jdoe".to_owned();
         // Note that this must be kept in sync with the implementation of `fmt_with_metadata`.
         let width = smart_display::padded_width_of!(username, " (", legal_name, ")",);
         Metadata::new(
             width,
             self,
             UserMetadata {
                 username,
                 legal_name,
             },
         )
     }
     // Use the now-generated metadata to format the value. Here we use the `pad_with_width`
     // method to use the alignment and desired width from the formatter.
     fn fmt_with_metadata(
         &self,
         f: &mut fmt::Formatter<'_>,
         metadata: Metadata<Self>,
     ) -> fmt::Result {
         f.pad_with_width(
             metadata.unpadded_width(),
             format_args!("{} ({})", metadata.username, metadata.legal_name),
         )
     }
 }
 let user = User { id: 42 };
 assert_eq!(user.to_string(), "jdoe (John Doe)");
 assert_eq!(format!("{user:>20}"), "     jdoe (John Doe)");
 ``` | 24289 | 
        
          | smart_display_impls.rs | Implementation of [`SmartDisplay`] for various types. | 7157 |