Getting rid of AWS SES to send emails

pmeunier
May 16, 2026, 4:57 PM
NV5CPVRHLFYYLMY6UWQZFFH73HCBQLOVOK5UZ7WH72DVCM6JJ6JQC

Dependencies

Change contents

  • replacement in api/src/ssh.rs at line 1537
    [2.376361][2.376361:377213]()
    let email_body = rusoto_ses::Body {
    text: Some(rusoto_ses::Content {
    data: format!(
    include_str!("discussions/new_change_email"),
    author = self.user,
    disc = n,
    name = name,
    message = header.message,
    owner = self.owner,
    repo = self.repo,
    host = self.config.host,
    hash = hash,
    login = &login,
    ),
    charset: Some(EMAIL_CHARSET.to_string()),
    }),
    html: Some(rusoto_ses::Content {
    data: body_html,
    charset: Some(EMAIL_CHARSET.to_string()),
    }),
    [2.376361]
    [2.377213]
    let email_body = crate::email::Body {
    plain: format!(
    include_str!("discussions/new_change_email"),
    author = self.user,
    disc = n,
    name = name,
    message = header.message,
    owner = self.owner,
    repo = self.repo,
    host = self.config.host,
    hash = hash,
    login = &login,
    ),
    html: body_html,
  • replacement in api/src/ssh.rs at line 1556
    [2.377404][2.377404:377486]()
    crate::email::send_email(&config, obj, email_body, address).await
    [2.377404]
    [2.377486]
    crate::email::send_email(&config, &obj, email_body, &address).await
  • replacement in api/src/main.rs at line 642
    [2.469756][2.469756:469830]()
    Rusoto(#[from] rusoto_core::RusotoError<rusoto_ses::SendEmailError>),
    [2.469756]
    [2.469830]
    Lettre(#[from] lettre::error::Error),
    #[error(transparent)]
    LettreAddress(#[from] lettre::address::AddressError),
  • replacement in api/src/email.rs at line 1
    [2.485528][2.485529:485597]()
    use crate::Config;
    use rusoto_core;
    use rusoto_ses;
    use tracing::*;
    [2.485528]
    [2.485597]
    use crate::{Config, Error};
    use lettre::{Message, Transport, message::MultiPart};
  • edit in api/src/email.rs at line 13
    [2.486154]
    [2.486154]
    #[derive(Debug, Clone)]
    pub struct Body {
    pub plain: String,
    pub html: String,
    }
  • replacement in api/src/email.rs at line 21
    [2.486200][2.486200:486270](),[2.486270][3.10891:11717](),[3.11717][4.9537:9632](),[4.9632][3.11813:11914](),[3.11813][3.11813:11914]()
    subject: String,
    body: rusoto_ses::Body,
    address: String,
    ) -> Result<(), rusoto_core::RusotoError<rusoto_ses::SendEmailError>> {
    if let Some(config_email) = config.email.clone() {
    let subject = rusoto_ses::Content {
    data: subject,
    charset: Some("utf-8".to_string()),
    };
    debug!("sending an email to {:?}", address);
    let client = rusoto_core::request::HttpClient::new().unwrap();
    let email = rusoto_ses::SendEmailRequest {
    message: rusoto_ses::Message { body, subject },
    source: config.email_source.clone(),
    destination: rusoto_ses::Destination {
    to_addresses: Some(vec![address]),
    ..rusoto_ses::Destination::default()
    },
    ..rusoto_ses::SendEmailRequest::default()
    };
    use rusoto_ses::Ses;
    let result =
    rusoto_ses::SesClient::new_with(client, config_email, config.aws_ses_zone.clone())
    .send_email(email)
    .await?;
    debug!("result = {:?}", result);
    [2.486200]
    [3.11914]
    subject: &str,
    body: Body,
    address: &str,
    ) -> Result<(), Error> {
    if let Some(ref mailer) = config.email {
    let email = Message::builder()
    .from(config.email_source.parse()?)
    .to(address.parse()?)
    .subject(subject)
    .multipart(MultiPart::alternative_plain_html(body.plain, body.html))?;
    match mailer.send(&email) {
    Ok(_) => println!("Email sent successfully!"),
    Err(e) => panic!("Could not send email: {e:?}"),
    }
  • edit in api/src/config_file.rs at line 6
    [2.529912]
    [2.529912]
    pub server: String,
    pub user: String,
  • edit in api/src/config_file.rs at line 9
    [2.529936][4.9633:9657]()
    pub region: String,
  • edit in api/src/config_file.rs at line 14
    [4.9657][2.529936:530361](),[7.42864][2.529936:530361](),[2.529936][2.529936:530361]()
    }
    #[derive(Default, Clone, Serialize, Deserialize)]
    pub struct PostgresConfig {
    pub host: String,
    pub port: Option<u16>,
    pub readonly_port: Option<u16>,
    pub local_port: Option<u16>,
    pub user: String,
    pub password: String,
    pub db: String,
    pub log: Option<String>,
    pub ca_file: Option<String>,
    #[serde(default = "bool_true")]
    pub use_tls: bool,
    }
    fn bool_true() -> bool {
    true
  • replacement in api/src/config_file.rs at line 29
    [2.530741][2.530741:530769]()
    pub email: EmailConfig,
    [2.530741]
    [2.530769]
    pub email: Option<EmailConfig>,
  • edit in api/src/config.rs at line 5
    [2.532846][2.532846:532869]()
    use rusoto_credential;
  • replacement in api/src/config.rs at line 39
    [2.533870][3.11964:12022]()
    pub email: Option<rusoto_credential::StaticProvider>,
    [2.533870]
    [2.533920]
    pub email: Option<lettre::SmtpTransport>,
  • edit in api/src/config.rs at line 41
    [2.533950][4.9741:9784]()
    pub aws_ses_zone: rusoto_core::Region,
  • replacement in api/src/config.rs at line 225
    [2.539199][3.12063:12087](),[3.12087][2.539463:539519](),[2.539463][2.539463:539519](),[2.539519][4.10179:10244]()
    email: email(),
    email_source: config_file.email.source.clone(),
    aws_ses_zone: config_file.email.region.parse().unwrap(),
    [2.539199]
    [4.10244]
    email: email(&config_file),
    email_source: config_file
    .email
    .as_ref()
    .map(|x| x.source.clone())
    .unwrap_or(String::new()),
  • replacement in api/src/config.rs at line 298
    [3.12382][3.12382:12621]()
    fn email() -> Option<rusoto_credential::StaticProvider> {
    Some(rusoto_credential::StaticProvider::new(
    std::env::var("aws_access_key_id").ok()?,
    std::env::var("aws_access_key").ok()?,
    None,
    None,
    ))
    [3.12382]
    [3.12621]
    fn email(config: &config_file::ConfigFile) -> Option<lettre::SmtpTransport> {
    if let Some(ref email) = config.email {
    let creds = lettre::transport::smtp::authentication::Credentials::new(
    email.user.clone(),
    std::env::var("SMTP_PASSWORD").unwrap(),
    );
    Some(
    lettre::SmtpTransport::relay(&email.server)
    .unwrap()
    .credentials(creds)
    .build(),
    )
    } else {
    None
    }
  • edit in api/src/auth.rs at line 297
    [2.598630][2.598630:598846]()
    /*
    pub const EMAIL_CHARSET: &'static str = "UTF-8";
    pub const BLOCKQUOTE_STYLE: cuach::PreEscaped<&'static str> =
    cuach::PreEscaped("border-left:2px solid #666666;padding-left:10px;margin:30px 0 30px 30px;");
    */
  • edit in api/src/auth.rs at line 364
    [2.600714][2.600714:600753]()
    let charset = "UTF-8".to_string();
  • replacement in api/src/auth.rs at line 371
    [2.600940][2.600940:601085]()
    rusoto_ses::Body {
    text: Some(rusoto_ses::Content {
    data: format!(
    "Welcome to the nest.
    [2.600940]
    [2.601085]
    crate::email::Body {
    html: body_html,
    plain: format!(
    "Welcome to the nest.
  • replacement in api/src/auth.rs at line 380
    [2.601201][4.10567:10610](),[4.10610][2.601240:601457](),[2.601240][2.601240:601457]()
    config.hostname, token
    ),
    charset: Some(charset.clone()),
    }),
    html: Some(rusoto_ses::Content {
    data: body_html,
    charset: Some(charset),
    }),
    [2.601201]
    [2.601457]
    config.hostname, token
    ),
  • replacement in api/src/auth.rs at line 391
    [2.601666][2.601666:601773]()
    rusoto_ses::Body {
    text: Some(rusoto_ses::Content {
    data: format!("Hi,
    [2.601666]
    [2.601773]
    crate::email::Body {
    html: body_html,
    plain: format!("Hi,
  • replacement in api/src/auth.rs at line 400
    [2.601993][4.10611:10639](),[4.10639][2.602017:602212](),[2.602017][2.602017:602212]()
    ", config.hostname, token),
    charset: Some(charset.clone())
    }),
    html: Some(rusoto_ses::Content {
    data: body_html,
    charset: Some(charset)
    })
    [2.601993]
    [2.602212]
    ", config.hostname, token)
  • replacement in api/src/auth.rs at line 403
    [2.602229][2.602229:602301]()
    Ok(crate::email::send_email(config, subject, body, address).await?)
    [2.602229]
    [2.602301]
    Ok(crate::email::send_email(config, &subject, body, &address).await?)
  • replacement in api/Cargo.toml at line 21
    [3.13755][3.13755:13773]()
    chrono = "0.4.42"
    [3.13755]
    [2.602862]
    chrono = { version = "0.4.42", features = ["serde"] }
  • edit in api/Cargo.toml at line 45
    [2.603454]
    [7.44015]
    lettre = "0.11.22"
  • edit in api/Cargo.toml at line 61
    [3.14356][2.603808:603882](),[2.603808][2.603808:603882]()
    rusoto_core = "0.48.0"
    rusoto_credential = "0.48.0"
    rusoto_ses = "0.48.0"
  • replacement in Cargo.nix at line 1028
    [5.31818][5.31818:31856]()
    packageId = "http 1.4.0";
    [5.31818]
    [5.31856]
    packageId = "http";
  • replacement in Cargo.nix at line 1032
    [5.31912][5.31912:31955]()
    packageId = "http-body 1.0.1";
    [5.31912]
    [5.31955]
    packageId = "http-body";
  • replacement in Cargo.nix at line 1040
    [5.32110][5.32110:32149]()
    packageId = "hyper 1.8.1";
    [5.32110]
    [5.32149]
    packageId = "hyper";
  • replacement in Cargo.nix at line 1138
    [5.34337][5.34337:34376]()
    packageId = "hyper 1.8.1";
    [5.34337]
    [5.34376]
    packageId = "hyper";
  • replacement in Cargo.nix at line 1202
    [5.36767][5.36767:36805]()
    packageId = "http 1.4.0";
    [5.36767]
    [5.36805]
    packageId = "http";
  • replacement in Cargo.nix at line 1206
    [5.36861][5.36861:36904]()
    packageId = "http-body 1.0.1";
    [5.36861]
    [5.36904]
    packageId = "http-body";
  • replacement in Cargo.nix at line 1290
    [5.39058][5.39058:39096]()
    packageId = "http 1.4.0";
    [5.39058]
    [5.39096]
    packageId = "http";
  • replacement in Cargo.nix at line 1294
    [5.39152][5.39152:39195]()
    packageId = "http-body 1.0.1";
    [5.39152]
    [5.39195]
    packageId = "http-body";
  • replacement in Cargo.nix at line 1373
    [5.42393][5.42393:42431]()
    packageId = "http 1.4.0";
    [5.42393]
    [5.42431]
    packageId = "http";
  • replacement in Cargo.nix at line 1459
    [5.44668][5.44668:44706]()
    packageId = "http 1.4.0";
    [5.44668]
    [5.44706]
    packageId = "http";
  • replacement in Cargo.nix at line 1521
    [5.46283][5.46283:46321]()
    packageId = "http 1.4.0";
    [5.46283]
    [5.46321]
    packageId = "http";
  • replacement in Cargo.nix at line 1525
    [5.46377][5.46377:46420]()
    packageId = "http-body 1.0.1";
    [5.46377]
    [5.46420]
    packageId = "http-body";
  • replacement in Cargo.nix at line 1529
    [5.46472][5.46472:46511]()
    packageId = "hyper 1.8.1";
    [5.46472]
    [5.46511]
    packageId = "hyper";
  • replacement in Cargo.nix at line 1577
    [5.47776][5.47776:47815]()
    packageId = "hyper 1.8.1";
    [5.47776]
    [5.47815]
    packageId = "hyper";
  • replacement in Cargo.nix at line 1634
    [5.49815][5.49815:49853]()
    packageId = "http 1.4.0";
    [5.49815]
    [5.49853]
    packageId = "http";
  • edit in Cargo.nix at line 1660
    [5.50466][5.50466:50907]()
    "base64 0.13.1" = rec {
    crateName = "base64";
    version = "0.13.1";
    edition = "2018";
    sha256 = "1s494mqmzjb766fy1kqlccgfg2sdcjb6hzbvzqv2jw65fdi5h6wy";
    authors = [
    "Alice Maz <alice@alicemaz.com>"
    "Marshall Pierce <marshall@mpierce.org>"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
  • edit in Cargo.nix at line 4774
    [5.142346][5.142346:142758]()
    }
    ];
    };
    "dirs-next" = rec {
    crateName = "dirs-next";
    version = "2.0.0";
    edition = "2018";
    sha256 = "1q9kr151h9681wwp6is18750ssghz6j9j7qm7qi1ngcwy7mzi35r";
    libName = "dirs_next";
    authors = [
    "The @xdg-rs members"
    ];
    dependencies = [
    {
    name = "cfg-if";
    packageId = "cfg-if";
  • edit in Cargo.nix at line 4775
    [5.142770][5.142770:142871]()
    {
    name = "dirs-sys-next";
    packageId = "dirs-sys-next";
    }
  • edit in Cargo.nix at line 4808
    [5.143848][5.143848:144794]()
    "dirs-sys-next" = rec {
    crateName = "dirs-sys-next";
    version = "0.1.2";
    edition = "2018";
    sha256 = "0kavhavdxv4phzj4l0psvh55hszwnr0rcz8sxbvx20pyqi2a3gaf";
    libName = "dirs_sys_next";
    authors = [
    "The @xdg-rs members"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    target = { target, features }: (target."unix" or false);
    }
    {
    name = "redox_users";
    packageId = "redox_users";
    usesDefaultFeatures = false;
    target = { target, features }: ("redox" == target."os" or null);
    }
    {
    name = "winapi";
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    features = [ "knownfolders" "objbase" "shlobj" "winbase" "winerror" ];
    }
    ];
    };
  • edit in Cargo.nix at line 5061
    [5.152316]
    [5.152316]
    };
    "email-encoding" = rec {
    crateName = "email-encoding";
    version = "0.4.1";
    edition = "2021";
    sha256 = "1dkhcqmhgc25m437fzxhkvhd135yc4xd9pzpsc77i7lv9m8fd64j";
    libName = "email_encoding";
    dependencies = [
    {
    name = "base64";
    packageId = "base64 0.22.1";
    usesDefaultFeatures = false;
    }
    {
    name = "memchr";
    packageId = "memchr";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "std" ];
    "std" = [ "base64/std" "memchr/std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "email_address" = rec {
    crateName = "email_address";
    version = "0.2.9";
    edition = "2018";
    sha256 = "0jf4v3npa524c7npy7w3jl0a6gng26f51a4bgzs3jqna12dz2yg0";
    authors = [
    "Simon Johnston <johnstonskj@gmail.com>"
    ];
    features = {
    "default" = [ "serde_support" ];
    "serde" = [ "dep:serde" ];
    "serde_support" = [ "serde" ];
    };
  • edit in Cargo.nix at line 6207
    [5.189353][5.189353:191232]()
    };
    "h2 0.3.27" = rec {
    crateName = "h2";
    version = "0.3.27";
    edition = "2018";
    sha256 = "0b92141hilij015av6i5ziw9xfx4py3lbjy17yc35z5ih01sbv0b";
    authors = [
    "Carl Lerche <me@carllerche.com>"
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "bytes";
    packageId = "bytes";
    }
    {
    name = "fnv";
    packageId = "fnv";
    }
    {
    name = "futures-core";
    packageId = "futures-core";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-sink";
    packageId = "futures-sink";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-util";
    packageId = "futures-util";
    usesDefaultFeatures = false;
    }
    {
    name = "http";
    packageId = "http 0.2.12";
    }
    {
    name = "indexmap";
    packageId = "indexmap";
    features = [ "std" ];
    }
    {
    name = "slab";
    packageId = "slab";
    }
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "io-util" ];
    }
    {
    name = "tokio-util";
    packageId = "tokio-util";
    features = [ "codec" "io" ];
    }
    {
    name = "tracing";
    packageId = "tracing";
    usesDefaultFeatures = false;
    features = [ "std" ];
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "rt-multi-thread" "macros" "sync" "net" ];
    }
    ];
    features = {
    };
  • replacement in Cargo.nix at line 6208
    [5.191241][5.191241:191267]()
    "h2 0.4.12" = rec {
    [5.191241]
    [5.191267]
    "h2" = rec {
  • replacement in Cargo.nix at line 6242
    [5.192153][5.192153:192191]()
    packageId = "http 1.4.0";
    [5.192153]
    [5.192191]
    packageId = "http";
  • replacement in Cargo.nix at line 6472
    [5.199657][5.199657:199695]()
    packageId = "http 1.4.0";
    [5.199657]
    [5.199695]
    packageId = "http";
  • replacement in Cargo.nix at line 6502
    [5.200385][5.200385:200423]()
    packageId = "http 1.4.0";
    [5.200385]
    [5.200423]
    packageId = "http";
  • edit in Cargo.nix at line 6642
    [5.204259]
    [5.204259]
    };
    };
    "hostname" = rec {
    crateName = "hostname";
    version = "0.4.2";
    edition = "2021";
    sha256 = "1g8cfg0a1v8y5a0zkncbns8hh24amjgskl39cc583wxfawsslyk1";
    dependencies = [
    {
    name = "cfg-if";
    packageId = "cfg-if";
    }
    {
    name = "libc";
    packageId = "libc";
    target = { target, features }: ((target."unix" or false) || ("redox" == target."os" or null));
    }
    {
    name = "windows-link";
    packageId = "windows-link";
    target = { target, features }: ("windows" == target."os" or null);
    }
    ];
    features = {
  • edit in Cargo.nix at line 6667
    [5.204270]
    [5.204270]
    resolvedDefaultFeatures = [ "default" ];
  • edit in Cargo.nix at line 6732
    [5.205848][5.205848:206500]()
    };
    "http 0.2.12" = rec {
    crateName = "http";
    version = "0.2.12";
    edition = "2018";
    sha256 = "1w81s4bcbmcj9bjp7mllm8jlz6b31wzvirz8bgpzbqkpwmbvn730";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    "Carl Lerche <me@carllerche.com>"
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "bytes";
    packageId = "bytes";
    }
    {
    name = "fnv";
    packageId = "fnv";
    }
    {
    name = "itoa";
    packageId = "itoa";
    }
    ];
  • replacement in Cargo.nix at line 6733
    [5.206509][5.206509:206536]()
    "http 1.4.0" = rec {
    [5.206509]
    [5.206536]
    "http" = rec {
  • edit in Cargo.nix at line 6757
    [5.207188][5.207188:207913]()
    };
    "http-body 0.4.6" = rec {
    crateName = "http-body";
    version = "0.4.6";
    edition = "2018";
    sha256 = "1lmyjfk6bqk6k9gkn1dxq770sb78pqbqshga241hr5p995bb5skw";
    libName = "http_body";
    authors = [
    "Carl Lerche <me@carllerche.com>"
    "Lucio Franco <luciofranco14@gmail.com>"
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "bytes";
    packageId = "bytes";
    }
    {
    name = "http";
    packageId = "http 0.2.12";
    }
    {
    name = "pin-project-lite";
    packageId = "pin-project-lite";
    }
    ];
  • replacement in Cargo.nix at line 6758
    [5.207922][5.207922:207954]()
    "http-body 1.0.1" = rec {
    [5.207922]
    [5.207954]
    "http-body" = rec {
  • replacement in Cargo.nix at line 6776
    [5.208468][5.208468:208506]()
    packageId = "http 1.4.0";
    [5.208468]
    [5.208506]
    packageId = "http";
  • replacement in Cargo.nix at line 6804
    [5.209234][5.209234:209272]()
    packageId = "http 1.4.0";
    [5.209234]
    [5.209272]
    packageId = "http";
  • replacement in Cargo.nix at line 6808
    [5.209328][5.209328:209371]()
    packageId = "http-body 1.0.1";
    [5.209328]
    [5.209371]
    packageId = "http-body";
  • replacement in Cargo.nix at line 6844
    [5.210322][5.210322:213351]()
    "hyper 0.14.32" = rec {
    crateName = "hyper";
    version = "0.14.32";
    edition = "2018";
    sha256 = "1rvcb0smz8q1i0y6p7rwxr02x5sclfg2hhxf3g0774zczn0cgps1";
    authors = [
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "bytes";
    packageId = "bytes";
    }
    {
    name = "futures-channel";
    packageId = "futures-channel";
    }
    {
    name = "futures-core";
    packageId = "futures-core";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-util";
    packageId = "futures-util";
    usesDefaultFeatures = false;
    }
    {
    name = "h2";
    packageId = "h2 0.3.27";
    optional = true;
    }
    {
    name = "http";
    packageId = "http 0.2.12";
    }
    {
    name = "http-body";
    packageId = "http-body 0.4.6";
    }
    {
    name = "httparse";
    packageId = "httparse";
    }
    {
    name = "httpdate";
    packageId = "httpdate";
    }
    {
    name = "itoa";
    packageId = "itoa";
    }
    {
    name = "pin-project-lite";
    packageId = "pin-project-lite";
    }
    {
    name = "socket2";
    packageId = "socket2 0.5.10";
    optional = true;
    features = [ "all" ];
    }
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "sync" ];
    }
    {
    name = "tower-service";
    packageId = "tower-service";
    }
    {
    name = "tracing";
    packageId = "tracing";
    usesDefaultFeatures = false;
    features = [ "std" ];
    }
    {
    name = "want";
    packageId = "want";
    }
    ];
    devDependencies = [
    {
    name = "futures-util";
    packageId = "futures-util";
    usesDefaultFeatures = false;
    features = [ "alloc" ];
    }
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "fs" "macros" "io-std" "io-util" "rt" "rt-multi-thread" "sync" "time" "test-util" ];
    }
    ];
    features = {
    "ffi" = [ "libc" ];
    "full" = [ "client" "http1" "http2" "server" "stream" "runtime" ];
    "h2" = [ "dep:h2" ];
    "http2" = [ "h2" ];
    "libc" = [ "dep:libc" ];
    "runtime" = [ "tcp" "tokio/rt" "tokio/time" ];
    "socket2" = [ "dep:socket2" ];
    "tcp" = [ "socket2" "tokio/net" "tokio/rt" "tokio/time" ];
    };
    resolvedDefaultFeatures = [ "client" "default" "h2" "http1" "http2" "socket2" "stream" "tcp" ];
    };
    "hyper 1.8.1" = rec {
    [5.210322]
    [5.213351]
    "hyper" = rec {
  • replacement in Cargo.nix at line 6874
    [5.214123][5.214123:214160]()
    packageId = "h2 0.4.12";
    [5.214123]
    [5.214160]
    packageId = "h2";
  • replacement in Cargo.nix at line 6879
    [5.214240][5.214240:214278]()
    packageId = "http 1.4.0";
    [5.214240]
    [5.214278]
    packageId = "http";
  • replacement in Cargo.nix at line 6883
    [5.214334][5.214334:214377]()
    packageId = "http-body 1.0.1";
    [5.214334]
    [5.214377]
    packageId = "http-body";
  • replacement in Cargo.nix at line 6963
    [5.216838][5.216838:216876]()
    packageId = "http 1.4.0";
    [5.216838]
    [5.216876]
    packageId = "http";
  • replacement in Cargo.nix at line 6967
    [5.216928][5.216928:216967]()
    packageId = "hyper 1.8.1";
    [5.216928]
    [5.216967]
    packageId = "hyper";
  • replacement in Cargo.nix at line 7037
    [5.219217][5.219217:219249]()
    "hyper-tls 0.5.0" = rec {
    [5.219217]
    [5.219249]
    "hyper-tls" = rec {
  • edit in Cargo.nix at line 7039
    [5.219282][5.219282:220610]()
    version = "0.5.0";
    edition = "2018";
    sha256 = "01crgy13102iagakf6q4mb75dprzr7ps1gj0l5hxm1cvm7gks66n";
    libName = "hyper_tls";
    authors = [
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "bytes";
    packageId = "bytes";
    }
    {
    name = "hyper";
    packageId = "hyper 0.14.32";
    usesDefaultFeatures = false;
    features = [ "tcp" "client" ];
    }
    {
    name = "native-tls";
    packageId = "native-tls";
    }
    {
    name = "tokio";
    packageId = "tokio";
    }
    {
    name = "tokio-native-tls";
    packageId = "tokio-native-tls";
    }
    ];
    devDependencies = [
    {
    name = "hyper";
    packageId = "hyper 0.14.32";
    usesDefaultFeatures = false;
    features = [ "http1" ];
    }
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "io-std" "macros" "io-util" ];
    }
    ];
    features = {
    "vendored" = [ "native-tls/vendored" ];
    };
    };
    "hyper-tls 0.6.0" = rec {
    crateName = "hyper-tls";
  • replacement in Cargo.nix at line 7057
    [5.221100][5.221100:221139]()
    packageId = "hyper 1.8.1";
    [5.221100]
    [5.221139]
    packageId = "hyper";
  • replacement in Cargo.nix at line 7134
    [5.223115][5.223115:223153]()
    packageId = "http 1.4.0";
    [5.223115]
    [5.223153]
    packageId = "http";
  • replacement in Cargo.nix at line 7138
    [5.223209][5.223209:223252]()
    packageId = "http-body 1.0.1";
    [5.223209]
    [5.223252]
    packageId = "http-body";
  • replacement in Cargo.nix at line 7142
    [5.223304][5.223304:223343]()
    packageId = "hyper 1.8.1";
    [5.223304]
    [5.223343]
    packageId = "hyper";
  • replacement in Cargo.nix at line 7165
    [5.223866][5.223866:223907]()
    packageId = "socket2 0.6.1";
    [5.223866]
    [5.223907]
    packageId = "socket2";
  • replacement in Cargo.nix at line 7213
    [5.225229][5.225229:225268]()
    packageId = "hyper 1.8.1";
    [5.225229]
    [5.225268]
    packageId = "hyper";
  • replacement in Cargo.nix at line 7641
    [5.239881][5.239881:239950]()
    resolvedDefaultFeatures = [ "alloc" "compiled_data" "std" ];
    [5.239881]
    [5.239950]
    resolvedDefaultFeatures = [ "alloc" "compiled_data" "default" "std" ];
  • edit in Cargo.nix at line 8286
    [5.254208]
    [5.254208]
    "lettre" = rec {
    crateName = "lettre";
    version = "0.11.22";
    edition = "2024";
    sha256 = "0j9kbgx98k4zn2hvd38jdsl8s5snmn55gjrrs0r674nbyqbmd9hd";
    authors = [
    "Alexis Mousset <contact@amousset.me>"
    "Paolo Barbolini <paolo@paolo565.org>"
    ];
    dependencies = [
    {
    name = "base64";
    packageId = "base64 0.22.1";
    optional = true;
    }
    {
    name = "email-encoding";
    packageId = "email-encoding";
    optional = true;
    }
    {
    name = "email_address";
    packageId = "email_address";
    usesDefaultFeatures = false;
    }
    {
    name = "fastrand";
    packageId = "fastrand";
    optional = true;
    }
    {
    name = "futures-util";
    packageId = "futures-util";
    optional = true;
    usesDefaultFeatures = false;
    features = [ "io" ];
    }
    {
    name = "hostname";
    packageId = "hostname";
    optional = true;
    }
    {
    name = "httpdate";
    packageId = "httpdate";
    optional = true;
    }
    {
    name = "idna";
    packageId = "idna";
    }
    {
    name = "mime";
    packageId = "mime";
    optional = true;
    }
    {
    name = "native-tls";
    packageId = "native-tls";
    optional = true;
    }
    {
    name = "nom";
    packageId = "nom 8.0.0";
    }
    {
    name = "percent-encoding";
    packageId = "percent-encoding";
    optional = true;
    }
    {
    name = "quoted_printable";
    packageId = "quoted_printable";
    optional = true;
    }
    {
    name = "socket2";
    packageId = "socket2";
    optional = true;
    }
    {
    name = "tokio";
    packageId = "tokio";
    rename = "tokio1_crate";
    optional = true;
    }
    {
    name = "url";
    packageId = "url";
    optional = true;
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    packageId = "tokio";
    rename = "tokio1_crate";
    features = [ "macros" "rt-multi-thread" ];
    }
    ];
    features = {
    "async-std1" = [ "dep:async-std" "dep:async-trait" "dep:futures-io" "dep:futures-util" ];
    "async-std1-rustls" = [ "async-std1" "rustls" "dep:futures-rustls" ];
    "async-std1-rustls-tls" = [ "async-std1-rustls" "rustls-tls" ];
    "aws-lc-rs" = [ "rustls?/aws-lc-rs" ];
    "boring-tls" = [ "dep:boring" ];
    "builder" = [ "dep:httpdate" "dep:mime" "dep:fastrand" "dep:quoted_printable" "dep:email-encoding" ];
    "default" = [ "smtp-transport" "pool" "native-tls" "hostname" "builder" ];
    "dkim" = [ "dep:base64" "dep:sha2" "dep:rsa" "dep:ed25519-dalek" ];
    "file-transport" = [ "dep:uuid" "tokio1_crate?/fs" "tokio1_crate?/io-util" ];
    "file-transport-envelope" = [ "serde" "dep:serde_json" "file-transport" ];
    "fips" = [ "aws-lc-rs" "rustls?/fips" ];
    "hostname" = [ "dep:hostname" ];
    "mime03" = [ "dep:mime" ];
    "native-tls" = [ "dep:native-tls" ];
    "pool" = [ "dep:futures-util" ];
    "ring" = [ "rustls?/ring" ];
    "rustls" = [ "dep:rustls" ];
    "rustls-native-certs" = [ "dep:rustls-native-certs" ];
    "rustls-no-provider" = [ "rustls" ];
    "rustls-platform-verifier" = [ "dep:rustls-platform-verifier" ];
    "rustls-tls" = [ "webpki-roots" "rustls" "ring" ];
    "sendmail-transport" = [ "tokio1_crate?/process" "tokio1_crate?/io-util" "async-std?/unstable" ];
    "serde" = [ "dep:serde" ];
    "smtp-transport" = [ "dep:base64" "dep:socket2" "dep:url" "dep:percent-encoding" "tokio1_crate?/rt" "tokio1_crate?/time" "tokio1_crate?/net" ];
    "tokio1" = [ "dep:tokio1_crate" "dep:async-trait" "dep:futures-io" "dep:futures-util" ];
    "tokio1-boring-tls" = [ "tokio1" "boring-tls" "dep:tokio1_boring" ];
    "tokio1-native-tls" = [ "tokio1" "native-tls" "dep:tokio1_native_tls_crate" ];
    "tokio1-rustls" = [ "tokio1" "rustls" "dep:tokio1_rustls" ];
    "tokio1-rustls-tls" = [ "tokio1-rustls" "rustls-tls" ];
    "tracing" = [ "dep:tracing" ];
    "web" = [ "dep:web-time" ];
    "webpki-roots" = [ "dep:webpki-roots" ];
    };
    resolvedDefaultFeatures = [ "builder" "default" "hostname" "native-tls" "pool" "smtp-transport" ];
    };
  • replacement in Cargo.nix at line 9223
    [5.276974][5.276974:277002]()
    "md-5 0.10.6" = rec {
    [5.276974]
    [5.277002]
    "md-5" = rec {
  • edit in Cargo.nix at line 9254
    [5.277795][5.277795:278804]()
    "std" = [ "digest/std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "md-5 0.9.1" = rec {
    crateName = "md-5";
    version = "0.9.1";
    edition = "2018";
    sha256 = "059ajjacz1q3cms7vl6cvhdqs4qdw2nnwj9dq99ryzv0p6djfnkv";
    libName = "md5";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "block-buffer";
    packageId = "block-buffer 0.9.0";
    }
    {
    name = "digest";
    packageId = "digest 0.9.0";
    }
    {
    name = "opaque-debug";
    packageId = "opaque-debug";
    }
    ];
    devDependencies = [
    {
    name = "digest";
    packageId = "digest 0.9.0";
    features = [ "dev" ];
    }
    ];
    features = {
    "asm" = [ "md5-asm" ];
    "default" = [ "std" ];
    "md5-asm" = [ "dep:md5-asm" ];
  • edit in Cargo.nix at line 9687
    [5.291876]
    [5.291876]
    features = [ "serde" ];
  • replacement in Cargo.nix at line 9747
    [5.293229][5.293229:293267]()
    packageId = "http 1.4.0";
    [5.293229]
    [5.293267]
    packageId = "http";
  • replacement in Cargo.nix at line 9759
    [5.293513][5.293513:293552]()
    packageId = "hyper 1.8.1";
    [5.293513]
    [5.293552]
    packageId = "hyper";
  • edit in Cargo.nix at line 9787
    [5.293861]
    [6.10560]
    name = "lettre";
    packageId = "lettre";
    }
    {
  • edit in Cargo.nix at line 9851
    [5.295185][5.295185:295486]()
    name = "rusoto_core";
    packageId = "rusoto_core";
    }
    {
    name = "rusoto_credential";
    packageId = "rusoto_credential";
    }
    {
    name = "rusoto_ses";
    packageId = "rusoto_ses";
    }
    {
  • replacement in Cargo.nix at line 12688
    [5.376359][5.376359:376398]()
    packageId = "md-5 0.10.6";
    [5.376359]
    [5.376398]
    packageId = "md-5";
  • edit in Cargo.nix at line 13102
    [5.389057]
    [5.389057]
    };
    "quoted_printable" = rec {
    crateName = "quoted_printable";
    version = "0.5.2";
    edition = "2018";
    sha256 = "0wm9xr8qajngy0lvsf00hy51s6x53w73qzpb0yj2l4lscn2hb3j7";
    authors = [
    "Kartikaya Gupta <kats@seldon.staktrace.com>"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
  • replacement in Cargo.nix at line 13914
    [5.415550][5.415550:415587]()
    packageId = "h2 0.4.12";
    [5.415550]
    [5.415587]
    packageId = "h2";
  • replacement in Cargo.nix at line 13920
    [5.415750][5.415750:415788]()
    packageId = "http 1.4.0";
    [5.415750]
    [5.415788]
    packageId = "http";
  • replacement in Cargo.nix at line 13924
    [5.415844][5.415844:415887]()
    packageId = "http-body 1.0.1";
    [5.415844]
    [5.415887]
    packageId = "http-body";
  • replacement in Cargo.nix at line 13934
    [5.416208][5.416208:416247]()
    packageId = "hyper 1.8.1";
    [5.416208]
    [5.416247]
    packageId = "hyper";
  • replacement in Cargo.nix at line 13948
    [5.416727][5.416727:416770]()
    packageId = "hyper-tls 0.6.0";
    [5.416727]
    [5.416770]
    packageId = "hyper-tls";
  • replacement in Cargo.nix at line 14077
    [5.421325][5.421325:421364]()
    packageId = "hyper 1.8.1";
    [5.421325]
    [5.421364]
    packageId = "hyper";
  • edit in Cargo.nix at line 14326
    [5.431592][5.431592:440516]()
    "rusoto_core" = rec {
    crateName = "rusoto_core";
    version = "0.48.0";
    edition = "2018";
    sha256 = "18ig9x4n68cgfvhzkyhl9w2qlhk945xczbb9c8r52dd79ss0vcqx";
    authors = [
    "Anthony DiMarco <ocramida@gmail.com>"
    "Jimmy Cuadra <jimmy@jimmycuadra.com>"
    "Matthew Mayer <matthewkmayer@gmail.com>"
    "Nikita Pekin <contact@nikitapek.in>"
    ];
    dependencies = [
    {
    name = "async-trait";
    packageId = "async-trait";
    }
    {
    name = "base64";
    packageId = "base64 0.13.1";
    }
    {
    name = "bytes";
    packageId = "bytes";
    }
    {
    name = "crc32fast";
    packageId = "crc32fast";
    }
    {
    name = "futures";
    packageId = "futures";
    }
    {
    name = "http";
    packageId = "http 0.2.12";
    }
    {
    name = "hyper";
    packageId = "hyper 0.14.32";
    features = [ "client" "http1" "http2" "tcp" ];
    }
    {
    name = "hyper-tls";
    packageId = "hyper-tls 0.5.0";
    optional = true;
    }
    {
    name = "lazy_static";
    packageId = "lazy_static";
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "rusoto_credential";
    packageId = "rusoto_credential";
    }
    {
    name = "rusoto_signature";
    packageId = "rusoto_signature";
    }
    {
    name = "serde";
    packageId = "serde";
    features = [ "derive" ];
    }
    {
    name = "serde_json";
    packageId = "serde_json";
    }
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "time" "io-util" ];
    }
    {
    name = "xml-rs";
    packageId = "xml-rs";
    }
    ];
    buildDependencies = [
    {
    name = "rustc_version";
    packageId = "rustc_version";
    }
    ];
    devDependencies = [
    {
    name = "serde_json";
    packageId = "serde_json";
    }
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "macros" ];
    }
    ];
    features = {
    "default" = [ "native-tls" ];
    "encoding" = [ "flate2" ];
    "flate2" = [ "dep:flate2" ];
    "hyper-rustls" = [ "dep:hyper-rustls" ];
    "hyper-tls" = [ "dep:hyper-tls" ];
    "native-tls" = [ "hyper-tls" ];
    "nightly-testing" = [ "rusoto_credential/nightly-testing" ];
    "rustls" = [ "hyper-rustls/native-tokio" ];
    "rustls-webpki" = [ "hyper-rustls/webpki-tokio" ];
    };
    resolvedDefaultFeatures = [ "default" "hyper-tls" "native-tls" ];
    };
    "rusoto_credential" = rec {
    crateName = "rusoto_credential";
    version = "0.48.0";
    edition = "2018";
    sha256 = "019dq3aq6hnfg4xvxdfsnrba08dwvciz0km4nr3n1basvc9nq2pf";
    authors = [
    "Anthony DiMarco <ocramida@gmail.com>"
    "Jimmy Cuadra <jimmy@jimmycuadra.com>"
    "Matthew Mayer <matthewkmayer@gmail.com>"
    "Nikita Pekin <contact@nikitapek.in>"
    ];
    dependencies = [
    {
    name = "async-trait";
    packageId = "async-trait";
    }
    {
    name = "chrono";
    packageId = "chrono";
    usesDefaultFeatures = false;
    features = [ "clock" "serde" ];
    }
    {
    name = "dirs-next";
    packageId = "dirs-next";
    }
    {
    name = "futures";
    packageId = "futures";
    }
    {
    name = "hyper";
    packageId = "hyper 0.14.32";
    features = [ "client" "http1" "tcp" "stream" ];
    }
    {
    name = "serde";
    packageId = "serde";
    features = [ "derive" ];
    }
    {
    name = "serde_json";
    packageId = "serde_json";
    }
    {
    name = "shlex";
    packageId = "shlex";
    }
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "process" "sync" "time" ];
    }
    {
    name = "zeroize";
    packageId = "zeroize";
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "macros" "rt-multi-thread" ];
    }
    ];
    features = {
    };
    };
    "rusoto_ses" = rec {
    crateName = "rusoto_ses";
    version = "0.48.0";
    edition = "2018";
    sha256 = "1k86fiyxip6mjkh7zbbc49rdbqy2qqvi52hr8vs3zfgar0d60rf3";
    authors = [
    "Anthony DiMarco <ocramida@gmail.com>"
    "Jimmy Cuadra <jimmy@jimmycuadra.com>"
    "Matthew Mayer <matthewkmayer@gmail.com>"
    "Nikita Pekin <contact@nikitapek.in>"
    ];
    dependencies = [
    {
    name = "async-trait";
    packageId = "async-trait";
    }
    {
    name = "bytes";
    packageId = "bytes";
    }
    {
    name = "futures";
    packageId = "futures";
    }
    {
    name = "rusoto_core";
    packageId = "rusoto_core";
    usesDefaultFeatures = false;
    }
    {
    name = "serde_urlencoded";
    packageId = "serde_urlencoded";
    }
    {
    name = "xml-rs";
    packageId = "xml-rs";
    }
    ];
    features = {
    "default" = [ "native-tls" ];
    "deserialize_structs" = [ "bytes/serde" "serde" "serde_derive" ];
    "native-tls" = [ "rusoto_core/native-tls" ];
    "rustls" = [ "rusoto_core/rustls" ];
    "serde" = [ "dep:serde" ];
    "serde_derive" = [ "dep:serde_derive" ];
    "serialize_structs" = [ "bytes/serde" "serde" "serde_derive" ];
    };
    resolvedDefaultFeatures = [ "default" "native-tls" ];
    };
    "rusoto_signature" = rec {
    crateName = "rusoto_signature";
    version = "0.48.0";
    edition = "2018";
    sha256 = "0wjjn3n3a01xxc1kdwqkrbw6zkgc4w8ia6r93s9lfj4b3i4rbbm5";
    authors = [
    "Anthony DiMarco <ocramida@gmail.com>"
    "Jimmy Cuadra <jimmy@jimmycuadra.com>"
    "Matthew Mayer <matthewkmayer@gmail.com>"
    "Nikita Pekin <contact@nikitapek.in>"
    ];
    dependencies = [
    {
    name = "base64";
    packageId = "base64 0.13.1";
    }
    {
    name = "bytes";
    packageId = "bytes";
    }
    {
    name = "chrono";
    packageId = "chrono";
    usesDefaultFeatures = false;
    features = [ "clock" ];
    }
    {
    name = "digest";
    packageId = "digest 0.9.0";
    }
    {
    name = "futures";
    packageId = "futures";
    }
    {
    name = "hex";
    packageId = "hex";
    }
    {
    name = "hmac";
    packageId = "hmac 0.11.0";
    }
    {
    name = "http";
    packageId = "http 0.2.12";
    }
    {
    name = "hyper";
    packageId = "hyper 0.14.32";
    features = [ "stream" ];
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "md-5";
    packageId = "md-5 0.9.1";
    }
    {
    name = "percent-encoding";
    packageId = "percent-encoding";
    }
    {
    name = "pin-project-lite";
    packageId = "pin-project-lite";
    }
    {
    name = "rusoto_credential";
    packageId = "rusoto_credential";
    }
    {
    name = "serde";
    packageId = "serde";
    }
    {
    name = "sha2";
    packageId = "sha2 0.9.9";
    }
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "macros" "rt-multi-thread" ];
    }
    ];
    buildDependencies = [
    {
    name = "rustc_version";
    packageId = "rustc_version";
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "io-util" ];
    }
    ];
    };
  • edit in Cargo.nix at line 15751
    [5.487426][5.487426:488306]()
    };
    };
    "socket2 0.5.10" = rec {
    crateName = "socket2";
    version = "0.5.10";
    edition = "2021";
    sha256 = "0y067ki5q946w91xlz2sb175pnfazizva6fi3kfp639mxnmpc8z2";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    "Thomas de Zeeuw <thomasdezeeuw@gmail.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    target = { target, features }: (target."unix" or false);
    }
    {
    name = "windows-sys";
    packageId = "windows-sys 0.52.0";
    target = { target, features }: (target."windows" or false);
    features = [ "Win32_Foundation" "Win32_Networking_WinSock" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" ];
    }
    ];
    features = {
  • edit in Cargo.nix at line 15752
    [5.488317][5.488317:488362]()
    resolvedDefaultFeatures = [ "all" ];
  • replacement in Cargo.nix at line 15753
    [5.488371][5.488371:488401]()
    "socket2 0.6.1" = rec {
    [5.488371]
    [5.488401]
    "socket2" = rec {
  • replacement in Cargo.nix at line 16992
    [5.524614][5.524614:524655]()
    packageId = "socket2 0.6.1";
    [5.524614]
    [5.524655]
    packageId = "socket2";
  • replacement in Cargo.nix at line 17017
    [5.525380][5.525380:525421]()
    packageId = "socket2 0.6.1";
    [5.525380]
    [5.525421]
    packageId = "socket2";
  • replacement in Cargo.nix at line 17210
    [5.531680][5.531680:531721]()
    packageId = "socket2 0.6.1";
    [5.531680]
    [5.531721]
    packageId = "socket2";
  • replacement in Cargo.nix at line 17856
    [5.547762][5.547762:547800]()
    packageId = "http 1.4.0";
    [5.547762]
    [5.547800]
    packageId = "http";
  • replacement in Cargo.nix at line 17860
    [5.547856][5.547856:547899]()
    packageId = "http-body 1.0.1";
    [5.547856]
    [5.547899]
    packageId = "http-body";
  • replacement in Cargo.nix at line 17916
    [5.549262][5.549262:549305]()
    packageId = "http-body 1.0.1";
    [5.549262]
    [5.549305]
    packageId = "http-body";
  • replacement in Cargo.nix at line 18308
    [6.29921][6.29921:29959]()
    packageId = "http 1.4.0";
    [6.29921]
    [6.29959]
    packageId = "http";
  • replacement in Cargo.nix at line 20841
    [5.653438][6.50082:50357]()
    resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_NetworkManagement" "Win32_NetworkManagement_IpHelper" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" "default" ];
    [5.653438]
    [5.653652]
    resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_NetworkManagement" "Win32_NetworkManagement_IpHelper" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_Threading" "default" ];
  • edit in Cargo.nix at line 22202
    [5.708775][5.708775:709095]()
    "xml-rs" = rec {
    crateName = "xml-rs";
    version = "0.8.28";
    edition = "2021";
    crateBin = [];
    sha256 = "0grdj7xwbki5zrkalrg8dljyf14y4yj3wrj34sbzqp06i9zk7s1s";
    libName = "xml";
    authors = [
    "Vladimir Matveev <vmatveev@citrine.cc>"
    ];
    };
  • replacement in Cargo.lock at line 324
    [2.614184][3.16842:16857](),[3.16857][2.614199:614219](),[2.614199][2.614199:614219]()
    "http 1.4.0",
    "http-body 1.0.1",
    [2.614184]
    [2.614219]
    "http",
    "http-body",
  • replacement in Cargo.lock at line 327
    [2.614238][3.16858:16874]()
    "hyper 1.8.1",
    [2.614238]
    [2.614254]
    "hyper",
  • replacement in Cargo.lock at line 357
    [3.17030][3.17030:17045](),[3.17045][2.615205:615225](),[2.615205][2.615205:615225]()
    "http 1.4.0",
    "http-body 1.0.1",
    [3.17030]
    [2.615225]
    "http",
    "http-body",
  • replacement in Cargo.lock at line 381
    [2.615652][3.17187:17202](),[3.17202][2.615667:615687](),[2.615667][2.615667:615687]()
    "http 1.4.0",
    "http-body 1.0.1",
    [2.615652]
    [2.615687]
    "http",
    "http-body",
  • replacement in Cargo.lock at line 399
    [2.616041][3.17324:17339]()
    "http 1.4.0",
    [2.616041]
    [2.616056]
    "http",
  • replacement in Cargo.lock at line 425
    [2.616625][3.17476:17491]()
    "http 1.4.0",
    [2.616625]
    [3.17491]
    "http",
  • replacement in Cargo.lock at line 440
    [3.17611][3.17611:17626](),[3.17626][2.616957:616977](),[2.616957][2.616957:616977](),[2.616977][3.17627:17643]()
    "http 1.4.0",
    "http-body 1.0.1",
    "hyper 1.8.1",
    [3.17611]
    [2.617012]
    "http",
    "http-body",
    "hyper",
  • replacement in Cargo.lock at line 464
    [2.617450][3.17659:17674]()
    "http 1.4.0",
    [2.617450]
    [2.617465]
    "http",
  • edit in Cargo.lock at line 473
    [2.617870][2.617870:618061]()
    version = "0.13.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
    [[package]]
    name = "base64"
  • edit in Cargo.lock at line 1523
    [2.640719][2.640719:640960]()
    ]
    [[package]]
    name = "dirs-next"
    version = "2.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
    dependencies = [
    "cfg-if",
    "dirs-sys-next",
  • edit in Cargo.lock at line 1530
    [2.641154][2.641154:641406]()
    dependencies = [
    "libc",
    "redox_users",
    "winapi",
    ]
    [[package]]
    name = "dirs-sys-next"
    version = "0.1.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
  • edit in Cargo.lock at line 1626
    [2.643364]
    [2.643364]
    name = "email-encoding"
    version = "0.4.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9298e6504d9b9e780ed3f7dfd43a61be8cd0e09eb07f7706a945b0072b6670b6"
    dependencies = [
    "base64 0.22.1",
    "memchr",
    ]
    [[package]]
    name = "email_address"
    version = "0.2.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449"
    [[package]]
  • edit in Cargo.lock at line 1991
    [3.27520][2.651655:651682](),[2.651655][2.651655:651682](),[2.651682][3.27521:27540](),[3.27540][2.651701:651766](),[2.651701][2.651701:651766](),[2.651766][3.27541:27619](),[3.27619][2.651844:652005](),[2.651844][2.651844:652005]()
    ]
    [[package]]
    name = "h2"
    version = "0.3.27"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d"
    dependencies = [
    "bytes",
    "fnv",
    "futures-core",
    "futures-sink",
    "futures-util",
    "http 0.2.12",
    "indexmap",
    "slab",
    "tokio",
    "tokio-util",
    "tracing",
  • replacement in Cargo.lock at line 2004
    [2.652279][3.27719:27734]()
    "http 1.4.0",
    [2.652279]
    [2.652294]
    "http",
  • replacement in Cargo.lock at line 2067
    [2.653710][3.28369:28384]()
    "http 1.4.0",
    [2.653710]
    [2.653725]
    "http",
  • replacement in Cargo.lock at line 2079
    [2.653971][3.28385:28400]()
    "http 1.4.0",
    [2.653971]
    [2.653986]
    "http",
  • edit in Cargo.lock at line 2141
    [2.655641]
    [2.655872]
    name = "hostname"
    version = "0.4.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd"
    dependencies = [
    "cfg-if",
    "libc",
    "windows-link",
    ]
    [[package]]
  • edit in Cargo.lock at line 2178
    [2.656473][2.656473:656708]()
    version = "0.2.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
    dependencies = [
    "bytes",
    "fnv",
    "itoa",
    ]
    [[package]]
    name = "http"
  • edit in Cargo.lock at line 2184
    [2.656913][2.656913:657172]()
    ]
    [[package]]
    name = "http-body"
    version = "0.4.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
    dependencies = [
    "bytes",
    "http 0.2.12",
    "pin-project-lite",
  • replacement in Cargo.lock at line 2193
    [2.657394][3.28834:28849]()
    "http 1.4.0",
    [2.657394]
    [2.657409]
    "http",
  • replacement in Cargo.lock at line 2204
    [3.28965][3.28965:28980](),[3.28980][2.657668:657688](),[2.657668][2.657668:657688]()
    "http 1.4.0",
    "http-body 1.0.1",
    [3.28965]
    [2.657688]
    "http",
    "http-body",
  • edit in Cargo.lock at line 2220
    [2.658289][2.658289:658561](),[2.658561][3.29080:29094](),[3.29094][2.658575:658667](),[2.658575][2.658575:658667](),[2.658667][3.29095:29114](),[3.29114][2.658679:658730](),[2.658679][2.658679:658730]()
    [[package]]
    name = "hyper"
    version = "0.14.32"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7"
    dependencies = [
    "bytes",
    "futures-channel",
    "futures-core",
    "futures-util",
    "h2 0.3.27",
    "http 0.2.12",
    "http-body 0.4.6",
    "httparse",
    "httpdate",
    "itoa",
    "pin-project-lite",
    "socket2 0.5.10",
    "tokio",
    "tower-service",
    "tracing",
    "want",
    ]
  • replacement in Cargo.lock at line 2231
    [3.29248][3.29248:29277](),[3.29277][2.659011:659031](),[2.659011][2.659011:659031]()
    "h2 0.4.12",
    "http 1.4.0",
    "http-body 1.0.1",
    [3.29248]
    [2.659031]
    "h2",
    "http",
    "http-body",
  • replacement in Cargo.lock at line 2250
    [2.659335][3.29392:29423]()
    "http 1.4.0",
    "hyper 1.8.1",
    [2.659335]
    [2.659383]
    "http",
    "hyper",
  • edit in Cargo.lock at line 2258
    [2.659475][2.659475:659761]()
    ]
    [[package]]
    name = "hyper-tls"
    version = "0.5.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
    dependencies = [
    "bytes",
    "hyper 0.14.32",
    "native-tls",
    "tokio",
    "tokio-native-tls",
  • replacement in Cargo.lock at line 2268
    [2.660002][3.29424:29440]()
    "hyper 1.8.1",
    [2.660002]
    [2.660018]
    "hyper",
  • replacement in Cargo.lock at line 2287
    [2.660358][3.29577:29592](),[3.29592][2.660373:660393](),[2.660373][2.660373:660393](),[2.660393][3.29593:29609]()
    "http 1.4.0",
    "http-body 1.0.1",
    "hyper 1.8.1",
    [2.660358]
    [3.29609]
    "http",
    "http-body",
    "hyper",
  • replacement in Cargo.lock at line 2294
    [2.660430][3.29650:29668]()
    "socket2 0.6.1",
    [2.660430]
    [3.29668]
    "socket2",
  • edit in Cargo.lock at line 2659
    [2.667911]
    [2.667911]
    name = "lettre"
    version = "0.11.22"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0da65617f6cb926332d039cb578aad56178da86e128db6a1b09f4c94fa5b3349"
    dependencies = [
    "base64 0.22.1",
    "email-encoding",
    "email_address",
    "fastrand",
    "futures-util",
    "hostname",
    "httpdate",
    "idna",
    "mime",
    "native-tls",
    "nom 8.0.0",
    "percent-encoding",
    "quoted_printable",
    "socket2",
    "tokio",
    "url",
    ]
    [[package]]
  • edit in Cargo.lock at line 2935
    [3.34384][2.674056:674320](),[2.674056][2.674056:674320]()
    ]
    [[package]]
    name = "md-5"
    version = "0.9.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15"
    dependencies = [
    "block-buffer 0.9.0",
    "digest 0.9.0",
    "opaque-debug",
  • replacement in Cargo.lock at line 3094
    [2.678229][3.35389:35404]()
    "http 1.4.0",
    [2.678229]
    [2.678244]
    "http",
  • replacement in Cargo.lock at line 3097
    [2.678276][3.35405:35421]()
    "hyper 1.8.1",
    [2.678276]
    [2.678292]
    "hyper",
  • edit in Cargo.lock at line 3104
    [2.678344]
    [7.49196]
    "lettre",
  • edit in Cargo.lock at line 3120
    [2.678557][2.678557:678610]()
    "rusoto_core",
    "rusoto_credential",
    "rusoto_ses",
  • replacement in Cargo.lock at line 4104
    [2.692737][2.692737:692753]()
    "md-5 0.10.6",
    [2.692737]
    [2.692753]
    "md-5",
  • edit in Cargo.lock at line 4242
    [2.695914]
    [3.48862]
    name = "quoted_printable"
    version = "0.5.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "478e0585659a122aa407eb7e3c0e1fa51b1d8a870038bd29f0cf4a8551eea972"
    [[package]]
  • replacement in Cargo.lock at line 4500
    [2.702233][3.50257:50286](),[3.50286][2.702278:702298](),[2.702278][2.702278:702298]()
    "h2 0.4.12",
    "http 1.4.0",
    "http-body 1.0.1",
    [2.702233]
    [2.702298]
    "h2",
    "http",
    "http-body",
  • replacement in Cargo.lock at line 4504
    [2.702317][3.50287:50303]()
    "hyper 1.8.1",
    [2.702317]
    [2.702333]
    "hyper",
  • replacement in Cargo.lock at line 4506
    [2.702350][2.702350:702370]()
    "hyper-tls 0.6.0",
    [2.702350]
    [2.702370]
    "hyper-tls",
  • edit in Cargo.lock at line 4571
    [2.703643][2.703643:705248]()
    ]
    [[package]]
    name = "rusoto_core"
    version = "0.48.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1db30db44ea73551326269adcf7a2169428a054f14faf9e1768f2163494f2fa2"
    dependencies = [
    "async-trait",
    "base64 0.13.1",
    "bytes",
    "crc32fast",
    "futures",
    "http 0.2.12",
    "hyper 0.14.32",
    "hyper-tls 0.5.0",
    "lazy_static",
    "log",
    "rusoto_credential",
    "rusoto_signature",
    "rustc_version",
    "serde",
    "serde_json",
    "tokio",
    "xml-rs",
    ]
    [[package]]
    name = "rusoto_credential"
    version = "0.48.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ee0a6c13db5aad6047b6a44ef023dbbc21a056b6dab5be3b79ce4283d5c02d05"
    dependencies = [
    "async-trait",
    "chrono",
    "dirs-next",
    "futures",
    "hyper 0.14.32",
    "serde",
    "serde_json",
    "shlex",
    "tokio",
    "zeroize",
    ]
    [[package]]
    name = "rusoto_ses"
    version = "0.48.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c365601ac8eab93ff446198a1237c6c2e3d572226cad7fe094d5dcd87d7406cd"
    dependencies = [
    "async-trait",
    "bytes",
    "futures",
    "rusoto_core",
    "serde_urlencoded",
    "xml-rs",
    ]
    [[package]]
    name = "rusoto_signature"
    version = "0.48.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "a5ae95491c8b4847931e291b151127eccd6ff8ca13f33603eb3d0035ecb05272"
    dependencies = [
    "base64 0.13.1",
    "bytes",
    "chrono",
    "digest 0.9.0",
    "futures",
    "hex",
    "hmac 0.11.0",
    "http 0.2.12",
    "hyper 0.14.32",
    "log",
    "md-5 0.9.1",
    "percent-encoding",
    "pin-project-lite",
    "rusoto_credential",
    "rustc_version",
    "serde",
    "sha2 0.9.9",
    "tokio",
  • edit in Cargo.lock at line 5026
    [2.715489][3.53965:53984](),[3.53984][2.715507:715572](),[2.715507][2.715507:715572](),[2.715572][3.53985:54063](),[3.54063][2.715650:715714](),[2.715650][2.715650:715714](),[2.715714][3.54064:54081]()
    version = "0.5.10"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
    dependencies = [
    "libc",
    "windows-sys 0.52.0",
    ]
    [[package]]
    name = "socket2"
  • replacement in Cargo.lock at line 5438
    [2.724949][3.57036:57054]()
    "socket2 0.6.1",
    [2.724949]
    [2.724961]
    "socket2",
  • replacement in Cargo.lock at line 5495
    [3.57348][3.57348:57366]()
    "socket2 0.6.1",
    [3.57348]
    [2.726228]
    "socket2",
  • replacement in Cargo.lock at line 5655
    [3.58224][3.58224:58239](),[3.58239][2.729008:729028](),[2.729008][2.729008:729028]()
    "http 1.4.0",
    "http-body 1.0.1",
    [3.58224]
    [3.58240]
    "http",
    "http-body",
  • replacement in Cargo.lock at line 5765
    [7.51698][7.51698:51713]()
    "http 1.4.0",
    [7.51698]
    [7.51713]
    "http",
  • edit in Cargo.lock at line 6697
    [2.747670][2.747670:747686](),[2.747686][3.66584:66603](),[3.66603][2.747705:747770](),[2.747705][2.747705:747770](),[2.747770][3.66604:66682](),[3.66682][2.747848:747861](),[2.747848][2.747848:747861]()
    name = "xml-rs"
    version = "0.8.28"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f"
    [[package]]