Replace "extern crate" and #[macro_use] declarations with "use" imports.

Both "extern crate" and #[macro_use] are artifacts of earlier editions
of Rust language. Nowadays we can entirely rely on "use" instead.

Changes:
- Replace "extern crate" with "use" imports.
- Replace

    #[macro_use]
    extern crate ...;

  declarations with "use" imports of used macros. For example,

    #[macro_use]
    extern crate anyhow;

  was replaced with

    use anyhow::anyhow;

  in every file where anyhow! macro were used.
- Favor direct usage of import path instead of aliased one.
  For example, in many places "sequoia_opengpg" were aliased as "openpgp",
  during imports replacements I tried to avoid usage of "openpgp" or
  introduced additional aliases (like "use sequoia_openpgp as openpgp")
  and used "sequoia_opengpg".
  I think this way it is easier to understand where name came from
  instead of search and jumping to lib.rs or main.rs files trying to
  find where name were aliased.
  Another example of such favoring is usage of "hagrid_database" over
  the "database" in imports.
  NOTE: the usage is still inconsistent and requires further clean up.
This commit is contained in:
Zeke Fast
2025-04-27 23:36:59 +02:00
parent 5399e6c2d3
commit 09072200d6
29 changed files with 90 additions and 123 deletions

View File

@@ -1,5 +1,3 @@
extern crate vergen;
use vergen::{ConstantsFlags, generate_cargo_keys};
fn main() {

View File

@@ -9,6 +9,8 @@ use std::path::{Path, PathBuf};
use pathdiff::diff_paths;
use std::time::SystemTime;
use anyhow::{anyhow, format_err};
use log::info;
use url::form_urlencoded;
use crate::Result;
@@ -21,7 +23,7 @@ use crate::wkd;
use tempfile::NamedTempFile;
use crate::openpgp_utils::POLICY;
use openpgp::Cert;
use sequoia_openpgp::Cert;
use crate::DatabaseTransaction;
@@ -837,7 +839,7 @@ fn path_merge(path: &Path) -> String {
mod tests {
use super::*;
use crate::test;
use openpgp::cert::CertBuilder;
use sequoia_openpgp::cert::CertBuilder;
use tempfile::TempDir;
#[test]

View File

@@ -3,33 +3,12 @@
use std::convert::TryFrom;
use std::str::FromStr;
use openpgp::serialize::SerializeInto;
use sequoia_openpgp::{serialize::SerializeInto, Cert, packet::UserID, parse::Parse, types::KeyFlags};
use chrono::prelude::Utc;
#[macro_use]
extern crate anyhow;
use anyhow::Result;
extern crate fs2;
extern crate idna;
#[macro_use]
extern crate log;
extern crate chrono;
extern crate hex;
extern crate pathdiff;
extern crate r2d2_sqlite;
extern crate rand;
extern crate self_cell;
extern crate serde;
extern crate serde_json;
extern crate tempfile;
extern crate time;
extern crate url;
extern crate walkdir;
extern crate zbase32;
extern crate sequoia_openpgp as openpgp;
use openpgp::{Cert, packet::UserID, parse::Parse, types::KeyFlags};
use anyhow::{anyhow, Result};
use log::{info, error};
pub mod types;
use types::{Email, Fingerprint, KeyID};

View File

@@ -1,7 +1,7 @@
use openpgp::Result;
use std::convert::TryFrom;
use openpgp::{
use sequoia_openpgp::{
Result,
Cert, cert::prelude::*, policy::StandardPolicy, serialize::SerializeInto as _,
types::RevocationStatus,
};

View File

@@ -6,13 +6,11 @@ use std::path::PathBuf;
use std::str::FromStr;
use std::time::{SystemTime, UNIX_EPOCH};
use anyhow::format_err;
use crate::Result;
use crate::types::{Email, Fingerprint, KeyID};
use crate::{Database, Query};
use openpgp::policy::StandardPolicy;
use openpgp::Cert;
use sequoia_openpgp::{Cert, policy::StandardPolicy};
use r2d2_sqlite::SqliteConnectionManager;
use r2d2_sqlite::rusqlite::OptionalExtension;
@@ -483,7 +481,7 @@ impl<'a> Database<'a> for Sqlite {
mod tests {
use super::*;
use crate::test;
use openpgp::cert::CertBuilder;
use sequoia_openpgp::cert::CertBuilder;
use tempfile::TempDir;
const DATA_1: &str = "data, content doesn't matter";

View File

@@ -3,7 +3,7 @@ use std::io::{Read, Write};
use std::path::PathBuf;
use std::str;
use log::info;
use crate::Result;
pub struct StatefulTokens {

View File

@@ -20,13 +20,12 @@ use std::str::FromStr;
use crate::types::{Email, Fingerprint, KeyID};
use crate::{Database, Query};
use openpgp::cert::{CertBuilder, UserIDRevocationBuilder};
use openpgp::types::{KeyFlags, ReasonForRevocation, SignatureType};
use openpgp::{
use sequoia_openpgp::{
cert::{CertBuilder, UserIDRevocationBuilder},
Cert, Packet,
packet::{UserID, signature::*},
parse::Parse,
types::RevocationStatus,
types::{KeyFlags, ReasonForRevocation, SignatureType, RevocationStatus},
};
use crate::openpgp_utils::POLICY;
@@ -1353,7 +1352,7 @@ pub fn test_no_selfsig<'a>(db: &'a mut impl Database<'a>) {
/// Makes sure that attested key signatures are correctly handled.
pub fn attested_key_signatures<'a>(db: &'a mut impl Database<'a>) -> Result<()> {
use openpgp::types::*;
use sequoia_openpgp::types::*;
use std::time::{Duration, SystemTime};
let t0 = SystemTime::now() - Duration::new(5 * 60, 0);
let t1 = SystemTime::now() - Duration::new(4 * 60, 0);

View File

@@ -4,9 +4,9 @@ use std::result;
use std::str::FromStr;
use crate::Result;
use anyhow::Error;
use anyhow::{anyhow, Error};
use hex::ToHex;
use openpgp::packet::UserID;
use sequoia_openpgp::packet::UserID;
use r2d2_sqlite::rusqlite::types::FromSql;
use r2d2_sqlite::rusqlite::types::FromSqlError;
use r2d2_sqlite::rusqlite::types::FromSqlResult;

View File

@@ -1,5 +1,6 @@
use anyhow::anyhow;
use super::Result;
use crate::openpgp::types::HashAlgorithm;
use sequoia_openpgp::types::HashAlgorithm;
use zbase32;
// cannibalized from

View File

@@ -8,13 +8,11 @@ use std::thread;
use anyhow::Result;
extern crate tempfile;
extern crate sequoia_openpgp as openpgp;
use sequoia_openpgp as openpgp;
use openpgp::Packet;
use openpgp::parse::{PacketParser, PacketParserResult, Parse};
extern crate hagrid_database as database;
use hagrid_database as database;
use database::{Database, EmailAddressStatus, ImportResult, KeyDatabase};
use indicatif::{MultiProgress, ProgressBar, ProgressStyle};

View File

@@ -1,14 +1,3 @@
extern crate anyhow;
extern crate clap;
extern crate hagrid_database as database;
extern crate sequoia_openpgp as openpgp;
extern crate tempfile;
#[macro_use]
extern crate serde_derive;
extern crate indicatif;
extern crate toml;
extern crate walkdir;
use std::fs;
use std::path::PathBuf;
use std::str::FromStr;
@@ -16,6 +5,7 @@ use std::str::FromStr;
use anyhow::Result;
use clap::{App, Arg, SubCommand};
use serde_derive::Deserialize;
mod import;

View File

@@ -1,7 +1,7 @@
use lazy_static::lazy_static;
use std::collections::HashSet;
use crate::database::types::Email;
use hagrid_database::types::Email;
// from https://github.com/mailcheck/mailcheck/wiki/List-of-Popular-Domains
lazy_static! {

View File

@@ -3,7 +3,7 @@ use rocket_prometheus::prometheus;
use crate::anonymize_utils;
use crate::database::types::Email;
use hagrid_database::types::Email;
lazy_static! {
static ref KEY_UPLOAD: LabelCounter =

View File

@@ -3,14 +3,11 @@
use std::convert::TryInto;
use std::path::PathBuf;
extern crate anyhow;
use anyhow::Result;
extern crate structopt;
use structopt::StructOpt;
extern crate hagrid_database as database;
use crate::database::{Database, KeyDatabase, Query};
use hagrid_database::{Database, KeyDatabase, Query, types::Fingerprint};
#[derive(Debug, StructOpt)]
#[structopt(
@@ -70,7 +67,7 @@ fn delete(db: &KeyDatabase, query: &Query, all_bindings: bool, mut all: bool) ->
.lookup(query)?
.ok_or_else(|| anyhow::format_err!("No TPK matching {:?}", query))?;
let fp: database::types::Fingerprint = tpk.fingerprint().try_into()?;
let fp: Fingerprint = tpk.fingerprint().try_into()?;
let mut results = Vec::new();
// First, delete the bindings.

View File

@@ -1,4 +1,4 @@
use crate::database::Query;
use hagrid_database::Query;
use gettext_macros::i18n;
use rocket_i18n::I18n;

View File

@@ -1,5 +1,5 @@
use std::path::{Path, PathBuf};
use anyhow::anyhow;
use crate::counters;
use lettre::message::{Mailbox, MultiPart, SinglePart, header};
use lettre::{FileTransport, SendmailTransport, SmtpTransport, Transport as LettreTransport};
@@ -13,9 +13,11 @@ use rocket_i18n::I18n;
use crate::template_helpers;
use crate::Result;
use crate::database::types::Email;
use hagrid_database::types::Email;
mod context {
use serde_derive::Serialize;
#[derive(Serialize, Clone)]
pub struct Verification {
pub lang: String,

View File

@@ -1,20 +1,7 @@
#![recursion_limit = "1024"]
#[macro_use]
extern crate anyhow;
use anyhow::Result;
#[macro_use]
extern crate serde_derive;
#[macro_use]
extern crate rocket;
#[cfg(test)]
extern crate regex;
extern crate hagrid_database as database;
use rocket::launch;
use gettext_macros::init_i18n;
#[cfg(debug_assertions)]

View File

@@ -1,7 +1,9 @@
use anyhow::anyhow;
use crate::sealed_state::SealedState;
use crate::Result;
use serde::{Serialize, de::DeserializeOwned};
use serde_derive::Deserialize;
pub trait StatelessSerializable: Serialize + DeserializeOwned {}

View File

@@ -1,12 +1,13 @@
use std::io;
use anyhow::anyhow;
use rocket_i18n::I18n;
use rocket::get;
use crate::dump::{self, Kind};
use crate::i18n_helpers::describe_query_error;
use crate::web::MyResponse;
use crate::database::{Database, KeyDatabase, Query};
use hagrid_database::{Database, KeyDatabase, Query};
#[get("/debug?<q>")]
pub fn debug_info(db: &rocket::State<KeyDatabase>, i18n: I18n, q: String) -> MyResponse {

View File

@@ -7,10 +7,10 @@ use std::time::SystemTime;
use rocket::Data;
use rocket::http::ContentType;
use rocket_i18n::I18n;
use rocket::{get, post};
use url::percent_encoding::{DEFAULT_ENCODE_SET, utf8_percent_encode};
use crate::database::types::{Email, Fingerprint, KeyID};
use crate::database::{Database, KeyDatabase, Query};
use hagrid_database::{Database, KeyDatabase, Query, types::{Email, Fingerprint, KeyID}};
use crate::i18n_helpers::describe_query_error;
use crate::rate_limiter::RateLimiter;

View File

@@ -1,13 +1,14 @@
use rocket::fairing::{Fairing, Info, Kind};
use rocket::http::Method;
use rocket::{Data, Request};
use rocket::{async_trait, uri, get};
use rocket_dyn_templates::Template;
use rocket_i18n::I18n;
use serde_json::json;
use std::fs;
use std::path::PathBuf;
use serde_derive::Serialize;
use crate::web::MyResponse;
use super::util::get_commit_sha;
@@ -17,6 +18,8 @@ pub struct MaintenanceMode {
}
mod templates {
use serde_derive::Serialize;
#[derive(Serialize)]
pub struct MaintenanceMode {
pub message: String,

View File

@@ -1,18 +1,23 @@
use anyhow::anyhow;
use rocket::form::Form;
use rocket::{get, post, uri};
use rocket_i18n::I18n;
use crate::Result;
use gettext_macros::i18n;
use serde_derive::{Deserialize, Serialize};
use crate::counters;
use crate::database::{Database, KeyDatabase, types::Email, types::Fingerprint};
use hagrid_database::{Database, KeyDatabase, types::Email, types::Fingerprint, Query};
use crate::mail;
use crate::rate_limiter::RateLimiter;
use crate::tokens::{self, StatelessSerializable};
use crate::web::vks_web;
use crate::web::{MyResponse, RequestOrigin};
use std::convert::TryFrom;
use std::convert::TryInto;
#[derive(Debug, Serialize, Deserialize)]
struct StatelessVerifyToken {
fpr: Fingerprint,
@@ -20,6 +25,8 @@ struct StatelessVerifyToken {
impl StatelessSerializable for StatelessVerifyToken {}
mod templates {
use serde_derive::Serialize;
#[derive(Serialize)]
pub struct ManageKey {
pub key_fpr: String,
@@ -42,6 +49,8 @@ mod templates {
}
pub mod forms {
use rocket::FromForm;
#[derive(FromForm)]
pub struct ManageRequest {
pub search_term: String,
@@ -67,10 +76,8 @@ pub fn vks_manage_key(
token: String,
token_service: &rocket::State<tokens::Service>,
) -> MyResponse {
use crate::database::types::Fingerprint;
use std::convert::TryFrom;
if let Ok(StatelessVerifyToken { fpr }) = token_service.check(&token) {
match db.lookup(&database::Query::ByFingerprint(fpr)) {
match db.lookup(&Query::ByFingerprint(fpr)) {
Ok(Some(tpk)) => {
let fp = Fingerprint::try_from(tpk.fingerprint()).unwrap();
let mut emails: Vec<Email> = tpk
@@ -124,8 +131,6 @@ pub fn vks_manage_post(
request: Form<forms::ManageRequest>,
token_service: &rocket::State<tokens::Service>,
) -> MyResponse {
use std::convert::TryInto;
let email = match request.search_term.parse::<Email>() {
Ok(email) => email,
Err(_) => {
@@ -138,7 +143,7 @@ pub fn vks_manage_post(
}
};
let tpk = match db.lookup(&database::Query::ByEmail(email.clone())) {
let tpk = match db.lookup(&Query::ByEmail(email.clone())) {
Ok(Some(tpk)) => tpk,
Ok(None) => {
return MyResponse::not_found(

View File

@@ -3,7 +3,7 @@ use rocket::figment::Figment;
use rocket::fs::NamedFile;
use rocket::http::{Header, Status};
use rocket::outcome::Outcome;
use rocket::request;
use rocket::{async_trait, request, get, routes};
use rocket::response::status::Custom;
use rocket::response::{Responder, Response};
use rocket_dyn_templates::{Engines, Template};
@@ -27,8 +27,7 @@ use crate::template_helpers::TemplateOverrides;
use crate::tokens;
use crate::Result;
use crate::database::types::Fingerprint;
use crate::database::{Database, KeyDatabase, Query};
use hagrid_database::{Database, KeyDatabase, Query, types::Fingerprint, StatefulTokens};
use std::convert::TryInto;
@@ -209,6 +208,7 @@ impl MyResponse {
}
mod templates {
use serde_derive::Serialize;
use super::{I18n, RequestOrigin, util::get_commit_sha};
#[derive(Serialize)]
@@ -539,9 +539,9 @@ fn configure_hagrid_state(config: &Figment) -> Result<HagridState> {
})
}
fn configure_stateful_token_service(config: &Figment) -> Result<database::StatefulTokens> {
fn configure_stateful_token_service(config: &Figment) -> Result<StatefulTokens> {
let token_dir: PathBuf = config.extract_inner("token_dir")?;
database::StatefulTokens::new(token_dir)
StatefulTokens::new(token_dir)
}
fn configure_stateless_token_service(config: &Figment) -> Result<tokens::Service> {
@@ -1115,7 +1115,7 @@ pub mod tests {
&format!("/pks/lookup?op=get&options=mr&search={}", addr),
);
let (wkd_hash, domain) = crate::database::wkd::encode_wkd(addr).unwrap();
let (wkd_hash, domain) = hagrid_database::wkd::encode_wkd(addr).unwrap();
check_null_response(
client,
&format!("/.well-known/openpgpkey/{}/hu/{}", domain, wkd_hash),
@@ -1149,7 +1149,7 @@ pub mod tests {
check_hr_response(client, &format!("/search?q={}", addr), tpk, nr_uids);
check_hr_response_onion(client, &format!("/search?q={}", addr), tpk, nr_uids);
let (wkd_hash, domain) = crate::database::wkd::encode_wkd(addr).unwrap();
let (wkd_hash, domain) = hagrid_database::wkd::encode_wkd(addr).unwrap();
check_wkd_response(
client,
&format!("/.well-known/openpgpkey/{}/hu/{}", domain, wkd_hash),

View File

@@ -1,9 +1,8 @@
use crate::Result;
use crate::counters;
use crate::database::types::{Email, Fingerprint};
use crate::database::{
Database, EmailAddressStatus, ImportResult, KeyDatabase, StatefulTokens, TpkStatus,
use hagrid_database::{
Database, EmailAddressStatus, ImportResult, KeyDatabase, StatefulTokens, TpkStatus, types::{Email, Fingerprint}
};
use crate::mail;
use crate::rate_limiter::RateLimiter;
@@ -21,10 +20,13 @@ use sequoia_openpgp::parse::{Dearmor, PacketParserBuilder, Parse};
use std::collections::HashMap;
use std::convert::TryFrom;
use std::io::Read;
use anyhow::anyhow;
use serde_derive::{Deserialize, Serialize};
use self::response::*;
pub mod request {
use serde_derive::Deserialize;
#[derive(Deserialize)]
pub struct UploadRequest {
pub keytext: String,
@@ -38,7 +40,10 @@ pub mod request {
}
pub mod response {
use crate::database::types::Email;
use hagrid_database::types::Email;
use std::collections::HashMap;
use serde_derive::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub enum EmailStatus {
@@ -52,8 +57,6 @@ pub mod response {
Revoked,
}
use std::collections::HashMap;
pub enum UploadResponse {
Ok {
token: String,

View File

@@ -1,3 +1,4 @@
use rocket::{get, post};
use rocket::http::{ContentType, Status};
use rocket::request::Request;
use rocket::response::{self, Responder, Response};
@@ -6,8 +7,7 @@ use rocket_i18n::{I18n, Translations};
use serde_json::json;
use std::io::Cursor;
use crate::database::types::{Email, Fingerprint, KeyID};
use crate::database::{KeyDatabase, Query, StatefulTokens};
use hagrid_database::{types::{Email, Fingerprint, KeyID}, KeyDatabase, Query, StatefulTokens};
use crate::mail;
use crate::rate_limiter::RateLimiter;
use crate::tokens;
@@ -22,6 +22,7 @@ use rocket::serde::json::Error as JsonError;
pub mod json {
use crate::web::vks::response::EmailStatus;
use std::collections::HashMap;
use serde_derive::{Deserialize, Serialize};
#[derive(Deserialize)]
pub struct VerifyRequest {

View File

@@ -11,9 +11,11 @@ use rocket::form::Form;
use rocket::form::ValueField;
use rocket::http::ContentType;
use rocket_i18n::I18n;
use rocket::uri;
use rocket::{get, post, put};
use url::percent_encoding::percent_decode;
use crate::database::{Database, KeyDatabase, Query, StatefulTokens};
use hagrid_database::{Database, KeyDatabase, Query, StatefulTokens};
use crate::i18n_helpers::describe_query_error;
use crate::mail;
use crate::rate_limiter::RateLimiter;
@@ -22,13 +24,16 @@ use crate::web::{MyResponse, RequestOrigin};
use std::collections::HashMap;
use std::io::Cursor;
use anyhow::anyhow;
use crate::web::vks;
use crate::web::vks::response::*;
const UPLOAD_LIMIT: ByteUnit = ByteUnit::Mebibyte(1);
mod forms {
use rocket::FromForm;
use serde_derive::Deserialize;
#[derive(FromForm, Deserialize)]
pub struct VerifyRequest {
pub token: String,
@@ -42,6 +47,8 @@ mod forms {
}
mod template {
use serde_derive::Serialize;
#[derive(Serialize)]
pub struct VerifyForm {
pub token: String,

View File

@@ -1,5 +1,6 @@
use crate::database::{Database, KeyDatabase};
use hagrid_database::{Database, KeyDatabase};
use crate::web::MyResponse;
use rocket::get;
// WKD queries
#[get("/.well-known/openpgpkey/<domain>/hu/<wkd_hash>")]

View File

@@ -3,7 +3,7 @@ use std::{fs::File, io::Write, path::Path};
use anyhow::Result;
use indicatif::{ProgressBar, ProgressStyle};
use openpgp::{cert::CertBuilder, serialize::Serialize};
use sequoia_openpgp::{cert::CertBuilder, serialize::Serialize};
use crate::util;

View File

@@ -1,10 +1,3 @@
extern crate anyhow;
extern crate clap;
extern crate indicatif;
extern crate rand;
extern crate sequoia_openpgp as openpgp;
extern crate serde_derive;
use std::path::PathBuf;
use anyhow::Result;