Совершенный новичек.
В наличии только:
- Блэнди Дж., Орендорф Дж. - Программирование на языке Rust
- Abhishek Chanda - Network Programming with Rust
Пытаюсь написать парсер электронной почты.
Нагуглил некий код начинающийся на:
extern crate imap;
extern crate native_tls;
use imap::client::Client;
use native_tls::TlsConnector;
карго выдает ошибку:
Compiling mail v0.1.0 (/home/digymonster/codding/rust/mail)
error[E0603]: module `client` is private
--> src/main.rs:4:11
|
4 | use imap::client::Client;
| ^^^^^^ private module
|
note: the module `client` is defined here
--> /home/digymonster/.cargo/registry/src/github.com-1ecc6299db9ec823/imap-2.4.1/src/lib.rs:86:1
|
86 | mod client;
| ^^^^^^^^^^
For more information about this error, try `rustc --explain E0603`.
error: could not compile `mail` due to previous error
Файл Cargo.toml:
[package]
name = "mail"
version = "0.1.0"
edition = "2021"
[dependencies]
native-tls = "0.2"
imap = "2.4"
Как побороть?
Спасибо!
Никак не бороть, в используемой версии imap структура Client доступна по импорту use imap::Client. С документацией можно ознакомиться по адресу imap - Rust, там есть и базовые примеры использования.
Кроме того, использовать extern crate в текущих версиях раста нет необходимости - это сильно устаревший сиетаксис, работать будет и без него.
1 лайк
ну, собственно, код:
extern crate imap;
extern crate native_tls;
use imap::client::Client;
use native_tls::TlsConnector;
fn main() {
let imap_server = "imap.mail.ru";
let imap_port = 993;
let username = "*****@mail.ru";
let password = "**********";
let tls_connector = TlsConnector::new().unwrap();
let client = Client::new(imap_server, imap_port);
let mut session = client.login(username, password).unwrap();
let mailbox = "INBOX";
session.select(mailbox).unwrap();
let mailbox_info = session.fetch("1:1", "FLAGS").unwrap();
let unseen = mailbox_info.first().unwrap().flags.is_empty();
if unseen {
println!("${{alignr -8}}{{color grey}}пусто");
} else {
println!("${{alignr -10}}{{color green}}что-то есть");
}
session.logout().unwrap();
}
ошибка:
error[E0603]: module client
is private
→ src/main.rs:3:11
|
3 | use imap::client::Client;
| ^^^^^^ private module
|
note: the module client
is defined here
→ /home/digymonster/.cargo/registry/src/github.com-1ecc6299db9ec823/imap-2.4.1/src/lib.rs:86:1
|
86 | mod client;
| ^^^^^^^^^^
вот из этого:
rustc --explain E0603
ничего не понял