27 releases

Uses old Rust 2015

0.8.0 Jun 6, 2022
0.7.1 Dec 17, 2021
0.7.0 Oct 26, 2021
0.6.0 Nov 16, 2019
0.0.9 Mar 27, 2018

#680 in Email

Download history 94/week @ 2025-12-07 146/week @ 2025-12-14 94/week @ 2025-12-21 67/week @ 2025-12-28 193/week @ 2026-01-04 161/week @ 2026-01-11 144/week @ 2026-01-18 141/week @ 2026-01-25 168/week @ 2026-02-01 101/week @ 2026-02-08 153/week @ 2026-02-15 135/week @ 2026-02-22 185/week @ 2026-03-01 211/week @ 2026-03-08 171/week @ 2026-03-15 100/week @ 2026-03-22

685 downloads per month
Used in 12 crates (8 directly)

GPL-3.0+

145KB
2K SLoC

notmuch-rs

This is not much more than a wrapper for the notmuch C api.

Build Status Crate version Download statistics License Join the chat at https://gitter.im/notmuch-rs/Lobby

Building

notmuch-rs expects libnotmuch development files to be installed on your system.

Using

Add this to your Cargo.toml:

[dependencies]
notmuch = "*"

and this to your crate root:

extern crate notmuch;

Example

extern crate notmuch;

fn main() {
    let mut mail_path = std::env::home_dir().unwrap();
    mail_path.push(".mail");

    let mut config_path = std::env::home_dir().unwrap();
    config_path.push(".config/custom-notmuch-config-path");

    let db = notmuch::Database::open_with_config(
        &mail_path,
        notmuch::DatabaseMode::ReadOnly,
        &config_path,
        None,
    )
    .unwrap();
    let query = db.create_query("").unwrap();
    let mut threads = query.search_threads().unwrap();

    for thread in threads {
        println!("thread {:?} {:?}", thread.subject(), thread.authors());
    }
}

Concurrency

Notmuch makes no claims regarding thread safety. It does not seem to use any thread locals, but I did not spot any locks. So, as far as I am concerned, it is not thread safe. Hence, all pointers are internally tracked with Rcs.

Acknowledgements

notmuch-rs started out from the following projects:

Any contributions are welcome!

Dependencies

~2MB
~49K SLoC