No meu gerador de código, preciso gerar este código sem trazer std::fmt::Write
trait para o escopo:
let mut s = String::new();
let _ = write!(s, "Hello, world!");
Sei que é possível usar sintaxe totalmente qualificada para funções, mas não tenho certeza se as macros permitem isso?
A
write
macro é extremamente simples e não contém nenhum recurso especial:Isso significa que seu código se expande para isto:
E você pode então substituir isso pela sintaxe da função associada:
Se o tipo de
S
não for inferido, você pode usar a sintaxe totalmente qualificada:Note que a
write
macro funciona comstd::fmt::Write
oustd::io::Write
(ou qualquerwrite_fmt
método no escopo para o tipo dado). Você precisa decidir qual usar, assim como faria ao usar a macro.Lembre-se também de que você pode colocar
use
itens ao lado de expressões, então provavelmente não precisará fazer nada do que foi mencionado acima: