pub struct ComputeStrLength { /* private fields */ }
Available on crate feature fmt only.
Expand description

For computing how long a formatted string would be.

This is what the formatc macro uses to precalculate the length of its returned &str.

Example

#![feature(const_mut_refs)]

use const_format::fmt::{ComputeStrLength, Error, Formatter, FormattingFlags, StrWriter};
use const_format::{try_, writec, unwrap};

const fn write_sum(mut f: Formatter<'_>) -> Result<(), Error> {
    let l = 7u8;
    let r = 8u8;
    writec!(f, "{} + {} = {}", l, r, l + r)
}

const LEN: usize = {
    let mut computer = ComputeStrLength::new();
    unwrap!(write_sum(computer.make_formatter(FormattingFlags::NEW)));
    computer.len()
};

// The type annotation coerces a `&mut StrWriter<[u8; LEN]>`
// to a `&mut StrWriter<[u8]>` (the type parameter defaults to `[u8]`)
let writer: &mut StrWriter = &mut StrWriter::new([0; LEN]);

write_sum(writer.make_formatter(FormattingFlags::NEW)).unwrap();

assert_eq!(writer.as_str(), "7 + 8 = 15");
assert_eq!(writer.len(), LEN);
assert_eq!(writer.capacity(), LEN);

Implementations

Constructs a ComputeStrLength of length 0.

Constructs a Formatter, which instead of writing to a buffer it adds the computed length into this.

Adds len to the calculated length.

The length of the string when formatted.

Whether the length of the computed string is zero.

For borrowing this mutably in macros,just takes and returns a &mut Self.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.