update to 2018 edition
parent
ac0e2cbe44
commit
1c7aa0ec9c
|
@ -2,6 +2,7 @@
|
||||||
name = "meli"
|
name = "meli"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
authors = ["Manos Pitsidianakis <el13635@mail.ntua.gr>"]
|
authors = ["Manos Pitsidianakis <el13635@mail.ntua.gr>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "meli"
|
name = "meli"
|
||||||
|
|
|
@ -1,43 +1,62 @@
|
||||||
#![feature(test)]
|
//#![feature(test)]
|
||||||
extern crate melib;
|
//use melib::conf::AccountSettings;
|
||||||
use melib::conf::Folder;
|
//use melib::mailbox::backends::maildir::*;
|
||||||
use melib::mailbox::backends::maildir::*;
|
//
|
||||||
|
//extern crate test;
|
||||||
extern crate test;
|
//use self::test::Bencher;
|
||||||
use self::test::Bencher;
|
//
|
||||||
|
//#[bench]
|
||||||
#[bench]
|
//fn bench_threads_1(b: &mut Bencher) {
|
||||||
fn bench_threads_1(b: &mut Bencher) {
|
// b.iter(|| {
|
||||||
b.iter(|| {
|
// let folder = Folder::new(
|
||||||
let folder = Folder::new(String::from(""), String::from(""), vec![]);
|
// String::from(""),
|
||||||
MaildirType::new("").multicore(1, &folder)
|
// String::from(""),
|
||||||
});
|
// vec![],
|
||||||
}
|
// );
|
||||||
#[bench]
|
// MaildirType::new("").multicore(1, &folder)
|
||||||
fn bench_threads_2(b: &mut Bencher) {
|
// });
|
||||||
b.iter(|| {
|
//}
|
||||||
let folder = Folder::new(String::from(""), String::from(""), vec![]);
|
//#[bench]
|
||||||
MaildirType::new("").multicore(2, &folder)
|
//fn bench_threads_2(b: &mut Bencher) {
|
||||||
});
|
// b.iter(|| {
|
||||||
}
|
// let folder = Folder::new(
|
||||||
#[bench]
|
// String::from(""),
|
||||||
fn bench_threads_3(b: &mut Bencher) {
|
// String::from(""),
|
||||||
b.iter(|| {
|
// vec![],
|
||||||
let folder = Folder::new(String::from(""), String::from(""), vec![]);
|
// );
|
||||||
MaildirType::new("").multicore(3, &folder)
|
// MaildirType::new("").multicore(2, &folder)
|
||||||
});
|
// });
|
||||||
}
|
//}
|
||||||
#[bench]
|
//#[bench]
|
||||||
fn bench_threads_4(b: &mut Bencher) {
|
//fn bench_threads_3(b: &mut Bencher) {
|
||||||
b.iter(|| {
|
// b.iter(|| {
|
||||||
let folder = Folder::new(String::from(""), String::from(""), vec![]);
|
// let folder = Folder::new(
|
||||||
MaildirType::new("").multicore(4, &folder)
|
// String::from(""),
|
||||||
});
|
// String::from(""),
|
||||||
}
|
// vec![],
|
||||||
#[bench]
|
// );
|
||||||
fn bench_threads_6(b: &mut Bencher) {
|
// MaildirType::new("").multicore(3, &folder)
|
||||||
b.iter(|| {
|
// });
|
||||||
let folder = Folder::new(String::from(""), String::from(""), vec![]);
|
//}
|
||||||
MaildirType::new("").multicore(6, &folder)
|
//#[bench]
|
||||||
});
|
//fn bench_threads_4(b: &mut Bencher) {
|
||||||
}
|
// b.iter(|| {
|
||||||
|
// let folder = Folder::new(
|
||||||
|
// String::from(""),
|
||||||
|
// String::from(""),
|
||||||
|
// vec![],
|
||||||
|
// );
|
||||||
|
// MaildirType::new("").multicore(4, &folder)
|
||||||
|
// });
|
||||||
|
//}
|
||||||
|
//#[bench]
|
||||||
|
//fn bench_threads_6(b: &mut Bencher) {
|
||||||
|
// b.iter(|| {
|
||||||
|
// let folder = Folder::new(
|
||||||
|
// String::from(""),
|
||||||
|
// String::from(""),
|
||||||
|
// vec![],
|
||||||
|
// );
|
||||||
|
// MaildirType::new("").multicore(6, &folder)
|
||||||
|
// });
|
||||||
|
//}
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
#![feature(test)]
|
//#![feature(test)]
|
||||||
extern crate melib;
|
//extern crate melib;
|
||||||
|
//
|
||||||
use melib::mailbox::backends::maildir::MaildirOp;
|
//use melib::mailbox::backends::maildir::MaildirOp;
|
||||||
use melib::mailbox::backends::BackendOpGenerator;
|
//use melib::mailbox::backends::BackendOpGenerator;
|
||||||
use melib::mailbox::email::Envelope;
|
//use melib::mailbox::email::Envelope;
|
||||||
|
//
|
||||||
extern crate test;
|
//extern crate test;
|
||||||
use self::test::Bencher;
|
//use self::test::Bencher;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#[bench]
|
#[bench]
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "melib"
|
name = "melib"
|
||||||
version = "0.0.1" #:version
|
version = "0.0.1" #:version
|
||||||
|
edition = "2018"
|
||||||
authors = []
|
authors = []
|
||||||
workspace = ".."
|
workspace = ".."
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
* along with meli. If not, see <http://www.gnu.org/licenses/>.
|
* along with meli. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
pub mod addressbook;
|
pub mod addressbook;
|
||||||
pub mod async;
|
pub mod async_workers;
|
||||||
pub mod conf;
|
pub mod conf;
|
||||||
pub mod error;
|
pub mod error;
|
||||||
pub mod mailbox;
|
pub mod mailbox;
|
||||||
|
|
|
@ -29,10 +29,10 @@ pub mod email;
|
||||||
pub use self::email::*;
|
pub use self::email::*;
|
||||||
/* Mail backends. Currently only maildir is supported */
|
/* Mail backends. Currently only maildir is supported */
|
||||||
pub mod backends;
|
pub mod backends;
|
||||||
use error::Result;
|
use crate::error::Result;
|
||||||
use mailbox::backends::Folder;
|
use self::backends::Folder;
|
||||||
pub mod thread;
|
pub mod thread;
|
||||||
pub use mailbox::thread::{SortField, SortOrder, ThreadNode, Threads};
|
pub use self::thread::{SortField, SortOrder, ThreadNode, Threads};
|
||||||
|
|
||||||
mod collection;
|
mod collection;
|
||||||
pub use self::collection::*;
|
pub use self::collection::*;
|
||||||
|
|
|
@ -22,19 +22,18 @@ pub mod imap;
|
||||||
pub mod maildir;
|
pub mod maildir;
|
||||||
pub mod mbox;
|
pub mod mbox;
|
||||||
|
|
||||||
use async::*;
|
use crate::async_workers::*;
|
||||||
use conf::AccountSettings;
|
use crate::conf::AccountSettings;
|
||||||
use error::Result;
|
use crate::error::Result;
|
||||||
//use mailbox::backends::imap::ImapType;
|
//use mailbox::backends::imap::ImapType;
|
||||||
//use mailbox::backends::mbox::MboxType;
|
//use mailbox::backends::mbox::MboxType;
|
||||||
use mailbox::backends::maildir::MaildirType;
|
use self::maildir::MaildirType;
|
||||||
use mailbox::email::{Envelope, EnvelopeHash, Flag};
|
use super::email::{Envelope, EnvelopeHash, Flag};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
|
||||||
extern crate fnv;
|
use fnv::FnvHashMap;
|
||||||
use self::fnv::FnvHashMap;
|
|
||||||
use std;
|
use std;
|
||||||
|
|
||||||
pub type BackendCreator = Box<Fn(&AccountSettings) -> Box<MailBackend>>;
|
pub type BackendCreator = Box<Fn(&AccountSettings) -> Box<MailBackend>>;
|
||||||
|
@ -209,7 +208,7 @@ pub trait BackendOp: ::std::fmt::Debug + ::std::marker::Send {
|
||||||
fn fetch_headers(&mut self) -> Result<&[u8]>;
|
fn fetch_headers(&mut self) -> Result<&[u8]>;
|
||||||
fn fetch_body(&mut self) -> Result<&[u8]>;
|
fn fetch_body(&mut self) -> Result<&[u8]>;
|
||||||
fn fetch_flags(&self) -> Flag;
|
fn fetch_flags(&self) -> Flag;
|
||||||
fn set_flag(&mut self, &mut Envelope, Flag) -> Result<()>;
|
fn set_flag(&mut self, envelope: &mut Envelope, flag: Flag) -> Result<()>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// `BackendOpGenerator` is a wrapper for a closure that returns a `BackendOp` object
|
/// `BackendOpGenerator` is a wrapper for a closure that returns a `BackendOp` object
|
||||||
|
@ -238,7 +237,7 @@ impl fmt::Debug for BackendOpGenerator {
|
||||||
pub trait BackendFolder: Debug {
|
pub trait BackendFolder: Debug {
|
||||||
fn hash(&self) -> FolderHash;
|
fn hash(&self) -> FolderHash;
|
||||||
fn name(&self) -> &str;
|
fn name(&self) -> &str;
|
||||||
fn change_name(&mut self, &str);
|
fn change_name(&mut self, new_name: &str);
|
||||||
fn clone(&self) -> Folder;
|
fn clone(&self) -> Folder;
|
||||||
fn children(&self) -> &Vec<usize>;
|
fn children(&self) -> &Vec<usize>;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,15 +19,13 @@
|
||||||
* along with meli. If not, see <http://www.gnu.org/licenses/>.
|
* along with meli. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern crate fnv;
|
|
||||||
|
|
||||||
mod backend;
|
mod backend;
|
||||||
pub use self::backend::*;
|
pub use self::backend::*;
|
||||||
|
|
||||||
use error::{MeliError, Result};
|
use crate::error::{MeliError, Result};
|
||||||
use mailbox::backends::*;
|
use crate::mailbox::backends::*;
|
||||||
use mailbox::email::parser;
|
use crate::mailbox::email::parser;
|
||||||
use mailbox::email::{Envelope, Flag};
|
use crate::mailbox::email::{Envelope, Flag};
|
||||||
|
|
||||||
use memmap::{Mmap, Protection};
|
use memmap::{Mmap, Protection};
|
||||||
use std::collections::hash_map::DefaultHasher;
|
use std::collections::hash_map::DefaultHasher;
|
||||||
|
|
|
@ -19,22 +19,17 @@
|
||||||
* along with meli. If not, see <http://www.gnu.org/licenses/>.
|
* along with meli. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern crate bincode;
|
|
||||||
extern crate fnv;
|
|
||||||
extern crate notify;
|
|
||||||
extern crate xdg;
|
|
||||||
|
|
||||||
use super::{MaildirFolder, MaildirOp};
|
use super::{MaildirFolder, MaildirOp};
|
||||||
use async::*;
|
use crate::async_workers::*;
|
||||||
use conf::AccountSettings;
|
use crate::conf::AccountSettings;
|
||||||
use error::{MeliError, Result};
|
use crate::error::{MeliError, Result};
|
||||||
use mailbox::backends::{
|
use super::{
|
||||||
BackendFolder, BackendOp, Folder, FolderHash, MailBackend, RefreshEvent, RefreshEventConsumer,
|
BackendFolder, BackendOp, Folder, FolderHash, MailBackend, RefreshEvent, RefreshEventConsumer,
|
||||||
RefreshEventKind::*,
|
RefreshEventKind::*,
|
||||||
};
|
};
|
||||||
use mailbox::email::{Envelope, EnvelopeHash};
|
use crate::mailbox::email::{Envelope, EnvelopeHash};
|
||||||
|
|
||||||
use self::notify::{watcher, DebouncedEvent, RecursiveMode, Watcher};
|
use notify::{watcher, DebouncedEvent, RecursiveMode, Watcher};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
use std::sync::mpsc::channel;
|
use std::sync::mpsc::channel;
|
||||||
|
@ -42,8 +37,7 @@ use std::sync::mpsc::channel;
|
||||||
//use std::sync::mpsc::SyncSender;
|
//use std::sync::mpsc::SyncSender;
|
||||||
//use std::time::Duration;
|
//use std::time::Duration;
|
||||||
use std::thread;
|
use std::thread;
|
||||||
extern crate crossbeam;
|
use fnv::{FnvHashMap, FnvHasher};
|
||||||
use self::fnv::{FnvHashMap, FnvHasher};
|
|
||||||
use std::collections::hash_map::DefaultHasher;
|
use std::collections::hash_map::DefaultHasher;
|
||||||
use std::ffi::OsStr;
|
use std::ffi::OsStr;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
|
@ -1,14 +1,10 @@
|
||||||
extern crate bincode;
|
|
||||||
extern crate xdg;
|
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::ops::{Deref, DerefMut};
|
use std::ops::{Deref, DerefMut};
|
||||||
|
|
||||||
extern crate fnv;
|
use fnv::FnvHashMap;
|
||||||
use self::fnv::FnvHashMap;
|
|
||||||
|
|
||||||
/// `Mailbox` represents a folder of mail.
|
/// `Mailbox` represents a folder of mail.
|
||||||
#[derive(Debug, Clone, Default)]
|
#[derive(Debug, Clone, Default)]
|
||||||
|
|
|
@ -28,12 +28,12 @@ pub use self::compose::*;
|
||||||
|
|
||||||
mod attachment_types;
|
mod attachment_types;
|
||||||
pub mod attachments;
|
pub mod attachments;
|
||||||
pub use self::attachments::*;
|
pub use crate::attachments::*;
|
||||||
pub mod parser;
|
pub mod parser;
|
||||||
use parser::BytesExt;
|
use parser::BytesExt;
|
||||||
|
|
||||||
use error::{MeliError, Result};
|
use crate::error::{MeliError, Result};
|
||||||
use mailbox::backends::BackendOp;
|
use super::backends::BackendOp;
|
||||||
|
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use mailbox::email::attachments::Attachment;
|
use crate::mailbox::email::attachments::Attachment;
|
||||||
use mailbox::email::parser::BytesExt;
|
use crate::mailbox::email::parser::BytesExt;
|
||||||
use std::fmt::{Display, Formatter, Result as FmtResult};
|
use std::fmt::{Display, Formatter, Result as FmtResult};
|
||||||
use std::str;
|
use std::str;
|
||||||
|
|
||||||
|
|
|
@ -19,13 +19,13 @@
|
||||||
* along with meli. If not, see <http://www.gnu.org/licenses/>.
|
* along with meli. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
use data_encoding::BASE64_MIME;
|
use data_encoding::BASE64_MIME;
|
||||||
use mailbox::email::parser;
|
use crate::mailbox::email::parser;
|
||||||
use mailbox::email::parser::BytesExt;
|
use crate::mailbox::email::parser::BytesExt;
|
||||||
use mailbox::email::EnvelopeWrapper;
|
use crate::mailbox::email::EnvelopeWrapper;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::str;
|
use std::str;
|
||||||
|
|
||||||
pub use mailbox::email::attachment_types::*;
|
pub use crate::mailbox::email::attachment_types::*;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use super::*;
|
use super::*;
|
||||||
use chrono::{DateTime, Local};
|
use chrono::{DateTime, Local};
|
||||||
use data_encoding::BASE64_MIME;
|
use data_encoding::BASE64_MIME;
|
||||||
use mailbox::backends::BackendOp;
|
use crate::mailbox::backends::BackendOp;
|
||||||
use std::str;
|
use std::str;
|
||||||
|
|
||||||
mod mime;
|
mod mime;
|
||||||
|
@ -10,9 +10,7 @@ mod random;
|
||||||
//use self::mime::*;
|
//use self::mime::*;
|
||||||
|
|
||||||
use super::parser;
|
use super::parser;
|
||||||
|
use fnv::FnvHashMap;
|
||||||
extern crate fnv;
|
|
||||||
use self::fnv::FnvHashMap;
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
pub struct Draft {
|
pub struct Draft {
|
||||||
|
|
|
@ -32,11 +32,10 @@
|
||||||
* user having mutable ownership.
|
* user having mutable ownership.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use mailbox::email::parser::BytesExt;
|
use crate::mailbox::email::parser::BytesExt;
|
||||||
use mailbox::email::*;
|
use crate::mailbox::email::*;
|
||||||
|
|
||||||
extern crate fnv;
|
use fnv::{FnvHashMap, FnvHashSet};
|
||||||
use self::fnv::{FnvHashMap, FnvHashSet};
|
|
||||||
use std::cell::{Ref, RefCell};
|
use std::cell::{Ref, RefCell};
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
|
|
|
@ -29,19 +29,19 @@ use std::alloc::System;
|
||||||
#[global_allocator]
|
#[global_allocator]
|
||||||
static GLOBAL: System = System;
|
static GLOBAL: System = System;
|
||||||
|
|
||||||
extern crate melib;
|
|
||||||
extern crate ui;
|
use ui;
|
||||||
|
|
||||||
pub use melib::*;
|
pub use melib::*;
|
||||||
pub use ui::*;
|
pub use ui::*;
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate chan;
|
extern crate chan;
|
||||||
extern crate chan_signal;
|
use chan_signal;
|
||||||
|
|
||||||
use chan_signal::Signal;
|
use chan_signal::Signal;
|
||||||
|
|
||||||
extern crate nix;
|
use nix;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
/* Lock all stdio outs */
|
/* Lock all stdio outs */
|
||||||
|
|
|
@ -23,12 +23,12 @@
|
||||||
* Account management from user configuration.
|
* Account management from user configuration.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use async::*;
|
use melib::async_workers::{Async, AsyncStatus, AsyncBuilder};
|
||||||
use conf::AccountConf;
|
use super::AccountConf;
|
||||||
use mailbox::backends::{
|
use melib::mailbox::backends::{
|
||||||
Backends, Folder, MailBackend, NotifyFn, RefreshEvent, RefreshEventConsumer, RefreshEventKind,
|
Backends, Folder, MailBackend, NotifyFn, RefreshEvent, RefreshEventConsumer, RefreshEventKind,
|
||||||
};
|
};
|
||||||
use mailbox::*;
|
use melib::mailbox::*;
|
||||||
use melib::error::Result;
|
use melib::error::Result;
|
||||||
use melib::AddressBook;
|
use melib::AddressBook;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use chan;
|
use chan;
|
||||||
use melib::async::Work;
|
use melib::async_workers::Work;
|
||||||
use std;
|
use std;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::thread;
|
use std::thread;
|
||||||
|
|
Loading…
Reference in New Issue