mirror of
https://gitlab.com/keys.openpgp.org/hagrid.git
synced 2025-10-06 00:23:08 +02:00
test-via-nix-shell
191 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
|
178dfb9dec | db: drop fs database code | ||
|
2e9a14f58e |
Back out "Fix linting errors after Rust version upgrade."
This backs out commit
|
||
|
0fe99ba962 |
Fix linting errors after Rust version upgrade.
Command: just lint Changes: - Fix the following linting errors: warning: this `if` statement can be collapsed --> database/src/fs.rs:335:5 | 335 | / if let Ok(target) = read_link(link) { 336 | | if target == expected { 337 | | remove_file(link)?; 338 | | } 339 | | } | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if = note: `#[warn(clippy::collapsible_if)]` on by default help: collapse nested if block | 335 ~ if let Ok(target) = read_link(link) 336 ~ && target == expected { 337 | remove_file(link)?; 338 ~ } | warning: this `if` statement can be collapsed --> database/src/fs.rs:510:9 | 510 | / if let Ok(target) = read_link(&link_fpr) { 511 | | if target == expected { 512 | | remove_file(&link_fpr)?; 513 | | } 514 | | } | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if help: collapse nested if block | 510 ~ if let Ok(target) = read_link(&link_fpr) 511 ~ && target == expected { 512 | remove_file(&link_fpr)?; 513 ~ } | warning: this `if` statement can be collapsed --> database/src/fs.rs:515:9 | 515 | / if let Ok(target) = read_link(&link_keyid) { 516 | | if target == expected { 517 | | remove_file(link_keyid)?; 518 | | } 519 | | } | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if help: collapse nested if block | 515 ~ if let Ok(target) = read_link(&link_keyid) 516 ~ && target == expected { 517 | remove_file(link_keyid)?; 518 ~ } | warning: this `if` statement can be collapsed --> database/src/fs.rs:630:9 | 630 | / if let Ok(link_fpr_target) = link_fpr.canonicalize() { 631 | | if !link_fpr_target.ends_with(&path_published) { 632 | | info!( 633 | | "Fingerprint points to different key for {} (expected {:?} to be suffix of {:?})", ... | 638 | | } | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if help: collapse nested if block | 630 ~ if let Ok(link_fpr_target) = link_fpr.canonicalize() 631 ~ && !link_fpr_target.ends_with(&path_published) { 632 | info!( ... 636 | return Err(anyhow!(format!("Fingerprint collision for key {}", fpr))); 637 ~ } | warning: this `if` statement can be collapsed --> database/src/fs.rs:640:9 | 640 | / if let Ok(link_keyid_target) = link_keyid.canonicalize() { 641 | | if !link_keyid_target.ends_with(&path_published) { 642 | | info!( 643 | | "KeyID points to different key for {} (expected {:?} to be suffix of {:?})", ... | 648 | | } | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if help: collapse nested if block | 640 ~ if let Ok(link_keyid_target) = link_keyid.canonicalize() 641 ~ && !link_keyid_target.ends_with(&path_published) { 642 | info!( ... 646 | return Err(anyhow!(format!("KeyID collision for key {}", fpr))); 647 ~ } | warning: this `if` statement can be collapsed --> database/src/lib.rs:534:9 | 534 | / if let Some(current_fpr) = current_link_fpr { 535 | | if current_fpr != *fpr_primary { 536 | | self.set_email_unpublished_filter(tx, ¤t_fpr, |uid| { 537 | | Email::try_from(uid) ... | 542 | | } | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if help: collapse nested if block | 534 ~ if let Some(current_fpr) = current_link_fpr 535 ~ && current_fpr != *fpr_primary { 536 | self.set_email_unpublished_filter(tx, ¤t_fpr, |uid| { ... 540 | })?; 541 ~ } | warning: this `if` statement can be collapsed --> hagridctl/src/delete.rs:79:9 | 79 | / if err.is_ok() { 80 | | if let Err(e) = result { 81 | | err = Err(e); 82 | | } 83 | | } | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if = note: `#[warn(clippy::collapsible_if)]` on by default help: collapse nested if block | 79 ~ if err.is_ok() 80 ~ && let Err(e) = result { 81 | err = Err(e); 82 ~ } | warning: this `if` statement can be collapsed --> hagridctl/src/import.rs:197:9 | 197 | / if !acc.is_empty() { 198 | | if let Packet::PublicKey(_) | Packet::SecretKey(_) = packet { 199 | | callback(acc); 200 | | acc = vec![]; 201 | | } 202 | | } | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if help: collapse nested if block | 197 ~ if !acc.is_empty() 198 ~ && let Packet::PublicKey(_) | Packet::SecretKey(_) = packet { 199 | callback(acc); 200 | acc = vec![]; 201 ~ } | warning: this `if` statement can be collapsed --> src/dump.rs:522:25 | 522 | / if pd.mpis { 523 | | if let Ok(ciphertext) = e.ciphertext() { 524 | | pd.dump_mpis(output, &ii, &[ciphertext], &["ciphertext"])?; 525 | | } 526 | | } | |_________________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if = note: `#[warn(clippy::collapsible_if)]` on by default help: collapse nested if block | 522 ~ if pd.mpis 523 ~ && let Ok(ciphertext) = e.ciphertext() { 524 | pd.dump_mpis(output, &ii, &[ciphertext], &["ciphertext"])?; 525 ~ } | |
||
|
0dceaa454f |
Fix compilation warnings after Rust version upgrade.
Command: `just check` Changes: - The following warnings were fixed: warning: hiding a lifetime that's elided elsewhere is confusing --> database/src/sqlite.rs:146:11 | 146 | fn tx(&self) -> &Transaction { | ^^^^^ ------------ | | || | | |the same lifetime is hidden here | | the same lifetime is elided here | the lifetime is elided here | = help: the same lifetime is referred to in inconsistent ways, making the signature confusing = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default help: use `'_` for type paths | 146 | fn tx(&self) -> &Transaction<'_> { | ++++ warning: hiding a lifetime that's elided elsewhere is confusing --> src/dump.rs:22:30 | 22 | pub fn display_sensitive(&self) -> SessionKeyDisplay { | ^^^^^ ----------------- the same lifetime is hidden here | | | the lifetime is elided here | = help: the same lifetime is referred to in inconsistent ways, making the signature confusing = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default help: use `'_` for type paths | 22 | pub fn display_sensitive(&self) -> SessionKeyDisplay<'_> { | ++++ |
||
|
015e698725 |
Clean up unused imports warnings which appeared in tests.
Cleaned warnings:
warning: unused import: `std::time::SystemTime`
--> database/src/test.rs:19:5
|
19 | use std::time::SystemTime;
| ^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: unused import: `PublicParts`
--> database/src/test.rs:24:55
|
24 | use sequoia_openpgp::packet:🔑:{Key4, PrimaryRole, PublicParts, SecretParts};
| ^^^^^^^^^^^
warning: unused imports: `Features` and `HashAlgorithm`
--> database/src/test.rs:25:30
|
25 | use sequoia_openpgp::types::{Features, HashAlgorithm};
| ^^^^^^^^ ^^^^^^^^^^^^^
|
||
|
5aa404fc32 | Split tests for: naked key, DKS key, revoked key | ||
|
5b28cedf37 |
Fix naked-key upload test (test_no_selfsig )
Previously, the test used Sequoia's high-level API which attached a Direct-Key Signature to the key. As such, this wasn't a truly naked-key. This test uses low-level API to contruct a bare key and checks if the import fails. Then it attaches a DKS which causes the import to succeed. Then it revokes that key and checks if the revocation is correctly propagated. |
||
|
12f0eef5be |
Consider keys OK if they have at least one self-signature
This is especially useful for small keys with only a Direct Key Signature. Closes: https://gitlab.com/keys.openpgp.org/hagrid/-/issues/180 |
||
|
784d866da0 |
Remove aliasing of Sqlite as KeyDatabase in database/src/lib.rs. Change usages accordingly.
I believe KeyDatabase name is the thing of the past which was made to simplify migration to Sqlite without doing the renaming all over code base (which this commit does). So, this is a bit of technical debt IMO and direct usage of Sqlite would serve better code readability. KeyDatabase leaks presence of Sqlite though functions like new_file() and others as such it doesn't serve very good the purpose of abstracting things away and hiding the fact of Sqlite behind. |
||
|
4a6ba18b33 |
Remove unnecessary Result:: type specification and use Ok() directly in database::Sqlite.
Awhile ago we returned default Result type to core::result::Result instead of anyhow::Result. So, such prefixing is not needed any more. |
||
|
d9afbd151c |
Replace "-c, --config" and "-e, --environment" opts with "--db-file-path" and "HAGRID_DB_FILE_PATH" env var.
Code review issue: https://gitlab.com/keys.openpgp.org/hagrid/-/merge_requests/214#note_2484117659 Changes: - Extract database file path and log dir path constructions from Sqlite::new_file() and Sqlite::new_internal() associated functions to Sqlite::db_file_path() and Sqlite::log_dir_path(). These path manipulations inside Sqlite/KeyDatabase wasn't ideal as they increased diversity of reasons why Sqlite constructions can fail, unnecessary constrain how Sqlite and with which paths can be used, and that logic doesn't actually belong to Sqlite itself. So, later we probably have to move these db_file_path() and log_dir_path() functions else where. - Replace base_dir parameter of Sqlite::new_file() with "db_file" and "log_dir" params which gives us a way to use database file passed in command line options. - Add Sqlite::log_dir_path_from_db_file_path() associated function to infer log_dir_path based on given db_file_path. It is used in command handler where only db_file_path provided. - Pull up log dir construction from Sqlite::new_internal() to Sqlite::new_file() to avoid passing through log_dir_path through several functions. This also makes Sqlite::new_file() signature cleaner. - Fix usages of Sqlite/KeyDatabase::new_file through out the code base: and instead of providing base_dir, populate db_file_path and log_dir_path using Sqlite::db_file_path() and Sqlite::log_dir_path() functions which calculate paths based on provided base_dir. - Remove "-c, --config" and "-e, --environment" options from hagridctl::cli::Cli. - Remove hagridctl::cli::DeploymentEnvironment enum. - Remove entire hagridctl::config module as we don't extract paths from configuration any more. - Add "env" feature flag to "clap" dependency in hagridctl/Cargo.toml to be able to populate Cli::db_file_path field from HAGRID_DB_FILE_PATH environment variable. - Add optional --db-file-path option to "hagridctl". Cli::db_file_path is obligatory, but when --db-file-path is not provided Clap tries to populate it from HAGRID_DB_FILE_PATH env var and if that's not possible Clap terminates with error message. - In hagridctl::cli::dispatch_cmd() use db_file_path from cli.db_file_path instead of keys_internal_dir extracted from configuration. - Replace keys_db_internal_dir with db_file_path in the following command handlers: - hagridctl::delete::run - hagridctl::import::run - Get rid of unnecessary Result unwrapping and wrapping it again in hagrid::web::configure_db_service function and return the value from KeyDatabase::new_file immediately instead. |
||
|
81b333bd43 |
Replace "base" arg in "hagridctl delete" cmd with keys_internal_dir extracted from config.
Code review issue: https://gitlab.com/keys.openpgp.org/hagrid/-/merge_requests/214#note_2482983036 Changes: - Change type of "base_dir" argument of database::Sqlite::new_file() associated function form "impl Into<PathBuf>" to "impl AsRef<Path>" as AsRef<Path> is more generic. - Remove "base" argument from "hagridctl delete" command. - Extract "config" and "environment" options from "import" command to hagridctl::cli::Cli struct. - Make "config" and "environment" options global, i.e. they can be specified with any command. - Change "environment" from being argument to option as being argument doesn't play well with "import" command where arbitrary list of KEYRING_FILES can be specified. In general, being global works much better with options then arguments. So, <ENVIRONMENT> argument became "-e, --environment <ENVIRONMENT>" option with the same default value (production). - KEYRING_FILES in "import" command don't need to be "last" any more. - Get "keys_db_internal_dir" in hagridctl::cli::dispatch_cmd() and let it be propagated to places where KeyDatabase is created instead of progapagation of config or base_dir. |
||
|
0a829824dc |
Eliminate redundant conversions to Option and usage of filter_map. Use flat_map directly instead.
Documentation: - https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.filter_map - https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.flat_map Additional Changes: - Use point-less style and pass Email::try_from function directly to flat_map. flat_map passes uid to Email::try_from implicitly. That's why it's called point-less style. IMO it looks nicer! |
||
|
0bea4f0f2a |
Remove imports of anyhow::Error and use named path anyhow::Error in place.
This is done for the same reason as for anyhow::Result and core::result::Result types. Error is whidely used name and IMO it usually good to keep it standard. Apart from that I think assosicated type specification looks fore readable when anyhow::Error is used in place. For example: type Error = Error; was replaced with type Error = anyhow::Error; Changes: - Replace usage of imported unquolified Error type with anyhow::Error. - Remove imports of anyhow::Error. |
||
|
4d57dc1eb2 |
Replace imported anyhow::Result with usage of anyhow::Result in place.
This is to make this few files to much in style rest of code base. |
||
|
0cfd412907 |
Clean up linting warnings about unused imports.
warning: unused import: `std::result` --> database/src/types.rs:3:5 | 3 | use std::result; | ^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default |
||
|
9094b09b27 | Format code. | ||
|
c28e6af441 |
Restore default Result type to std::result::Result (aka core::result::Result).
Result it widely used type and the name is highly overloaded as almost every library tend to define they own Result type. When default Result type deviates from default it is usually harder to read code and requires a bit of investigation work to understand this particular Result corresponds to. In Hagrid code base in many places anyhow::Result was made a default type. It usually was imported through indirection, i.e. use anyhow::Result; was imported in files like - database/src/lib.rs - hagridctl/src/import.rs - hagridctl/src/main.rs - src/main.rs and in submodules that above import was reimported with something like use crate::Result; or use super::Result; So, I qualified such Result as anyhow::Result which IMO make code easier to understand and "anyhow" is short enough name to use along with Result. All imports and reimports was cleaned up. Changes: - Full qualify anyhow's Result name as anyhow::Result in places where it is used to make code easier to read and understand. - Remove imports and reimports of anyhow::Result. - Restore default Result type to core::result::Result (aka std::result::Result). - Clean up unnecesary name path qualification for Result type like "std::result" or "result" as it becomes a default one and doesn't overriden any more. |
||
|
9bc3ccecac |
Format code (mostly imports).
Commands: cargo fmt --all |
||
|
09072200d6 |
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. |
||
|
0200c15266 |
Format code.
Commands: cargo fmt --all |
||
|
e85e414619 |
Clean up linting warnings: allocating a new String only to create a temporary &str from it.
Commands: cargo clippy --tests --no-deps --workspace Warnings: warning: allocating a new `String` only to create a temporary `&str` from it --> database/src/test.rs:109:37 | 109 | let email = Email::from_str(&String::from_utf8(uid.value().to_vec()).unwrap()).unwrap(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned = note: `#[warn(clippy::unnecessary_to_owned)]` on by default help: convert from `&[u8]` to `&str` directly | 109 - let email = Email::from_str(&String::from_utf8(uid.value().to_vec()).unwrap()).unwrap(); 109 + let email = Email::from_str(core::str::from_utf8(uid.value()).unwrap()).unwrap(); | warning: allocating a new `String` only to create a temporary `&str` from it --> database/src/test.rs:137:37 | 137 | let email = Email::from_str(&String::from_utf8(uid.value().to_vec()).unwrap()).unwrap(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned help: convert from `&[u8]` to `&str` directly | 137 - let email = Email::from_str(&String::from_utf8(uid.value().to_vec()).unwrap()).unwrap(); 137 + let email = Email::from_str(core::str::from_utf8(uid.value()).unwrap()).unwrap(); | |
||
|
896206d6ca |
Clean up linting warnings: this if has identical blocks.
Commands: cargo clippy --tests --no-deps --workspace Warnings: warning: this `if` has identical blocks --> database/src/openpgp_utils.rs:89:27 | 89 | if !is_exportable { | ___________________________^ 90 | | false 91 | | } else if is_status_revoked(uid.revocation_status(&POLICY, None)) { | |_________^ | note: same as this --> database/src/openpgp_utils.rs:91:75 | 91 | } else if is_status_revoked(uid.revocation_status(&POLICY, None)) { | ___________________________________________________________________________^ 92 | | false 93 | | } else if let Ok(email) = Email::try_from(uid.userid()) { | |_________^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else = note: `#[warn(clippy::if_same_then_else)]` on by default |
||
|
57a8e3a3a8 |
Clean up linting warnings: length comparison to zero.
Commands: cargo clippy --tests --no-deps --workspace Warnings: warning: length comparison to zero --> database/src/sqlite.rs:518:17 | 518 | assert!(db.merge(k1).unwrap().into_tpk_status().email_status.len() > 0); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!db.merge(k1).unwrap().into_tpk_status().email_status.is_empty()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero = note: `#[warn(clippy::len_zero)]` on by default warning: length comparison to zero --> database/src/sqlite.rs:520:13 | 520 | / db.merge(k2.clone()) 521 | | .unwrap() 522 | | .into_tpk_status() 523 | | .email_status 524 | | .len() 525 | | > 0 | |___________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero help: using `!is_empty` is clearer and more explicit | 520 ~ !db.merge(k2.clone()) 521 + .unwrap() 522 + .into_tpk_status() 523 + .email_status.is_empty() | warning: length comparison to zero --> database/src/sqlite.rs:529:13 | 529 | / db.merge(k3.clone()) 530 | | .unwrap() 531 | | .into_tpk_status() 532 | | .email_status 533 | | .len() 534 | | > 0 | |___________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero help: using `!is_empty` is clearer and more explicit | 529 ~ !db.merge(k3.clone()) 530 + .unwrap() 531 + .into_tpk_status() 532 + .email_status.is_empty() | warning: length comparison to zero --> src/dump.rs:999:24 | 999 | if reason.len() > 0 { ", " } else { "" }, | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!reason.is_empty()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero = note: `#[warn(clippy::len_zero)]` on by default |
||
|
1f67668500 |
Clean up linting warnings: redundant return statements.
Commands: cargo clippy --tests --no-deps --workspace Warnings: warning: unneeded `return` statement --> database/src/sqlite.rs:293:18 | 293 | _ => return None, | ^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return = note: `#[warn(clippy::needless_return)]` on by default help: remove `return` | 293 - _ => return None, 293 + _ => None, | warning: unneeded `()` --> hagridctl/src/import.rs:153:25 | 153 | _ => return (), | ^^ help: remove the `()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit = note: `#[warn(clippy::unused_unit)]` on by default warning: unneeded `()` --> hagridctl/src/import.rs:176:20 | 176 | return (); | ^^ help: remove the `()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit warning: unneeded `return` statement --> src/web/hkp.rs:169:5 | 169 | / return format!( 170 | | "Upload successful. Please note that identity information will only be published after verification. See {baseuri}/about/usage#gnupg-upload", 171 | | baseuri = origin.get_base_uri() 172 | | ); | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return = note: `#[warn(clippy::needless_return)]` on by default help: remove `return` | 169 ~ format!( 170 + "Upload successful. Please note that identity information will only be published after verification. See {baseuri}/about/usage#gnupg-upload", 171 + baseuri = origin.get_base_uri() 172 ~ ) | |
||
|
27b68dc826 |
Clean up linting warnings: related to iterators, mostly replacement of flatten() with filter_map() or flat_map().
Commands: cargo clippy --tests --no-deps --workspace Warnings: warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator --> database/src/fs.rs:614:14 | 614 | .last() | ^^^^^^ help: try: `next_back()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last = note: `#[warn(clippy::double_ended_iterator_last)]` on by default warning: called `map(..).flatten()` on `Iterator` --> database/src/fs.rs:708:18 | 708 | .map(Fingerprint::try_from) | __________________^ 709 | | .flatten(); | |__________________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(Fingerprint::try_from)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten = note: `#[warn(clippy::map_flatten)]` on by default warning: called `map(..).flatten()` on `Iterator` --> database/src/sqlite.rs:424:18 | 424 | .map(|email| Email::from_str(email)) | __________________^ 425 | | .flatten() | |__________________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|email| Email::from_str(email))` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: called `map(..).flatten()` on `Iterator` --> database/src/sqlite.rs:422:18 | 422 | .map(|uid| uid.userid().email2().unwrap()) | __________________^ 423 | | .flatten() | |__________________________^ help: try replacing `map` with `filter_map` and remove the `.flatten()`: `filter_map(|uid| uid.userid().email2().unwrap())` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: called `map(..).flatten()` on `Iterator` --> database/src/sqlite.rs:431:18 | 431 | .map(|email| Email::from_str(&email.unwrap())) | __________________^ 432 | | .flatten() | |__________________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|email| Email::from_str(&email.unwrap()))` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: called `map(..).flatten()` on `Iterator` --> database/src/sqlite.rs:453:18 | 453 | .map(Fingerprint::try_from) | __________________^ 454 | | .flatten() | |__________________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(Fingerprint::try_from)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: called `map(..).flatten()` on `Iterator` --> database/src/lib.rs:266:14 | 266 | .map(|binding| { | ______________^ 267 | | if let Ok(email) = Email::try_from(binding.userid()) { 268 | | Some((binding, email)) 269 | | } else { ... | 272 | | }) 273 | | .flatten() | |______________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten help: try replacing `map` with `filter_map` and remove the `.flatten()` | 266 ~ .filter_map(|binding| { 267 + if let Ok(email) = Email::try_from(binding.userid()) { 268 + Some((binding, email)) 269 + } else { 270 + None 271 + } 272 + }) | warning: called `map(..).flatten()` on `Iterator` --> database/src/lib.rs:315:22 | 315 | .map(|uid| Email::try_from(uid).ok()) | ______________________^ 316 | | .flatten() | |______________________________^ help: try replacing `map` with `filter_map` and remove the `.flatten()`: `filter_map(|uid| Email::try_from(uid).ok())` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: called `map(..).flatten()` on `Iterator` --> database/src/lib.rs:492:14 | 492 | .map(|uid| Email::try_from(uid).ok()) | ______________^ 493 | | .flatten() | |______________________^ help: try replacing `map` with `filter_map` and remove the `.flatten()`: `filter_map(|uid| Email::try_from(uid).ok())` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: called `map(..).flatten()` on `Iterator` --> database/src/lib.rs:509:14 | 509 | .map(|binding| Email::try_from(binding.userid())) | ______________^ 510 | | .flatten() | |______________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|binding| Email::try_from(binding.userid()))` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: called `map(..).flatten()` on `Iterator` --> database/src/lib.rs:582:14 | 582 | .map(|binding| Email::try_from(binding.userid())) | ______________^ 583 | | .flatten() | |______________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|binding| Email::try_from(binding.userid()))` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: called `map(..).flatten()` on `Iterator` --> database/src/lib.rs:590:14 | 590 | .map(|binding| Email::try_from(binding.userid())) | ______________^ 591 | | .flatten() | |______________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|binding| Email::try_from(binding.userid()))` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: called `map(..).flatten()` on `Iterator` --> database/src/lib.rs:650:14 | 650 | .map(|binding| Email::try_from(binding.userid())) | ______________^ 651 | | .flatten() | |______________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|binding| Email::try_from(binding.userid()))` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: called `map(..).flatten()` on `Iterator` --> database/src/lib.rs:708:10 | 708 | .map(|binding| Email::try_from(binding.userid())) | __________^ 709 | | .flatten() | |__________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|binding| Email::try_from(binding.userid()))` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten warning: useless conversion to the same type: `openpgp::cert::prelude::KeyAmalgamationIter<'_, openpgp::packet:🔑:PublicParts, openpgp::packet:🔑:UnspecifiedRole>` --> database/src/lib.rs:716:5 | 716 | / tpk.keys() 717 | | .into_iter() | |____________________^ help: consider removing `.into_iter()`: `tpk.keys()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion = note: `#[warn(clippy::useless_conversion)]` on by default warning: called `map(..).flatten()` on `Iterator` --> src/web/manage.rs:78:22 | 78 | .map(|u| u.userid().to_string().parse::<Email>()) | ______________________^ 79 | | .flatten() | |______________________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|u| u.userid().to_string().parse::<Email>())` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten = note: `#[warn(clippy::map_flatten)]` on by default warning: called `map(..).flatten()` on `Iterator` --> src/web/vks.rs:225:10 | 225 | .map(|address| address.parse::<Email>()) | __________^ 226 | | .flatten() | |__________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|address| address.parse::<Email>())` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten |
||
|
535668c507 |
Clean up linting warnings: replace usage of explicit lifetimes with elision.
Commands: cargo clippy --tests --no-deps --workspace Warnings: warning: the following explicit lifetimes could be elided: 'a --> database/src/fs.rs:348:6 | 348 | impl<'a> FilesystemTransaction<'a> { | ^^ ^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes = note: `#[warn(clippy::needless_lifetimes)]` on by default help: elide the lifetimes | 348 - impl<'a> FilesystemTransaction<'a> { 348 + impl FilesystemTransaction<'_> { | warning: the following explicit lifetimes could be elided: 'a --> database/src/sqlite.rs:141:6 | 141 | impl<'a> DatabaseTransaction<'a> for SqliteTransaction { | ^^ ^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes help: elide the lifetimes | 141 - impl<'a> DatabaseTransaction<'a> for SqliteTransaction { 141 + impl DatabaseTransaction<'_> for SqliteTransaction { | warning: the following explicit lifetimes could be elided: 'a --> src/dump.rs:40:6 | 40 | impl<'a> std::fmt::Display for SessionKeyDisplay<'a> { | ^^ ^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes = note: `#[warn(clippy::needless_lifetimes)]` on by default help: elide the lifetimes | 40 - impl<'a> std::fmt::Display for SessionKeyDisplay<'a> { 40 + impl std::fmt::Display for SessionKeyDisplay<'_> { | |
||
|
fec6763b75 |
Clean up linting warnings: remove unnecessary borrowings.
Commands: cargo clippy --tests --no-deps --workspace Warnings: warning: the borrowed expression implements the required traits --> database/src/fs.rs:258:40 | 258 | let typ = fs::symlink_metadata(&path).ok()?.file_type(); | ^^^^^ help: change this to: `path` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default warning: the borrowed expression implements the required traits --> database/src/fs.rs:287:44 | 287 | let typ = fs::symlink_metadata(&path)?.file_type(); | ^^^^^ help: change this to: `path` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args warning: the borrowed expression implements the required traits --> database/src/fs.rs:328:13 | 328 | symlink(&symlink_content, &symlink_name_tmp)?; | ^^^^^^^^^^^^^^^^ help: change this to: `symlink_content` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args warning: the borrowed expression implements the required traits --> database/src/fs.rs:329:31 | 329 | rename(&symlink_name_tmp, &symlink_name)?; | ^^^^^^^^^^^^^ help: change this to: `symlink_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args warning: the borrowed expression implements the required traits --> database/src/fs.rs:334:35 | 334 | if let Ok(target) = read_link(&link) { | ^^^^^ help: change this to: `link` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args warning: this expression creates a reference which is immediately dereferenced by the compiler --> database/src/sqlite.rs:424:46 | 424 | .map(|email| Email::from_str(&email)) | ^^^^^^ help: change this to: `email` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `#[warn(clippy::needless_borrow)]` on by default warning: this expression creates a reference which is immediately dereferenced by the compiler --> database/src/lib.rs:546:51 | 546 | self.set_email_unpublished_filter(&tx, ¤t_fpr, |uid| { | ^^^ help: change this to: `tx` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow warning: this expression creates a reference which is immediately dereferenced by the compiler --> database/src/lib.rs:602:29 | 602 | self.regenerate_wkd(&tx, fpr_primary, &published_tpk_clean)?; | ^^^ help: change this to: `tx` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow warning: this expression creates a reference which is immediately dereferenced by the compiler --> hagridctl/src/import.rs:161:86 | 161 | db.set_email_published(&key_fpr.clone().try_into().unwrap(), &email) | ^^^^^^ help: change this to: `email` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `#[warn(clippy::needless_borrow)]` on by default warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/sealed_state.rs:20:37 | 20 | let cipher = Aes256Gcm::new(&key); | ^^^^ help: change this to: `key` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `#[warn(clippy::needless_borrow)]` on by default warning: the borrowed expression implements the required traits --> src/template_helpers.rs:46:77 | 46 | remove_extension(remove_extension(path.strip_prefix(&template_path)?)); | ^^^^^^^^^^^^^^ help: change this to: `template_path` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default warning: the borrowed expression implements the required traits --> src/web/vks.rs:216:46 | 216 | Err(e) => return UploadResponse::err(&e.to_string()), | ^^^^^^^^^^^^^^ help: change this to: `e.to_string()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args warning: the borrowed expression implements the required traits --> src/web/vks.rs:248:40 | 248 | return UploadResponse::err(&format!("error sending email to {}", &email)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("error sending email to {}", &email)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args |
||
|
5731f8aa2b |
Clean up linting warnings: redundant import.
Commands: cargo clippy --tests --no-deps --workspace Warnings: warning: this import is redundant --> database/src/fs.rs:12:1 | 12 | use tempfile; | ^^^^^^^^^^^^^ help: remove it entirely | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports = note: `#[warn(clippy::single_component_path_imports)]` on by default |
||
|
62b936864d |
Run cargo fmt --all to format code to pass CI checks.
Commands: cargo fmt --all |
||
|
4f86585ac3 |
Resolve dependency version differences for "sequoia-openpgp" crate.
It eliminates the following output of `cargo autoinherit` command: `sequoia-openpgp` won't be auto-inherited because there are multiple sources for it: - version: =1.17.0 - version: ^1.17.0 Changes: - Allow "sequoia-openpgp" crate to use workspace dependencies by resolving version differences constraints in Cargo.toml files. |
||
|
b8fdaeb3c6 |
Unify crates dependency management in project's Cargo.toml using workspace dependencies.
This simplifies dependencies management and upgrades while ensuring that dependencies version aligned with all the crates in the project and neither dependency is used twice with different versions by accident (though dependencies still can appear several times as sub-dependencies due to misaligned version constraints for dependency resolution). Documentation and useful articles: - https://mainmatter.com/blog/2024/03/18/cargo-autoinherit/ - https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#inheriting-a-dependency-from-a-workspace - https://crates.io/crates/cargo-autoinherit Commands: `cargo autoinherit` Output: $ cargo autoinherit `multipart` won't be auto-inherited because there are multiple sources for it: - version: ^0.18.0 - version: ^0 `sequoia-openpgp` won't be auto-inherited because there are multiple sources for it: - version: ^1.17.0 - version: =1.17.0 Changes: - Collect all the dependencies for workspace's crates in the top level Cargo.toml file by applying `cargo autoinherit`. - Use workspace dependencies in crates Cargo.toml files (i.e. crate_name = { workspace = true }). |
||
|
c541c19622 |
Fix imports of test module after switch to 2024 edition.
Changes: - Add "crate::" to the imports of "test" module in "fs" and "sqlite" modules of "database" crate. |
||
|
58959e112e |
Fix compilation errors with binding modifier "ref" after switch to 2024 edition.
Fix the following and alike errors after switch to 2024 edition: error: binding modifiers may only be written when the default binding mode is `move` --> database/src/fs.rs:552:27 | 552 | ByFingerprint(ref fp) => self.link_by_fingerprint(fp), | ^^^ binding modifier not allowed under `ref` default binding mode | = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html> note: matching on a reference type with a non-reference pattern changes the default binding mode --> database/src/fs.rs:552:13 | 552 | ByFingerprint(ref fp) => self.link_by_fingerprint(fp), | ^^^^^^^^^^^^^^^^^^^^^ this matches on type `&_` help: remove the unnecessary binding modifier | 552 - ByFingerprint(ref fp) => self.link_by_fingerprint(fp), 552 + ByFingerprint(fp) => self.link_by_fingerprint(fp), | error: binding modifiers may only be written when the default binding mode is `move` --> database/src/fs.rs:553:21 | 553 | ByKeyID(ref keyid) => self.link_by_keyid(keyid), | ^^^ binding modifier not allowed under `ref` default binding mode | = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html> note: matching on a reference type with a non-reference pattern changes the default binding mode --> database/src/fs.rs:553:13 | 553 | ByKeyID(ref keyid) => self.link_by_keyid(keyid), | ^^^^^^^^^^^^^^^^^^ this matches on type `&_` help: remove the unnecessary binding modifier | 553 - ByKeyID(ref keyid) => self.link_by_keyid(keyid), 553 + ByKeyID(keyid) => self.link_by_keyid(keyid), | error: binding modifiers may only be written when the default binding mode is `move` --> database/src/fs.rs:554:21 | 554 | ByEmail(ref email) => self.link_by_email(email), | ^^^ binding modifier not allowed under `ref` default binding mode | = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html> note: matching on a reference type with a non-reference pattern changes the default binding mode --> database/src/fs.rs:554:13 | 554 | ByEmail(ref email) => self.link_by_email(email), | ^^^^^^^^^^^^^^^^^^ this matches on type `&_` help: remove the unnecessary binding modifier | 554 - ByEmail(ref email) => self.link_by_email(email), 554 + ByEmail(email) => self.link_by_email(email), | error: binding modifiers may only be written when the default binding mode is `move` --> database/src/sqlite.rs:278:27 | 278 | ByFingerprint(ref fp) => query_simple( | ^^^ binding modifier not allowed under `ref` default binding mode | = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html> note: matching on a reference type with a non-reference pattern changes the default binding mode --> database/src/sqlite.rs:278:13 | 278 | ByFingerprint(ref fp) => query_simple( | ^^^^^^^^^^^^^^^^^^^^^ this matches on type `&_` help: remove the unnecessary binding modifier | 278 - ByFingerprint(ref fp) => query_simple( 278 + ByFingerprint(fp) => query_simple( | error: binding modifiers may only be written when the default binding mode is `move` --> database/src/sqlite.rs:283:21 | 283 | ByKeyID(ref keyid) => query_simple( | ^^^ binding modifier not allowed under `ref` default binding mode | = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html> note: matching on a reference type with a non-reference pattern changes the default binding mode --> database/src/sqlite.rs:283:13 | 283 | ByKeyID(ref keyid) => query_simple( | ^^^^^^^^^^^^^^^^^^ this matches on type `&_` help: remove the unnecessary binding modifier | 283 - ByKeyID(ref keyid) => query_simple( 283 + ByKeyID(keyid) => query_simple( | error: binding modifiers may only be written when the default binding mode is `move` --> database/src/sqlite.rs:288:21 | 288 | ByEmail(ref email) => query_simple( | ^^^ binding modifier not allowed under `ref` default binding mode | = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html> note: matching on a reference type with a non-reference pattern changes the default binding mode --> database/src/sqlite.rs:288:13 | 288 | ByEmail(ref email) => query_simple( | ^^^^^^^^^^^^^^^^^^ this matches on type `&_` help: remove the unnecessary binding modifier | 288 - ByEmail(ref email) => query_simple( 288 + ByEmail(email) => query_simple( | error: binding modifiers may only be written when the default binding mode is `move` --> database/src/lib.rs:194:27 | 194 | ByFingerprint(ref fp) => self.by_fpr(fp), | ^^^ binding modifier not allowed under `ref` default binding mode | = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html> note: matching on a reference type with a non-reference pattern changes the default binding mode --> database/src/lib.rs:194:13 | 194 | ByFingerprint(ref fp) => self.by_fpr(fp), | ^^^^^^^^^^^^^^^^^^^^^ this matches on type `&_` help: remove the unnecessary binding modifier | 194 - ByFingerprint(ref fp) => self.by_fpr(fp), 194 + ByFingerprint(fp) => self.by_fpr(fp), | error: binding modifiers may only be written when the default binding mode is `move` --> database/src/lib.rs:195:21 | 195 | ByKeyID(ref keyid) => self.by_kid(keyid), | ^^^ binding modifier not allowed under `ref` default binding mode | = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html> note: matching on a reference type with a non-reference pattern changes the default binding mode --> database/src/lib.rs:195:13 | 195 | ByKeyID(ref keyid) => self.by_kid(keyid), | ^^^^^^^^^^^^^^^^^^ this matches on type `&_` help: remove the unnecessary binding modifier | 195 - ByKeyID(ref keyid) => self.by_kid(keyid), 195 + ByKeyID(keyid) => self.by_kid(keyid), | error: binding modifiers may only be written when the default binding mode is `move` --> database/src/lib.rs:196:21 | 196 | ByEmail(ref email) => self.by_email(email), | ^^^ binding modifier not allowed under `ref` default binding mode | = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html> note: matching on a reference type with a non-reference pattern changes the default binding mode --> database/src/lib.rs:196:13 | 196 | ByEmail(ref email) => self.by_email(email), | ^^^^^^^^^^^^^^^^^^ this matches on type `&_` help: remove the unnecessary binding modifier | 196 - ByEmail(ref email) => self.by_email(email), 196 + ByEmail(email) => self.by_email(email), | Changes: - Remove unnecessary "ref" binding modifiers in match statements as in later Rust editions so called match ergonomics modified binding behavior and "ref" when matching reference is not needed any more. |
||
|
ee82a078ea |
Fix broken imports of Result after switch to 2024 edition in "database" crate.
As in 2015 edition we don't need to specify precise import path imports like "use Result;" led to usage of imported in "lib.rs" anyhow::Result. After switch to 2024 edition Rust requires to specify path precisely (actually it starts require that in 2018 I guess). So, after the switch compiler confuses "use Result;" with import of "use core::result::Result;" and starts to require additional generic. Simply pointing to "crate::Result" fixes the problem and points back to anyhow::Result imported in lib.rs file. The following compile errors were fixed: error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/types.rs:54:34 | 54 | fn try_from(uid: &UserID) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 54 | fn try_from(uid: &UserID) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sync.rs:17:44 | 17 | pub fn lock(path: impl AsRef<Path>) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 17 | pub fn lock(path: impl AsRef<Path>) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:59:59 | 59 | pub fn new_from_base(base_dir: impl Into<PathBuf>) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 59 | pub fn new_from_base(base_dir: impl Into<PathBuf>) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:72:10 | 72 | ) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 72 | ) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:81:10 | 81 | ) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 81 | ) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:281:10 | 281 | ) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 281 | ) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:350:67 | 350 | fn link_email_vks(&self, email: &Email, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 350 | fn link_email_vks(&self, email: &Email, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:362:67 | 362 | fn link_email_wkd(&self, email: &Email, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 362 | fn link_email_wkd(&self, email: &Email, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:374:69 | 374 | fn unlink_email_vks(&self, email: &Email, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 374 | fn unlink_email_vks(&self, email: &Email, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:386:69 | 386 | fn unlink_email_wkd(&self, email: &Email, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 386 | fn unlink_email_wkd(&self, email: &Email, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:402:24 | 402 | fn commit(self) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 402 | fn commit(self) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:406:48 | 406 | fn write_to_temp(&self, content: &[u8]) -> Result<Self::TempCert> { | ^^^^^^ -------------- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 406 | fn write_to_temp(&self, content: &[u8]) -> Result<Self::TempCert, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:415:76 | 415 | fn move_tmp_to_full(&self, file: Self::TempCert, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 415 | fn move_tmp_to_full(&self, file: Self::TempCert, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:425:81 | 425 | fn move_tmp_to_published(&self, file: Self::TempCert, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 425 | fn move_tmp_to_published(&self, file: Self::TempCert, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:439:10 | 439 | ) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 439 | ) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:454:73 | 454 | fn write_to_quarantine(&self, fpr: &Fingerprint, content: &[u8]) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 454 | fn write_to_quarantine(&self, fpr: &Fingerprint, content: &[u8]) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:467:63 | 467 | fn link_email(&self, email: &Email, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 467 | fn link_email(&self, email: &Email, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:478:65 | 478 | fn unlink_email(&self, email: &Email, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 478 | fn unlink_email(&self, email: &Email, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:484:74 | 484 | fn link_fpr(&self, from: &Fingerprint, primary_fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 484 | fn link_fpr(&self, from: &Fingerprint, primary_fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:501:76 | 501 | fn unlink_fpr(&self, from: &Fingerprint, primary_fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 501 | fn unlink_fpr(&self, from: &Fingerprint, primary_fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:528:33 | 528 | fn transaction(&'a self) -> Result<FilesystemTransaction<'a>> { | ^^^^^^ ------------------------- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 528 | fn transaction(&'a self) -> Result<FilesystemTransaction<'a>, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:536:78 | 536 | fn write_log_append(&self, filename: &str, fpr_primary: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 536 | fn write_log_append(&self, filename: &str, fpr_primary: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:604:37 | 604 | fn get_last_log_entry(&self) -> Result<Fingerprint> { | ^^^^^^ ----------- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 604 | fn get_last_log_entry(&self) -> Result<Fingerprint, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:624:10 | 624 | ) -> Result<Option<Fingerprint>> { | ^^^^^^ ------------------- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 624 | ) -> Result<Option<Fingerprint>, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:659:36 | 659 | fn check_consistency(&self) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 659 | fn check_consistency(&self) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:32:54 | 32 | pub fn new_file(base_dir: impl Into<PathBuf>) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 32 | pub fn new_file(base_dir: impl Into<PathBuf>) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:144:24 | 144 | fn commit(self) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 144 | fn commit(self) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:150:48 | 150 | fn write_to_temp(&self, content: &[u8]) -> Result<Self::TempCert> { | ^^^^^^ -------------- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 150 | fn write_to_temp(&self, content: &[u8]) -> Result<Self::TempCert, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:154:76 | 154 | fn move_tmp_to_full(&self, file: Self::TempCert, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 154 | fn move_tmp_to_full(&self, file: Self::TempCert, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:171:81 | 171 | fn move_tmp_to_published(&self, file: Self::TempCert, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 171 | fn move_tmp_to_published(&self, file: Self::TempCert, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:188:10 | 188 | ) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 188 | ) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:200:75 | 200 | fn write_to_quarantine(&self, _fpr: &Fingerprint, _content: &[u8]) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 200 | fn write_to_quarantine(&self, _fpr: &Fingerprint, _content: &[u8]) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:204:63 | 204 | fn link_email(&self, email: &Email, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 204 | fn link_email(&self, email: &Email, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:221:65 | 221 | fn unlink_email(&self, email: &Email, fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 221 | fn unlink_email(&self, email: &Email, fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:231:78 | 231 | fn link_fpr(&self, from_fpr: &Fingerprint, primary_fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 231 | fn link_fpr(&self, from_fpr: &Fingerprint, primary_fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:252:80 | 252 | fn unlink_fpr(&self, from_fpr: &Fingerprint, primary_fpr: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 252 | fn unlink_fpr(&self, from_fpr: &Fingerprint, primary_fpr: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:264:33 | 264 | fn transaction(&'a self) -> Result<Self::Transaction> { | ^^^^^^ ----------------- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 264 | fn transaction(&'a self) -> Result<Self::Transaction, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:268:80 | 268 | fn write_log_append(&self, _filename: &str, _fpr_primary: &Fingerprint) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 268 | fn write_log_append(&self, _filename: &str, _fpr_primary: &Fingerprint) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:402:10 | 402 | ) -> Result<Option<Fingerprint>> { | ^^^^^^ ------------------- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 402 | ) -> Result<Option<Fingerprint>, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:411:36 | 411 | fn check_consistency(&self) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 411 | fn check_consistency(&self) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:476:37 | 476 | fn get_last_log_entry(&self) -> Result<Fingerprint> { | ^^^^^^ ----------- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 476 | fn get_last_log_entry(&self) -> Result<Fingerprint, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/stateful_tokens.rs:14:50 | 14 | pub fn new(token_dir: impl Into<PathBuf>) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 14 | pub fn new(token_dir: impl Into<PathBuf>) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/types.rs:97:29 | 97 | fn from_str(s: &str) -> Result<Email> { | ^^^^^^ ----- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 97 | fn from_str(s: &str) -> Result<Email, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/types.rs:124:55 | 124 | fn try_from(fpr: sequoia_openpgp::Fingerprint) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 124 | fn try_from(fpr: sequoia_openpgp::Fingerprint) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/types.rs:163:29 | 163 | fn from_str(s: &str) -> Result<Fingerprint> { | ^^^^^^ ----------- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 163 | fn from_str(s: &str) -> Result<Fingerprint, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/types.rs:196:55 | 196 | fn try_from(fpr: sequoia_openpgp::Fingerprint) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 196 | fn try_from(fpr: sequoia_openpgp::Fingerprint) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/types.rs:232:29 | 232 | fn from_str(s: &str) -> Result<KeyID> { | ^^^^^^ ----- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 232 | fn from_str(s: &str) -> Result<KeyID, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:52:34 | 52 | fn ensure_parent(path: &Path) -> Result<&Path> { | ^^^^^^ ----- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 52 | fn ensure_parent(path: &Path) -> Result<&Path, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:319:60 | 319 | fn symlink(symlink_content: &Path, symlink_name: &Path) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 319 | fn symlink(symlink_content: &Path, symlink_name: &Path) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:334:63 | 334 | fn symlink_unlink_with_check(link: &Path, expected: &Path) -> Result<()> { | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 334 | fn symlink_unlink_with_check(link: &Path, expected: &Path) -> Result<(), E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:268:48 | 268 | fn open_logfile(&self, file_name: &str) -> Result<File> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 268 | fn open_logfile(&self, file_name: &str) -> Result<File, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/fs.rs:280:55 | 280 | check: impl Fn(&Path, &Cert, &Fingerprint) -> Result<()>, | ^^^^^^ -- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 280 | check: impl Fn(&Path, &Cert, &Fingerprint) -> Result<(), E>, | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:65:56 | 65 | fn build_pool(manager: SqliteConnectionManager) -> Result<r2d2::Pool<SqliteConnectionManager>> { | ^^^^^^ ----------------------------------- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 65 | fn build_pool(manager: SqliteConnectionManager) -> Result<r2d2::Pool<SqliteConnectionManager>, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:69:77 | 69 | fn new_internal(base_dir: PathBuf, manager: SqliteConnectionManager) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 69 | fn new_internal(base_dir: PathBuf, manager: SqliteConnectionManager) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/sqlite.rs:117:61 | 117 | fn start(pool: &r2d2::Pool<SqliteConnectionManager>) -> Result<Self> { | ^^^^^^ ---- supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 117 | fn start(pool: &r2d2::Pool<SqliteConnectionManager>) -> Result<Self, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/stateful_tokens.rs:24:66 | 24 | pub fn new_token(&self, token_type: &str, payload: &[u8]) -> Result<String> { | ^^^^^^ ------ supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 24 | pub fn new_token(&self, token_type: &str, payload: &[u8]) -> Result<String, E> { | +++ error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied --> database/src/stateful_tokens.rs:41:63 | 41 | pub fn pop_token(&self, token_type: &str, token: &str) -> Result<String> { | ^^^^^^ ------ supplied 1 generic argument | | | expected 2 generic arguments | note: enum defined here, with 2 generic parameters: `T`, `E` --> .../.rustup/toolchains/1.86.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:528:10 | 528 | pub enum Result<T, E> { | ^^^^^^ - - help: add missing generic argument | 41 | pub fn pop_token(&self, token_type: &str, token: &str) -> Result<String, E> { | +++ Changes: - Fix broken imports of Result in "database" crate by importing crate::Result instead of just Result. |
||
|
50f80ebade |
Fix imports after migration to 2024 edition.
Differences in Rust edition lead to compilation errors like the ones below: error[E0432]: unresolved import `sync` --> database/src/fs.rs:15:5 | 15 | use sync::FlockMutexGuard; | ^^^^ help: a similar path exists: `crate::sync` | = note: `use` statements changed in Rust 2018; read more at <https://doc.rust-lang.org/edition-guide/rust-2018/module-system/path-clarity.html> error[E0432]: unresolved import `types` --> database/src/fs.rs:16:5 | 16 | use types::{Email, Fingerprint, KeyID}; | ^^^^^ help: a similar path exists: `crate::types` | = note: `use` statements changed in Rust 2018; read more at <https://doc.rust-lang.org/edition-guide/rust-2018/module-system/path-clarity.html> error[E0432]: unresolved imports `Database`, `Query` --> database/src/fs.rs:18:6 | 18 | use {Database, Query}; | ^^^^^^^^ ^^^^^ no external crate `Query` | | | no external crate `Database` | = help: consider importing this trait instead: crate::Database = help: consider importing this enum instead: crate::Query error[E0432]: unresolved import `wkd` --> database/src/fs.rs:20:5 | 20 | use wkd; | ^^^ no external crate `wkd` | help: consider importing this module instead | 20 | use crate::wkd; | +++++++ error[E0432]: unresolved import `openpgp_utils` --> database/src/fs.rs:25:5 | 25 | use openpgp_utils::POLICY; | ^^^^^^^^^^^^^ help: a similar path exists: `crate::openpgp_utils` | = note: `use` statements changed in Rust 2018; read more at <https://doc.rust-lang.org/edition-guide/rust-2018/module-system/path-clarity.html> error[E0432]: unresolved import `types` --> database/src/sqlite.rs:11:5 | 11 | use types::{Email, Fingerprint, KeyID}; | ^^^^^ help: a similar path exists: `crate::types` | = note: `use` statements changed in Rust 2018; read more at <https://doc.rust-lang.org/edition-guide/rust-2018/module-system/path-clarity.html> error[E0432]: unresolved imports `Database`, `Query` --> database/src/sqlite.rs:13:6 | 13 | use {Database, Query}; | ^^^^^^^^ ^^^^^ no external crate `Query` | | | no external crate `Database` | = help: consider importing this trait instead: crate::Database = help: consider importing this enum instead: crate::Query error[E0432]: unresolved import `Email` --> database/src/openpgp_utils.rs:9:5 | 9 | use Email; | ^^^^^ no external crate `Email` | help: consider importing this struct through its public re-export instead | 9 | use crate::Email; | +++++++ Changes: - Prefix imports with "crate::" as compiler suggest to fix the errors. |
||
|
709e358800 |
Change edition in Cargo.toml files to 2024.
Changes: - Change edition in the following Cargo.toml files to 2024: - Cargo.toml change edition: 2018 -> 2024 - Explicitly set 2024 (i.e. default 2015 -> 2024) edition in the following files: - database/Cargo.toml - hagridctl/Cargo.toml - tester/Cargo.toml NOTE: setting explicitly edition also clean up WARNINGS like ones bellow: warning: .../hagrid/database/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024 warning: .../hagrid/tester/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024 warning: .../hagrid/hagridctl/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024 |
||
|
dafed3d492 | db: don't use sq's export logic for our certs | ||
|
df6bfb2d84 | db: improve typings for sqlite | ||
|
b5b5879474 | db: add DatabaseTransaction abstraction | ||
|
5778aaed84 | db: work on sqlite, make tests pass | ||
|
7beb5209af | db: add sqlite query tracing during tests | ||
|
4787816581 | db: start work on rusqlite | ||
|
253d672d47 | db: abstract over log path interface | ||
|
44db398a1c |
cargo: downgrade sequoia-openpgp to 1.17.0 (for now)
Starting with 1.18.0, the retain_userids method starts working differently, returning an empty cert if no signed user ids or direct key signature is left. Since we need this, we'll stay on 1.17.0 for now. |
||
|
26ef2f6e1c | db: fix tests | ||
|
fe2337507a | hagridctl: import public keys publishing emails | ||
|
dfafe5cdb7 | cargo: use openssl crypo backend | ||
|
da4665306e |
cargo: cargo update
This update requires a forked version of rocket_i18n to accommodate for a trivial renaming in rocket v0.5.0. Can be changed back to upstream if https://github.com/Plume-org/rocket_i18n/pull/24 is merged. |
||
|
e7ec0edf1e | db: check that user ids contain a valid self-signature for publication |