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

#852 in Database interfaces

Download history 394/week @ 2024-06-16 261/week @ 2024-06-23 292/week @ 2024-06-30 374/week @ 2024-07-07 416/week @ 2024-07-14 354/week @ 2024-07-21 332/week @ 2024-07-28 243/week @ 2024-08-04 454/week @ 2024-08-11 611/week @ 2024-08-18 653/week @ 2024-08-25 818/week @ 2024-09-01 714/week @ 2024-09-08 722/week @ 2024-09-15 728/week @ 2024-09-22 723/week @ 2024-09-29

2,997 downloads per month
Used in 10 crates (7 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
~44K SLoC