From a654d13eefa846b9dc7fcdc1ccf5af43fc33834e Mon Sep 17 00:00:00 2001 From: Hugo van der Wijst Date: Tue, 22 Jan 2019 15:23:16 -0800 Subject: [PATCH] Seed RNG with package name and prepend string to full random name. --- macros/src/codegen.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/macros/src/codegen.rs b/macros/src/codegen.rs index 9eb875c770..9fc0e271c4 100644 --- a/macros/src/codegen.rs +++ b/macros/src/codegen.rs @@ -1998,7 +1998,12 @@ struct IdentGenerator { impl IdentGenerator { fn new() -> IdentGenerator { - IdentGenerator { rng: rand::rngs::SmallRng::seed_from_u64(0) } + let crate_name = env!("CARGO_PKG_NAME"); + let seed = [0u8; 16]; + for (i, b) in crate_name.bytes().enumerate() { + seed[i%seed.len()].wrapping_add(b); + } + IdentGenerator { rng: rand::rngs::SmallRng::from_seed(seed) } } fn mk_ident(&mut self, name: Option<&str>) -> Ident { @@ -2007,8 +2012,9 @@ impl IdentGenerator { n = 4; format!("{}_", name) } else { + let crate_name = env!("CARGO_PKG_NAME").replace("-", "_").to_lowercase(); n = 16; - String::new() + format!("{}__internal__", crate_name) }; for i in 0..n {