Object
Object é muito fácil de confundir com o uso de Class. Ao contrário de Class, você não pode atribuir function ou method a um Object.
lib.rs
#[napi(object)]
pub struct Pet {
pub name: String,
pub kind: u32,
}Qualquer bloco impl desta struct não afetará o Object JavaScript.
⚠️
Se você quiser converter uma struct Rust em um Object JavaScript usando o
atributo #[napi(object)], você precisa marcar todos os seus campos como
pub.
Uma vez que a struct é marcada como #[napi(object)], você pode usá-la como tipo de argumento de função ou tipo de retorno.
lib.rs
#[napi(object)]
pub struct Pet {
pub name: String,
pub kind: u32,
}
#[napi]
fn print_pet(pet: Pet) {
println!("{}", pet.name);
}
#[napi]
fn create_cat() -> Pet {
Pet {
name: "cat".to_string(),
kind: 1,
}
}⚠️
O objeto JavaScript passado para ou retornado de Rust é clonado. Isso
significa que qualquer mutação no Object do JavaScript não afetará a
struct Rust original. E qualquer mutação na struct Rust também não afetará
o Object JavaScript.