use omitty::omitty;
#[omitty]
mod api {
#[derive(omitty::Omittable, Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct User {
pub id: u64,
pub name: String,
pub secret_token: String,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct PublicUser {
pub user: Omit!(User, secret_token),
}
}
fn main() {
let user = api::User {
id: 42,
name: "Alice".to_string(),
secret_token: "super_secret".to_string(),
};
let public = api::PublicUser { user: user.into() };
let json = serde_json::to_string(&public.user).unwrap();
println!("JSON: {}", json);
assert_eq!(public.user.id, 42);
assert_eq!(public.user.name, "Alice");
}