Я использую цитату для автоматического создания кода для использования во встроенной системе. Часть автоматически сгенерированного кода содержит числа, которые было бы легче читать в шестнадцатеричном виде.
Вот пример.
use quote::quote;
fn main() {
let value = 0x1005;
let tokens = quote! {
let x = #value;
}.to_string();
println!("{}", tokens);
}
Это печатает
let x = 4101u16 ;
но я бы хотел, чтобы это было
let x = 0x1005u16 ;
Если вы проанализируете его из строки, он останется таким, каким вы его набрали:
use std::str::FromStr;
use quote::quote;
fn main() {
let value = 0x1005;
let value = proc_macro2::Literal::from_str(&format!("0x{value:x}i32")).unwrap();
let tokens = quote! {
let x = #value;
}.to_string();
println!("{tokens}");
}