# outlook-mapi
This crate implements Rust bindings for the [Outlook MAPI](https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/outlook-mapi-reference) COM APIs. The bindings are generated by the [Windows](https://github.com/microsoft/windows-rs) crate in [outlook-mapi-sys](https://crates.io/crates/outlook-mapi-sys).
## Getting Started
Include a reference to `outlook-mapi` in your `Cargo.toml`:
```toml
[dependencies]
outlook-mapi = "0.1.0"
```
See the [docs](https://docs.rs/outlook-mapi/) for more details.
## Safety
Most of the bindings are re-exported transparently from `outlook-mapi-sys`, and they are still marked `unsafe`. Unlike typical idiomatic Rust crates wrapped around a `-sys` crate, the emphasis of this crate is on writing as little manual wrapper code as possible. This way, `outlook-mapi` can project 100% of the Outlook MAPI COM API, but the downside is you will need to wrap most uses in an `unsafe` block or function.
## Convenience Types
_NYI: This crate should implement helpers and safe wrappers for the most commonly used COM interfaces and MAPI structs._
## Windows Metadata
The Windows crate requires a Windows Metadata (`winmd`) file describing the API. The one used in this crate was generated with the [mapi-win32md](https://github.com/wravery/mapi-win32md) project. This crate needs it to use the `#[implement]` macro from the Windows crate.