Releases: rodrimati1992/const_format_crates
0.2.34 release
This release makes the const_format::fmt
API usable on the latest stable (Rust 1.83.0), meaning that no crate feature requires the nightly Rust compiler anymore.
Changelog
0.2.34
Now all features that used to require nightly only require Rust 1.83.0
Added "rust_1_83"
feature that enables "rust_1_64"
feature
Changed "fmt"
feature to enable "rust_1_83"
feature
Made many macros forward compatible with inline const patterns(when the "rust_1_83"
feature is enabled):
concatc
concatcp
formatc
formatcp
map_ascii_case
str_get
str_index
str_repeat
str_replace
Added these macros:
str_splice_out
str_split_alt
0.2.33
Fixed Rust Analyzer style warning for assertion macros.
0.2.32
Breaking change: bumped Minimum Supported Rust Version to Rust 1.57 and changed crate's edition to 2021. This change is motivated by proc-macro2 increasing its MSRV to 1.56.
Changed these items that needed the "rust_1_51"
feature into always being enabled:
map_ascii_case
str_replace
0.2.31
Added a workaround for rustdoc bug (rust-lang/rust#112085).
0.2.29
Added lowercase hexadecimal formatting support.
Breaking: to add lowercase hexadecimal formatting, this crate changed the uppercase hexadecimal formatter from {:x}
to {:X}
0.2.27
Replacing existing features with these:
"rust_1_64"
: superceeding the soft-deprecated"more_str_macros"
feature."rust_1_51"
: superceeding the soft-deprecated"const_generics"
feature.
The new features are enabled by the feature they superceede.
Now the "fmt"
feature enables the "rust_1_64"
feature.
0.2.26 release
This release adds the str_split
macro, for splitting a constant string into a constant array of strings, requiring the nightly compiler and "more_str_macros"
crate feature.
Changelog
0.2.26
Added "more_str_macros"
crate feature.
Added str_split
macro, conditional on the "more_str_macros"
feature.
Added char
pattern support to str_replace
.
0.2.25
Fixed the clippy::double_parens
(false positive) warning by encoding the &'static str
type annotation some other way.
Made SplicedStr
, Formatting
, and NumberFormatting
derive Eq
.
0.2.24
Fixed error that caused formatting macros not to be usable in statement position.
0.2.23
Added type annotations to concatp
, concatcp
, formatc
and formatcp
macros to help IDEs infer the type.
0.2.22 release
This release adds the assertcp
, assertcp_eq
, and assertcp_ne
macros for compile-time assertions with formatting. Those macros are enabled with the "assercp" feature, and require Rust 1.57.0 to use.
Changelog
0.2.22
Added the assertcp
, assertcp_ne
, and assertcp_eq
macros under the "assertcp" feature.
Added const_eq
methods for PWrapper<&[char]>
and PWrapper<Option<char>>
Added the "assertcp" feature, which enables the assertcp*
macros.
Aliased "assert" crate feature to "assertc", and removed old name from docs to reduce confusion.
0.2.21 release
This release improves the assertion failure message for all the assertc*
macros.
Example
Code:
#![feature(const_mut_refs)]
use const_format::{StrWriter, assertc_ne, writec};
use const_format::utils::str_eq;
macro_rules! check_valid_pizza{
($user:expr, $topping:expr) => {
assertc_ne!(
$topping,
"pineapple",
"You can't put pineapple on pizza, {}",
$user,
);
}
}
check_valid_pizza!("John", "salami");
check_valid_pizza!("Dave", "sausage");
check_valid_pizza!("Bob", "pineapple");
Error message before:
error: any use of this value will cause an error
--> src/lib.rs:140:1
|
22 | check_valid_pizza!("Bob", "pineapple");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ exceeded interpreter step limit (see `#[const_eval_limit]`)
|
= note: `#[deny(const_err)]` on by default
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0080]: could not evaluate constant
--> /const_format/src/panicking.rs:32:5
|
32 | .
| ^ the evaluated program panicked at '
--------------------------------------------------------------------------------
module_path: rust_out
line: 22
assertion failed: LEFT != RIGHT
left: "pineapple"
right: "pineapple"
You can't put pineapple on pizza, Bob
--------------------------------------------------------------------------------
', /const_format/src/panicking.rs:31:1
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 2 previous errors
Error message now:
error[E0080]: evaluation of constant value failed
--> src/lib.rs:171:27
|
21 | check_valid_pizza!("Bob", "pineapple");
| ^^^^^^^^^^^ the evaluated program panicked at '
assertion failed: `(left != right)`
left: `"pineapple"`
right: `"pineapple"`
You can't put pineapple on pizza, Bob
', src/lib.rs:21:27
Changelog
0.2.21
Rewrote assertion macros to:
- Have more concise error messages
- Point to all their arguments when the assertion fails
- Resemble std error messages more
0.2.19 release
Added char
support, and deprecated strwriter_as_str
macro in favor of new StrWriter::as_str_alt
method.
Changelog
0.2.19
Added char
support to all formatting macros.
Added char
, &[char]
, and Option<char>
impls of FormatMarker trait, with debug formatting methods.
Added Formatter::{write_char, write_char_debug}
methods.
Added StrWriterMut::{as_str_alt, write_char, write_char_debug}
methods.
Added StrWriter::{as_str_alt, unsize}
methods.
Deprecated strwriter_as_str
macro, superceded by StrWriter::as_str_alt
.
Bumped the minimum required nightly version to 2021-07-05 due to use of const-stabilized core::str::from_utf8_unchecked
.
0.2.16 str method macros
This release adds macros that act like methods on &'static str
constants.
Changelog
0.2.16
Added these macros that act like str
methods:
str_get
str_index
str_repeat
str_replace
str_splice
Added the SplicedStr
struct.
0.2.15 release
This release adds a map_ascii_case
macro to convert the ascii parts of a &'static str
to a particular case.
Changelog
0.2.15
Added map_ascii_case
macro to convert the casing style of a &'static str
.
Added the Case
enum.
Fixed "constant_time_as_str" crate feature in newer nightlies, this will break code that uses the feature and hasn't updated the nightly compiler to a release post mid-july 2021.
0.2.14
This release makes more use of const generics, unconditionally using them when the "fmt" feature is enabled, and using them to generate less code in the concatcp
and formatcp
macros.
Changelog
0.2.14
Made the const_format::fmt
API that uses const generics unconditional, since const generics were stabilized in late 2020 and the fmt
API requires the nightly compiler.
Repurposed the "const_generics" feature to generate less code in the concatcp
and formatcp
macros, by moving some of their implementation to a function that uses const generics.
Fixed a few documentation issues.
0.2.13 release
This patch release removes the std
requirement when using the "assert" feature, and fixes a compilation error introduced in a recent Rust nightly release.
Changelog
0.2.13
Fixed the assertion macros not to use std::panic
, using core::panic
instead, since core::panic
changed to allow passing a non-literal &'static str
argument.
0.2.11
Fixed the documentation in case that the rust-lang/rust#80243 rustc pull request is merged(not so relevant anymore, now that it's a closed pull request).
0.2.8
Added minimal const generic support, for use in the added methods.
Added these methods to StrWriter<[u8; N]>
:
r
: for casting it to aStrWriter<[u8]>
as_mut
: for casting it to aStrWriterMut
.
Added "const_generics" and "nightly_const_generics" features.
Fixed hygiene bug in assertion macros.
Bumped version number to 0.2.8 .
0.2.6
Made the macros in const_format
usable when the crate is renamed.
Added a #[cdeb(crate = "foo")]
helper attribute to pass the path to const_format
to ConstDebug
, useful when reexporting the derive macro.
Documented that writec!(buff, "{foo}")
(where foo
is a local variable) works, and is equivelent to writec!(buff, "{}", foo)
.
0.2.5 release
This release features compile-time assert macros with formatting.
Changelog
Added the "assert" cargo feature,defining the assertc
/assertc_eq
/assertc_ne
macros for compile-time assertions with formatting.
Added custom formatting support in the const_format::fmt
-based formatting macros, by prefixing any argument with |identifier|
,accessing a Formatter
to format that argument however one wants.
Added concatc
macro for concatenating std/user-defined types into a &'static str
constant.
Added const_format::Result
alias for std::result::Result<(), const_format::Error>
.
Added const_format::fmt::ToResult
type for converting ()
and const_format::Result
to const_format::Result
.
Added Pwrapper::const_eq
methods for comparing many std types in the assertc_eq
/assertc_ne
macros.
Added Pwrapper::const_display_fmt
methods for NonZero*
types.
Added support for passing concat!(....)
as the format string.