Field visibility - The bindgen User Guide (original) (raw)
The bindgen User Guide
Making fields private
Fields can be made private for various reasons. You may wish to enforce some invariant on the fields of a structure, which cannot be achieved if the field is public and can be set by any code. For example, you may wish to ensure that a pointer always points to something appropriate.
Annotation
struct OneFieldPrivate {
/** Null-terminated, static string. <div rustbindgen private> */
const char *s;
bool b;
};
/** <div rustbindgen private> */
struct MostFieldsPrivate {
int a;
bool b;
/** <div rustbindgen private="false"></div> */
char c;
};
Then in Rust:
#![allow(unused)]
fn main() {
#[repr(C)]
pub struct OneFieldPrivate {
s: *const ::std::os::raw::c_char,
pub b: bool,
}
impl OneFieldPrivate {
pub fn new(s: &'static std::ffi::CStr, b: bool) -> Self {
OneFieldPrivate { s: s.as_ptr(), b }
}
}
}