com-shim 0.4.3

Create safe Rusty shims for COM classes.
Documentation

COM Shim

Easily write interfaces that can read from COM, without worrying about the underlying functionality (unless you want to!).

Example

use com_shim::com_shim;

com_shim! {
    struct GuiComponent {
        Text: String,
    }
}

com_shim! {
    struct GuiVComponent {
        fn SetFocus(),
    }
}

com_shim! {
    struct GuiTextField: GuiVComponent + GuiComponent {
        CaretPosition: i64,
        DisplayedText: String,
        mut Highlighted: bool,

        fn GetListProperty(String) -> GuiComponent,
    }
}

fn main() {
    // The following call now would trigger a COM call:
    // let a: GuiTextField;
    // a.get_list_property("property");
}

You can also see it implemented in the sap-scripting package.