diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-07 05:48:42 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-07 05:48:42 +0000 |
commit | cec1877e180393eba0f6ddb0cf97bf3a791631c7 (patch) | |
tree | 47b4dac2a9dd9a40c30c251b4d4a72d7ccf77e9f /vendor/tinystr/src/databake.rs | |
parent | Adding debian version 1.74.1+dfsg1-1. (diff) | |
download | rustc-cec1877e180393eba0f6ddb0cf97bf3a791631c7.tar.xz rustc-cec1877e180393eba0f6ddb0cf97bf3a791631c7.zip |
Merging upstream version 1.75.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/tinystr/src/databake.rs')
-rw-r--r-- | vendor/tinystr/src/databake.rs | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/vendor/tinystr/src/databake.rs b/vendor/tinystr/src/databake.rs index e10c194f8..0b127f97c 100644 --- a/vendor/tinystr/src/databake.rs +++ b/vendor/tinystr/src/databake.rs @@ -3,6 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::TinyAsciiStr; +use crate::UnvalidatedTinyAsciiStr; use databake::*; impl<const N: usize> Bake for TinyAsciiStr<N> { @@ -10,7 +11,27 @@ impl<const N: usize> Bake for TinyAsciiStr<N> { env.insert("tinystr"); let string = self.as_str(); quote! { - ::tinystr::tinystr!(#N, #string) + tinystr::tinystr!(#N, #string) + } + } +} + +impl<const N: usize> databake::Bake for UnvalidatedTinyAsciiStr<N> { + fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream { + match self.try_into_tinystr() { + Ok(tiny) => { + let tiny = tiny.bake(env); + databake::quote! { + #tiny.to_unvalidated() + } + } + Err(_) => { + let bytes = self.0.bake(env); + env.insert("tinystr"); + databake::quote! { + tinystr::UnvalidatedTinyAsciiStr::from_bytes_unchecked(*#bytes) + } + } } } } @@ -19,3 +40,9 @@ impl<const N: usize> Bake for TinyAsciiStr<N> { fn test() { test_bake!(TinyAsciiStr<10>, const: crate::tinystr!(10usize, "foo"), tinystr); } + +#[test] +fn test_unvalidated() { + test_bake!(UnvalidatedTinyAsciiStr<10>, const: crate::tinystr!(10usize, "foo").to_unvalidated(), tinystr); + test_bake!(UnvalidatedTinyAsciiStr<3>, const: crate::UnvalidatedTinyAsciiStr::from_bytes_unchecked(*b"AB\xCD"), tinystr); +} |