Index: Cargo.lock ================================================================== --- Cargo.lock +++ Cargo.lock @@ -1516,11 +1516,10 @@ "mailin-embedded", "regex", "smol", "stacked_errors", "tgbot", - "tokio", ] [[package]] name = "socket2" version = "0.6.1" @@ -1680,25 +1679,13 @@ "bytes", "libc", "mio", "pin-project-lite", "socket2", - "tokio-macros", "windows-sys 0.61.2", ] -[[package]] -name = "tokio-macros" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "tokio-rustls" version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" @@ -2267,8 +2254,8 @@ "syn", ] [[package]] name = "zmij" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac060176f7020d62c3bcc1cdbcec619d54f48b07ad1963a3f80ce7a0c17755f" +checksum = "de9211a9f64b825911bdf0240f58b7a8dac217fe260fc61f080a07f61372fbd5" Index: Cargo.toml ================================================================== --- Cargo.toml +++ Cargo.toml @@ -14,10 +14,9 @@ mailin-embedded = "^0" regex = "1.11.1" smol = "2.0.2" stacked_errors = "0.7.1" tgbot = "0.40" -tokio = { version = "~1", features = [ "macros", "rt" ] } [profile.release] lto = true codegen-units = 1 Index: src/main.rs ================================================================== --- src/main.rs +++ src/main.rs @@ -9,18 +9,19 @@ #[cfg(test)] mod tests; use crate::mail::MailServer; -use smol::{ - fs::metadata, -}; +use async_compat::Compat; use just_getopt::{ OptFlags, OptSpecs, OptValue, }; +use smol::{ + fs::metadata, +}; use stacked_errors::{ Result, StackableErr, bail, }; @@ -29,12 +30,19 @@ io::Cursor, os::unix::fs::PermissionsExt, path::Path, }; -#[tokio::main(flavor = "current_thread")] -async fn main () -> Result<()> { +fn main () -> Result<()> { + smol::block_on(Compat::new(async { + async_main().await.unwrap() + })); + + Ok(()) +} + +async fn async_main () -> Result<()> { let specs = OptSpecs::new() .option("help", "h", OptValue::None) .option("help", "help", OptValue::None) .option("config", "c", OptValue::Required) .option("config", "config", OptValue::Required)