For example, I want struct S to have a name_count field only when testing, so I can manipulate last_name to validate some properties about name_count in tests.
pub struct S {
last_name: String,
#[cfg(test)] {
// This field only exists in tests
name_count: HashMap<String, i32>,
}
}
impl S {
fn record_last_name(&mut self, name: String) {
self.last_name = name;
if cfg!(test) {
// Increase self.name_count[self.last_name]
}
}
}
#[test]
fn test_last_name_count() {
let mut s = S {};
...
// assert some properties about name_count
}
However, this code can't compile, seems Rust don't support a #[cfg(test)] inside definition of a struct, so I wonder how can I do that.