#shim #properties

com-shim

Create safe Rusty shims for COM classes

15 releases

new 0.4.2 Mar 28, 2025
0.4.1 Mar 28, 2025
0.3.6 Sep 26, 2023
0.3.5 Aug 31, 2023
0.1.2 Aug 11, 2023

#92 in Windows APIs

33 downloads per month
Used in sap-scripting

MIT license

18KB
424 lines

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! {
    class GuiComponent {
        Text: String,
    }
}

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

com_shim! {
    class 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.

Dependencies

~122MB
~2M SLoC