31个版本 (13个破坏性)
0.14.5 | 2024年8月1日 |
---|---|
0.14.4 | 2024年7月23日 |
0.14.1 | 2024年6月12日 |
0.13.0 | 2024年3月21日 |
#46 in Windows API
483 每月下载量
2.5MB
48K SLoC
outlook-mapi
此包实现了对Outlook MAPI COM API的Rust绑定。绑定由Windows包在outlook-mapi-sys中生成。
入门
在您的Cargo.toml
中包含对最新版outlook-mapi
的引用。
有关更多详细信息,请参阅文档。
安全性
大多数绑定都透明地从outlook-mapi-sys
导出为outlook-mapi::sys
模块,并且它们仍然被标记为unsafe
。与典型围绕-sys
包的Rust包不同,此包的重点是编写尽可能少的手动包装代码。这样,outlook-mapi
可以投影100%的Outlook MAPI COM API,但缺点是您需要将大多数使用封装在unsafe
块或函数中。
便利类型
此包还添加了几个Rust结构和宏定义,以使处理MAPI类型更容易,并在使用原始MAPI API时提供一些生命周期保证。例如,C++中MAPI调用的典型序列如下所示
MAPIInitialize(...);
// Logon with a new session.
MAPILogonEx(..., &session);
// Do stuff with the session...
// This should be the last reference to the session!
session->Release();
MAPIUninitialize();
便利类型确保您有一对匹配的MAPIInitialize
和MAPIUninitialize
调用,并且它们至少与session
的使用一样长。它们还限制您可以传递给这些调用中的每个调用的标志
println!("Initializing MAPI...");
let initialized = Initialize::new(Default::default()).expect("failed to initialize MAPI");
println!("Trying to logon to the default profile...");
let logon = Logon::new(
initialized,
Default::default(),
None,
None,
LogonFlags {
extended: true,
unicode: true,
logon_ui: true,
use_default: true,
..Default::default()
},
)
.expect("should be able to logon to the default MAPI profile");
println!("Success!");
依赖项
~128MB
~2M SLoC