A few days later, but keep in mind that if you write your tests in the module you declare your structs, you'll have access to its "private" (non-pub) members since those are technically module scoped (default scope is pub(self)).
pub struct Cat {
name: String,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn create_cat() {
let cat = Cat {
name: "fluffy".into(),
};
}
}