From cec1877e180393eba0f6ddb0cf97bf3a791631c7 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 7 Jun 2024 07:48:42 +0200 Subject: Merging upstream version 1.75.0+dfsg1. Signed-off-by: Daniel Baumann --- vendor/tinystr/src/databake.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'vendor/tinystr/src/databake.rs') 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 Bake for TinyAsciiStr { @@ -10,7 +11,27 @@ impl Bake for TinyAsciiStr { env.insert("tinystr"); let string = self.as_str(); quote! { - ::tinystr::tinystr!(#N, #string) + tinystr::tinystr!(#N, #string) + } + } +} + +impl databake::Bake for UnvalidatedTinyAsciiStr { + 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 Bake for TinyAsciiStr { 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); +} -- cgit v1.2.3