Adapter development
Contract
Adapters implement one or both traits from mxr-core:
MailSyncProviderMailSendProvider
Keep provider-specific logic inside the adapter crate. Map native provider state into the mxr internal model instead of leaking provider concepts upward.
Recommended workflow
- Start from
examples/adapter-skeleton/. - Depend on
mxr-core. - Implement the sync/send traits.
- Use
mxr-provider-fake::conformancein your test suite. - Compare your mapping against the fake provider and the first-party IMAP adapter.
Design rules
- Preserve provider IDs needed for round-trips.
- Normalize labels/folders/flags into mxr types.
- Keep auth and transport details inside the adapter crate.
- Report unsupported capabilities honestly.
References
crates/provider-fake/crates/provider-imap/examples/adapter-skeleton/site/src/content/docs/reference/conformance.md