Disabling APIs

(Supported by all backends)

Any type or method can be "disabled" by applying the disable attribute:

#![allow(unused)]
fn main() {
#[diplomat::bridge]
mod ffi {
    #[diplomat::opaque]
    #[diplomat::attr(cpp, disable)]
    struct Foo;


    impl Foo {
        #[diplomat::attr(js, disable)]
        pub fn bar() {}
        pub fn baz() {}
    }
}
}

Here, the class Foo will not show up in the C++ backend. It will in the JS backend, however it will not have the function bar().

Currently enum variants cannot be disabled, however this is technically feasible for input-only enums and could be added if people request. It is also not possible to disable struct fields.