#com-interface #class #component #object #define #methods #i32

intercom

用于编写可见 COM 的 Rust 组件的实用工具

4 个版本 (重大变更)

0.4.0 2022 年 7 月 2 日
0.3.0 2019 年 10 月 1 日
0.2.0 2017 年 12 月 10 日
0.1.0 2017 年 11 月 5 日

#2093Rust 模式

每月 40 次下载

MIT 许可证

195KB
5K SLoC

定义与 COM 协议兼容的 Rust 组件的工具。

Intercom 提供了属性来自动派生与 extern 兼容的函数,用于 Rust 方法。这些函数与 COM 二进制接口标准兼容,允许它们从任何支持 COM 的语言中使用。

示例

一个将计算器类型公开为 COM 对象的基本示例。

use intercom::{com_library, com_class, com_interface, ComResult};

// Define COM classes to expose from this library.
com_library!(class Calculator);

// Define the COM class and the interfaces it implements.
#[com_class(Self)]
#[derive(Default)]
struct Calculator;

// Define the implementation for the class. The COM interface is defined
// implicitly by the `impl`.
#[com_interface]
impl Calculator {
    fn add(&self, a: i32, b: i32) -> ComResult<i32> { Ok(a + b) }
    fn sub(&self, a: i32, b: i32) -> ComResult<i32> { Ok(a - b) }
}

上述库可以从 C# 以以下方式使用。

void Main()
{
    var calculator = new CalculatorLib.Calculator();
    Console.WriteLine( calculator.Add( 1, 2 ) );
}

依赖项

~2.4–3.5MB
~71K SLoC