schema shenanigans #218
Annotations
30 errors and 133 warnings
this expression creates a reference which is immediately dereferenced by the compiler:
src/commands/build.rs#L18
error: this expression creates a reference which is immediately dereferenced by the compiler
--> src/commands/build.rs:18:31
|
18 | app.action_install_addons(&base)
| ^^^^^ help: change this to: `base`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
|
this expression creates a reference which is immediately dereferenced by the compiler:
src/commands/build.rs#L15
error: this expression creates a reference which is immediately dereferenced by the compiler
--> src/commands/build.rs:15:28
|
15 | app.action_install_jar(&base)
| ^^^^^ help: change this to: `base`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
|
the borrowed expression implements the required traits:
src/api/utils/mod.rs#L34
error: the borrowed expression implements the required traits
--> src/api/utils/mod.rs:34:59
|
34 | let data: T = toml::from_str(&std::fs::read_to_string(&path)?)?;
| ^^^^^ 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: `-D clippy::needless-borrows-for-generic-args` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::needless_borrows_for_generic_args)]`
|
redundant guard:
src/api/utils/pathdiff.rs#L72
error: redundant guard
--> src/api/utils/pathdiff.rs:72:39
|
72 | (Some(_), Some(b)) if b == Component::ParentDir => return None,
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards
help: try
|
72 - (Some(_), Some(b)) if b == Component::ParentDir => return None,
72 + (Some(_), Some(Component::ParentDir)) => return None,
|
|
redundant guard:
src/api/utils/pathdiff.rs#L71
error: redundant guard
--> src/api/utils/pathdiff.rs:71:39
|
71 | (Some(a), Some(b)) if b == Component::CurDir => comps.push(a),
| ^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards
= note: `-D clippy::redundant-guards` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::redundant_guards)]`
help: try
|
71 - (Some(a), Some(b)) if b == Component::CurDir => comps.push(a),
71 + (Some(a), Some(Component::CurDir)) => comps.push(a),
|
|
using `clone` on type `HashFormat` which implements the `Copy` trait:
src/api/utils/hashing/mod.rs#L58
error: using `clone` on type `HashFormat` which implements the `Copy` trait
--> src/api/utils/hashing/mod.rs:58:24
|
58 | .map(|(k, v)| (k.clone(), v.clone()))
| ^^^^^^^^^ help: try dereferencing it: `*k`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
= note: `-D clippy::clone-on-copy` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::clone_on_copy)]`
|
empty doc comment:
src/api/sources/hangar/models.rs#L268
error: empty doc comment
--> src/api/sources/hangar/models.rs:268:1
|
268 | ///
| ^^^
|
= help: consider removing or filling it
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_docs
= note: `-D clippy::empty-docs` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::empty_docs)]`
|
direct implementation of `ToString`:
src/api/sources/hangar/models.rs#L180
error: direct implementation of `ToString`
--> src/api/sources/hangar/models.rs:180:1
|
180 | / impl ToString for Platform {
181 | | fn to_string(&self) -> String {
182 | | match self {
183 | | Self::Paper => "PAPER".to_owned(),
... |
187 | | }
188 | | }
| |_^
|
= help: prefer implementing `Display` instead
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl
|
direct implementation of `ToString`:
src/api/sources/hangar/models.rs#L12
error: direct implementation of `ToString`
--> src/api/sources/hangar/models.rs:12:1
|
12 | / impl ToString for Namespace {
13 | | fn to_string(&self) -> String {
14 | | format!("{}/{}", self.owner, self.slug)
15 | | }
16 | | }
| |_^
|
= help: prefer implementing `Display` instead
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl
|
this expression creates a reference which is immediately dereferenced by the compiler:
src/api/sources/papermc/mod.rs#L71
error: this expression creates a reference which is immediately dereferenced by the compiler
--> src/api/sources/papermc/mod.rs:71:56
|
71 | let resolved_build = self.fetch_build(project, &version, build).await?;
| ^^^^^^^^ help: change this to: `version`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
|
methods called `into_*` usually take `self` by value:
src/api/sources/vanilla/mod.rs#L20
error: methods called `into_*` usually take `self` by value
--> src/api/sources/vanilla/mod.rs:20:22
|
20 | pub fn into_step(&self, ty: DownloadType) -> Option<Vec<Step>> {
| ^^^^^
|
= help: consider choosing a less ambiguous name
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention
|
useless conversion to the same type: `std::string::String`:
src/api/sources/url/mod.rs#L25
error: useless conversion to the same type: `std::string::String`
--> src/api/sources/url/mod.rs:25:14
|
25 | url: url.into(),
| ^^^^^^^^^^ help: consider removing `.into()`: `url`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
= note: `-D clippy::useless-conversion` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::useless_conversion)]`
|
called `map(..).flatten()` on `Option`:
src/api/sources/modrinth/mod.rs#L53
error: called `map(..).flatten()` on `Option`
--> src/api/sources/modrinth/mod.rs:53:42
|
53 | if let Some(id) = store.as_ref().map(|ids| ids.get(slug)).flatten() {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|ids| ids.get(slug))`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten
= note: `-D clippy::map-flatten` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::map_flatten)]`
|
question mark operator is useless here:
src/api/sources/modrinth/mod.rs#L33
error: question mark operator is useless here
--> src/api/sources/modrinth/mod.rs:33:9
|
33 | Ok(self.fetch_all_versions(id).await?)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing question mark and `Ok()`: `self.fetch_all_versions(id).await`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
|
direct implementation of `ToString`:
src/api/models/server/server_type.rs#L30
error: direct implementation of `ToString`
--> src/api/models/server/server_type.rs:30:1
|
30 | / impl ToString for PaperMCProject {
31 | | fn to_string(&self) -> String {
32 | | match self {
33 | | Self::Paper => "paper".to_owned(),
... |
37 | | }
38 | | }
| |_^
|
= help: prefer implementing `Display` instead
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl
= note: `-D clippy::to-string-trait-impl` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::to_string_trait_impl)]`
|
match expression looks like `matches!` macro:
src/api/models/server/server_flavor.rs#L20
error: match expression looks like `matches!` macro
--> src/api/models/server/server_flavor.rs:20:9
|
20 | / match self {
21 | | ServerFlavor::Modded => true,
22 | | _ => false,
23 | | }
| |_________^ help: try: `matches!(self, ServerFlavor::Modded)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro
|
match expression looks like `matches!` macro:
src/api/models/server/server_flavor.rs#L13
error: match expression looks like `matches!` macro
--> src/api/models/server/server_flavor.rs:13:9
|
13 | / match self {
14 | | ServerFlavor::Proxy => false,
15 | | _ => true,
16 | | }
| |_________^ help: try: `!matches!(self, ServerFlavor::Proxy)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro
= note: `-D clippy::match-like-matches-macro` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::match_like_matches_macro)]`
|
methods called `into_*` usually take `self` by value:
src/api/models/packwiz/mod.rs#L35
error: methods called `into_*` usually take `self` by value
--> src/api/models/packwiz/mod.rs:35:29
|
35 | pub async fn into_addon(&self, app: &App, target: AddonTarget) -> Result<Addon> {
| ^^^^^
|
= help: consider choosing a less ambiguous name
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention
|
methods called `into_*` usually take `self` by value:
src/api/models/mrpack/mod.rs#L28
error: methods called `into_*` usually take `self` by value
--> src/api/models/mrpack/mod.rs:28:29
|
28 | pub async fn into_addon(&self) -> Result<Addon> {
| ^^^^^
|
= help: consider choosing a less ambiguous name
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention
|
methods called `into_*` usually take `self` by value:
src/api/models/addon/addon_metadata.rs#L20
error: methods called `into_*` usually take `self` by value
--> src/api/models/addon/addon_metadata.rs:20:21
|
20 | pub fn into_str(&self) -> &'static str {
| ^^^^^
|
= help: consider choosing a less ambiguous name
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention
= note: `-D clippy::wrong-self-convention` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::wrong_self_convention)]`
|
module has the same name as its containing module:
src/api/models/addon/mod.rs#L1
error: module has the same name as its containing module
--> src/api/models/addon/mod.rs:1:1
|
1 | mod addon;
| ^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception
= note: `-D clippy::module-inception` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::module_inception)]`
|
question mark operator is useless here:
src/api/models/modpack_source.rs#L27
error: question mark operator is useless here
--> src/api/models/modpack_source.rs:27:9
|
27 | Ok(Accessor::from(str)?)
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing question mark and `Ok()`: `Accessor::from(str)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
= note: `-D clippy::needless-question-mark` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::needless_question_mark)]`
|
this expression creates a reference which is immediately dereferenced by the compiler:
src/api/app/io.rs#L31
error: this expression creates a reference which is immediately dereferenced by the compiler
--> src/api/app/io.rs:31:24
|
31 | write_toml(&path, NETWORK_TOML, &*network)?;
| ^^^^^ help: change this to: `path`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
|
this expression creates a reference which is immediately dereferenced by the compiler:
src/api/app/io.rs#L26
error: this expression creates a reference which is immediately dereferenced by the compiler
--> src/api/app/io.rs:26:24
|
26 | write_toml(&path, SERVER_TOML, &*server)?;
| ^^^^^ help: change this to: `path`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
|
this expression creates a reference which is immediately dereferenced by the compiler:
src/api/app/collect.rs#L24
error: this expression creates a reference which is immediately dereferenced by the compiler
--> src/api/app/collect.rs:24:54
|
24 | addons.append(&mut source.resolve_addons(&self).await?);
| ^^^^^ help: change this to: `self`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
|
this expression creates a reference which is immediately dereferenced by the compiler:
src/api/app/actions/build/mod.rs#L14
error: this expression creates a reference which is immediately dereferenced by the compiler
--> src/api/app/actions/build/mod.rs:14:47
|
14 | let steps = jar.resolve_steps(&self, Environment::Server).await?;
| ^^^^^ help: change this to: `self`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
= note: `-D clippy::needless-borrow` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::needless_borrow)]`
|
lint group `pedantic` has the same priority (0) as a lint:
Cargo.toml#L24
error: lint group `pedantic` has the same priority (0) as a lint
--> Cargo.toml:24:1
|
24 | pedantic = "warn"
| ^^^^^^^^ ------ has an implicit priority of 0
25 | missing_docs_in_private_items = "allow"
| ----------------------------- has the same priority as this lint
|
= note: the order of the lints in the table is ignored by Cargo
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lint_groups_priority
help: to have lints override the group set `pedantic` to a lower priority
|
24 | pedantic = { level = "warn", priority = -1 }
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
lint group `all` has the same priority (0) as a lint:
Cargo.toml#L23
error: lint group `all` has the same priority (0) as a lint
--> Cargo.toml:23:1
|
23 | all = "deny"
| ^^^ ------ has an implicit priority of 0
24 | pedantic = "warn"
25 | missing_docs_in_private_items = "allow"
| ----------------------------- has the same priority as this lint
|
= note: the order of the lints in the table is ignored by Cargo
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lint_groups_priority
= note: `-D clippy::lint-groups-priority` implied by `-D clippy::all`
= help: to override `-D clippy::all` add `#[allow(clippy::lint_groups_priority)]`
help: to have lints override the group set `all` to a lower priority
|
23 | all = { level = "deny", priority = -1 }
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
clippy
Clippy had exited with the 101 exit code
|
build (windows-latest)
Process completed with exit code 1.
|
unused `async` for function with no await statements:
src/api/utils/accessor.rs#L35
warning: unused `async` for function with no await statements
--> src/api/utils/accessor.rs:35:5
|
35 | / pub async fn dir(&self) -> Result<Vec<String>> {
36 | | match self {
37 | | Accessor::ZipLocal(zip) => Ok(zip.file_names().map(ToOwned::to_owned).collect()),
38 | | Accessor::Local(path) => Ok(path
... |
44 | | }
45 | | }
| |_____^
|
= help: consider removing the `async` from this function
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
|
unused `async` for function with no await statements:
src/api/sources/fabric/mod.rs#L25
warning: unused `async` for function with no await statements
--> src/api/sources/fabric/mod.rs:25:5
|
25 | / pub async fn resolve_steps(
26 | | &self,
27 | | mc_version: &str,
28 | | loader: &str,
... |
45 | | ])
46 | | }
| |_____^
|
= help: consider removing the `async` from this function
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
|
unused `async` for function with no await statements:
src/api/sources/maven/mod.rs#L83
warning: unused `async` for function with no await statements
--> src/api/sources/maven/mod.rs:83:5
|
83 | / pub async fn resolve_steps(
84 | | &self,
85 | | url: &str,
86 | | group_id: &str,
... |
119 | | ])
120 | | }
| |_____^
|
= help: consider removing the `async` from this function
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
|
unused `async` for function with no await statements:
src/api/models/packwiz/mod.rs#L35
warning: unused `async` for function with no await statements
--> src/api/models/packwiz/mod.rs:35:5
|
35 | / pub async fn into_addon(&self, app: &App, target: AddonTarget) -> Result<Addon> {
36 | | let addon_type = if let Some(update) = &self.update {
37 | | match update {
38 | | PackwizModUpdate::Modrinth { mod_id, version } => AddonType::Modrinth {
... |
64 | | Ok(addon)
65 | | }
| |_____^
|
= help: consider removing the `async` from this function
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
|
unused `async` for function with no await statements:
src/api/models/mrpack/mod.rs#L28
warning: unused `async` for function with no await statements
--> src/api/models/mrpack/mod.rs:28:5
|
28 | / pub async fn into_addon(&self) -> Result<Addon> {
29 | | Ok(Addon {
30 | | environment: self.env.as_ref().map(|e| e.clone().into()),
31 | | addon_type: AddonType::Url {
... |
39 | | })
40 | | }
| |_____^
|
= help: consider removing the `async` from this function
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
|
unused `async` for function with no await statements:
src/api/app/actions/init/mod.rs#L30
warning: unused `async` for function with no await statements
--> src/api/app/actions/init/mod.rs:30:5
|
30 | / pub async fn init_network(&mut self) -> Result<()> {
31 | | intro("initializing network")?;
32 | |
33 | | let name: String = input("Name of the network?").interact()?;
... |
39 | | Ok(())
40 | | }
| |_____^
|
= help: consider removing the `async` from this function
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
|
unused `async` for function with no await statements:
src/api/app/actions/init/mod.rs#L13
warning: unused `async` for function with no await statements
--> src/api/app/actions/init/mod.rs:13:5
|
13 | / pub async fn init_server(&mut self) -> Result<()> {
14 | | intro("initializing server")?;
15 | |
16 | | let name: String = input("Name of the server?").interact()?;
... |
27 | | Ok(())
28 | | }
| |_____^
|
= help: consider removing the `async` from this function
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
= note: `-W clippy::unused-async` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::unused_async)]`
|
unnecessary `!=` operation:
src/api/utils/pathdiff.rs#L51
warning: unnecessary `!=` operation
--> src/api/utils/pathdiff.rs:51:5
|
51 | / if path.is_absolute() != base.is_absolute() {
52 | | if path.is_absolute() {
53 | | Some(PathBuf::from(path))
54 | | } else {
... |
84 | | Some(comps.iter().map(|c| c.as_os_str()).collect())
85 | | }
| |_____^
|
= help: change to `==` and swap the blocks of the `if`/`else`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else
= note: `-W clippy::if-not-else` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::if_not_else)]`
|
usage of wildcard import:
src/api/utils/pathdiff.rs#L23
warning: usage of wildcard import
--> src/api/utils/pathdiff.rs:23:5
|
23 | use std::path::*;
| ^^^^^^^^^^^^ help: try: `std::path::{Component, Path, PathBuf}`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_imports
|
you should put bare URLs between `<`/`>` or make a proper Markdown link:
src/api/utils/pathdiff.rs#L1
warning: you should put bare URLs between `<`/`>` or make a proper Markdown link
--> src/api/utils/pathdiff.rs:1:5
|
1 | //! https://github.com/Manishearth/pathdiff
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
|
this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte):
src/api/utils/hashing/mod.rs#L25
warning: this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte)
--> src/api/utils/hashing/mod.rs:25:23
|
25 | pub fn get_digest(&self) -> Box<dyn DynDigest + Send> {
| ^^^^^ help: consider passing by value instead: `self`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref
|
consider adding a `;` to the last statement for consistent formatting:
src/api/utils/hashing/curseforge.rs#L24
warning: consider adding a `;` to the last statement for consistent formatting
--> src/api/utils/hashing/curseforge.rs:24:9
|
24 | self.0 = Vec::new()
| ^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `self.0 = Vec::new();`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
|
consider adding a `;` to the last statement for consistent formatting:
src/api/utils/hashing/curseforge.rs#L14
warning: consider adding a `;` to the last statement for consistent formatting
--> src/api/utils/hashing/curseforge.rs:14:9
|
14 | / self.0.extend(
15 | | data.iter()
16 | | .copied()
17 | | .filter(|&e| e != 9 && e != 10 && e != 13 && e != 32),
18 | | )
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
= note: `-W clippy::semicolon-if-nothing-returned` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::semicolon_if_nothing_returned)]`
help: add a `;` here
|
14 ~ self.0.extend(
15 + data.iter()
16 + .copied()
17 + .filter(|&e| e != 9 && e != 10 && e != 13 && e != 32),
18 + );
|
|
redundant closure:
src/api/utils/accessor.rs#L40
warning: redundant closure
--> src/api/utils/accessor.rs:40:29
|
40 | .filter_map(|r| r.ok())
| ^^^^^^^^^^ help: replace the closure with the method itself: `std::result::Result::ok`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls
= note: `-W clippy::redundant-closure-for-method-calls` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::redundant_closure_for_method_calls)]`
|
case-sensitive file extension comparison:
src/api/utils/accessor.rs#L26
warning: case-sensitive file extension comparison
--> src/api/utils/accessor.rs:26:19
|
26 | } else if str.ends_with(".zip") || str.ends_with(".mrpack") {
| ^^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a case-insensitive comparison instead
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#case_sensitive_file_extension_comparisons
help: use std::path::Path
|
26 ~ } else if std::path::Path::new(str)
27 + .extension()
28 ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("zip")) || str.ends_with(".mrpack") {
|
|
wildcard matches only a single variant and will also match any future added variants:
src/api/sources/vanilla/mod.rs#L57
warning: wildcard matches only a single variant and will also match any future added variants
--> src/api/sources/vanilla/mod.rs:57:13
|
57 | _ => bail!("You cant have both smh"),
| ^ help: try: `Environment::Both`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wildcard_for_single_variants
= note: `-W clippy::match-wildcard-for-single-variants` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::match_wildcard_for_single_variants)]`
|
item in documentation is missing backticks:
src/api/sources/vanilla/version.rs#L179
warning: item in documentation is missing backticks
--> src/api/sources/vanilla/version.rs:179:10
|
179 | /// (AssetIndex only) The size of the game version's assets
| ^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
179 | /// (`AssetIndex` only) The size of the game version's assets
| ~~~~~~~~~~~~
|
item in documentation is missing backticks:
src/api/sources/vanilla/version.rs#L177
warning: item in documentation is missing backticks
--> src/api/sources/vanilla/version.rs:177:10
|
177 | /// (AssetIndex only) The game version ID the assets are for
| ^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
177 | /// (`AssetIndex` only) The game version ID the assets are for
| ~~~~~~~~~~~~
|
item in documentation is missing backticks:
src/api/sources/vanilla/version.rs#L149
warning: item in documentation is missing backticks
--> src/api/sources/vanilla/version.rs:149:13
|
149 | /// The HashMap key specifies a classifier as additional information for downloading files
| ^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
= note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]`
help: try
|
149 | /// The `HashMap` key specifies a classifier as additional information for downloading files
| ~~~~~~~~~
|
possible intra-doc link using quotes instead of backticks:
src/api/sources/vanilla/version.rs#L87
warning: possible intra-doc link using quotes instead of backticks
--> src/api/sources/vanilla/version.rs:87:25
|
87 | /// "exclude": ["META-INF/"],
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_link_with_quotes
= note: `-W clippy::doc-link-with-quotes` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_link_with_quotes)]`
|
usage of wildcard import:
src/api/models/server/server_type.rs#L5
warning: usage of wildcard import
--> src/api/models/server/server_type.rs:5:5
|
5 | utils::serde::*,
| ^^^^^^^^^^^^^^^ help: try: `utils::serde::str_latest`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_imports
= note: `-W clippy::wildcard-imports` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::wildcard_imports)]`
|
this match arm has an identical body to another arm:
src/api/models/server/server_flavor.rs#L30
warning: this match arm has an identical body to another arm
--> src/api/models/server/server_flavor.rs:30:13
|
30 | ServerFlavor::Patched => true,
| ---------------------^^^^^^^^
| |
| help: try merging the arm patterns: `ServerFlavor::Patched | ServerFlavor::Proxy`
|
= help: or try changing either arm body
note: other arm here
--> src/api/models/server/server_flavor.rs:31:13
|
31 | ServerFlavor::Proxy => true,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms
|
this match arm has an identical body to another arm:
src/api/models/server/server_flavor.rs#L29
warning: this match arm has an identical body to another arm
--> src/api/models/server/server_flavor.rs:29:13
|
29 | ServerFlavor::Modded => false,
| --------------------^^^^^^^^^
| |
| help: try merging the arm patterns: `ServerFlavor::Modded | ServerFlavor::Vanilla`
|
= help: or try changing either arm body
note: other arm here
--> src/api/models/server/server_flavor.rs:28:13
|
28 | ServerFlavor::Vanilla => false,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms
|
this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte):
src/api/models/server/server_flavor.rs#L26
warning: this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte)
--> src/api/models/server/server_flavor.rs:26:29
|
26 | pub fn supports_plugins(&self) -> bool {
| ^^^^^ help: consider passing by value instead: `self`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref
|
this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte):
src/api/models/server/server_flavor.rs#L19
warning: this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte)
--> src/api/models/server/server_flavor.rs:19:26
|
19 | pub fn supports_mods(&self) -> bool {
| ^^^^^ help: consider passing by value instead: `self`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref
|
this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte):
src/api/models/server/server_flavor.rs#L12
warning: this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte)
--> src/api/models/server/server_flavor.rs:12:31
|
12 | pub fn supports_datapacks(&self) -> bool {
| ^^^^^ help: consider passing by value instead: `self`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref
|
called `map(<f>).unwrap_or(<a>)` on an `Option` value:
src/api/models/addon/addon_target.rs#L37
warning: called `map(<f>).unwrap_or(<a>)` on an `Option` value
--> src/api/models/addon/addon_target.rs:37:14
|
37 | &Path::new(path)
| ______________^
38 | | .parent()
39 | | .map(|p| p.to_string_lossy().into_owned())
40 | | .unwrap_or(".".to_owned()),
| |__________________________________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or
= note: `-W clippy::map-unwrap-or` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::map_unwrap_or)]`
help: use `map_or(<a>, <f>)` instead
|
39 - .map(|p| p.to_string_lossy().into_owned())
39 + .map_or(".".to_owned(), |p| p.to_string_lossy().into_owned()),
|
|
this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte):
src/api/models/addon/addon_metadata.rs#L20
warning: this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte)
--> src/api/models/addon/addon_metadata.rs:20:21
|
20 | pub fn into_str(&self) -> &'static str {
| ^^^^^ help: consider passing by value instead: `self`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref
= note: `-W clippy::trivially-copy-pass-by-ref` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::trivially_copy_pass_by_ref)]`
|
field name starts with the struct's name:
src/api/models/addon/addon.rs#L12
warning: field name starts with the struct's name
--> src/api/models/addon/addon.rs:12:5
|
12 | pub addon_type: AddonType,
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#struct_field_names
= note: `-W clippy::struct-field-names` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::struct_field_names)]`
|
case-sensitive file extension comparison:
src/api/models/source.rs#L30
warning: case-sensitive file extension comparison
--> src/api/models/source.rs:30:71
|
30 | let file: AddonListFile = read_toml(&PathBuf::from(if path.ends_with(".toml") {
| ^^^^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a case-insensitive comparison instead
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#case_sensitive_file_extension_comparisons
= note: `-W clippy::case-sensitive-file-extension-comparisons` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::case_sensitive_file_extension_comparisons)]`
help: use std::path::Path
|
30 ~ let file: AddonListFile = read_toml(&PathBuf::from(if std::path::Path::new(path)
31 + .extension()
32 ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("toml")) {
|
|
this match arm has an identical body to another arm:
src/api/models/modpack_source.rs#L33
warning: this match arm has an identical body to another arm
--> src/api/models/modpack_source.rs:33:13
|
33 | Self::Remote { modpack_type, .. } => *modpack_type,
| ---------------------------------^^^^^^^^^^^^^^^^^
| |
| help: try merging the arm patterns: `Self::Remote { modpack_type, .. } | Self::Local { modpack_type, .. }`
|
= help: or try changing either arm body
note: other arm here
--> src/api/models/modpack_source.rs:32:13
|
32 | Self::Local { modpack_type, .. } => *modpack_type,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms
= note: `-W clippy::match-same-arms` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::match_same_arms)]`
|
this function has too many lines (127/100):
src/api/app/step.rs#L29
warning: this function has too many lines (127/100)
--> src/api/app/step.rs:29:5
|
29 | / pub async fn execute_step(&self, dir: &Path, step: &Step) -> Result<StepResult> {
30 | | match step {
31 | | // cache | output | to do
32 | | // x | x | StepResult::Skip
... |
214 | | }
215 | | }
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_lines
= note: `-W clippy::too-many-lines` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::too_many_lines)]`
|
adding items after statements is confusing, since items exist from the start of the scope:
src/api/app/actions/build/mod.rs#L27
warning: adding items after statements is confusing, since items exist from the start of the scope
--> src/api/app/actions/build/mod.rs:27:9
|
27 | const MAX_CONCURRENT_TASKS: usize = 20;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements
= note: `-W clippy::items-after-statements` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::items_after_statements)]`
|
method `diff_to` is never used:
src/api/utils/pathdiff.rs#L4
warning: method `diff_to` is never used
--> src/api/utils/pathdiff.rs:4:8
|
3 | pub trait DiffTo {
| ------ method in this trait
4 | fn diff_to<P>(&self, path: P) -> Option<PathBuf>
| ^^^^^^^
|
method `dir` is never used:
src/api/utils/accessor.rs#L35
warning: method `dir` is never used
--> src/api/utils/accessor.rs:35:18
|
22 | impl Accessor {
| ------------- method in this implementation
...
35 | pub async fn dir(&self) -> Result<Vec<String>> {
| ^^^
|
function `write_toml` is never used:
src/api/utils/mod.rs#L39
warning: function `write_toml` is never used
--> src/api/utils/mod.rs:39:8
|
39 | pub fn write_toml<T: Serialize>(path: &Path, filename: &str, value: &T) -> Result<()> {
| ^^^^^^^^^^
|
methods `get_url` and `get_file_info` are never used:
src/api/sources/hangar/models.rs#L208
warning: methods `get_url` and `get_file_info` are never used
--> src/api/sources/hangar/models.rs:208:12
|
206 | impl PlatformVersionDownload {
| ---------------------------- methods in this implementation
207 | #[must_use]
208 | pub fn get_url(&self) -> String {
| ^^^^^^^
...
216 | pub fn get_file_info(&self) -> FileInfo {
| ^^^^^^^^^^^^^
|
methods `fetch_api`, `fetch_project`, `fetch_project_versions`, `fetch_project_version`, `get_download_url`, and `resolve_steps` are never used:
src/api/sources/hangar/mod.rs#L14
warning: methods `fetch_api`, `fetch_project`, `fetch_project_versions`, `fetch_project_version`, `get_download_url`, and `resolve_steps` are never used
--> src/api/sources/hangar/mod.rs:14:18
|
13 | impl<'a> HangarAPI<'a> {
| ---------------------- methods in this implementation
14 | pub async fn fetch_api<T: DeserializeOwned>(&self, url: String) -> Result<T> {
| ^^^^^^^^^
...
18 | pub async fn fetch_project(&self, id: &str) -> Result<Project> {
| ^^^^^^^^^^^^^
...
22 | pub async fn fetch_project_versions(&self, id: &str) -> Result<ProjectVersionsResponse> {
| ^^^^^^^^^^^^^^^^^^^^^^
...
26 | pub async fn fetch_project_version(&self, id: &str, version: &str) -> Result<ProjectVersion> {
| ^^^^^^^^^^^^^^^^^^^^^
...
30 | pub fn get_download_url(&self, id: &str, version: &str, platform: &str) -> String {
| ^^^^^^^^^^^^^^^^
...
37 | pub async fn resolve_steps(&self, id: &str, version_id: &str) -> Result<Vec<Step>> {
| ^^^^^^^^^^^^^
|
struct `HangarAPI` is never constructed:
src/api/sources/hangar/mod.rs#L11
warning: struct `HangarAPI` is never constructed
--> src/api/sources/hangar/mod.rs:11:12
|
11 | pub struct HangarAPI<'a>(pub &'a App);
| ^^^^^^^^^
|
methods `fetch_loaders`, `fetch_versions`, and `fetch_installers` are never used:
src/api/sources/fabric/mod.rs#L13
warning: methods `fetch_loaders`, `fetch_versions`, and `fetch_installers` are never used
--> src/api/sources/fabric/mod.rs:13:18
|
12 | impl<'a> FabricAPI<'a> {
| ---------------------- methods in this implementation
13 | pub async fn fetch_loaders(&self) -> Result<Vec<FabricLoader>> {
| ^^^^^^^^^^^^^
...
17 | pub async fn fetch_versions(&self) -> Result<Vec<FabricVersion>> {
| ^^^^^^^^^^^^^^
...
21 | pub async fn fetch_installers(&self) -> Result<Vec<FabricInstaller>> {
| ^^^^^^^^^^^^^^^^
|
field `0` is never read:
src/api/sources/fabric/mod.rs#L10
warning: field `0` is never read
--> src/api/sources/fabric/mod.rs:10:26
|
10 | pub struct FabricAPI<'a>(pub &'a App);
| --------- ^^^^^^^^^^^
| |
| field in this struct
|
help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
|
10 | pub struct FabricAPI<'a>(());
| ~~
|
method `find_url` is never used:
src/api/sources/maven/models.rs#L43
warning: method `find_url` is never used
--> src/api/sources/maven/models.rs:43:12
|
42 | impl MavenMetadata {
| ------------------ method in this implementation
43 | pub fn find_url(&self, url: &str) -> Option<(String, String)> {
| ^^^^^^^^
|
methods `get_text` and `get_text_all` are never used:
src/api/sources/maven/models.rs#L4
warning: methods `get_text` and `get_text_all` are never used
--> src/api/sources/maven/models.rs:4:8
|
3 | pub trait XMLExt {
| ------ methods in this trait
4 | fn get_text(&self, k: &str) -> Result<String>;
| ^^^^^^^^
5 | fn get_text_all(&self, k: &str) -> Vec<String>;
| ^^^^^^^^^^^^
|
methods `find_maven_artifact`, `fetch_metadata`, and `fetch_metadata_url` are never used:
src/api/sources/maven/mod.rs#L50
warning: methods `find_maven_artifact`, `fetch_metadata`, and `fetch_metadata_url` are never used
--> src/api/sources/maven/mod.rs:50:18
|
49 | impl<'a> MavenAPI<'a> {
| --------------------- methods in this implementation
50 | pub async fn find_maven_artifact(&self, url: &str) -> Result<MavenMetadata> {
| ^^^^^^^^^^^^^^^^^^^
...
60 | pub async fn fetch_metadata(
| ^^^^^^^^^^^^^^
...
70 | pub async fn fetch_metadata_url(&self, url: &str) -> Result<MavenMetadata> {
| ^^^^^^^^^^^^^^^^^^
|
function `guess_maven_metadata_url` is never used:
src/api/sources/maven/mod.rs#L25
warning: function `guess_maven_metadata_url` is never used
--> src/api/sources/maven/mod.rs:25:8
|
25 | pub fn guess_maven_metadata_url(url: &str) -> Result<String> {
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
function `maven_metadata_url` is never used:
src/api/sources/maven/mod.rs#L17
warning: function `maven_metadata_url` is never used
--> src/api/sources/maven/mod.rs:17:8
|
17 | pub fn maven_metadata_url(url: &str, group_id: &str, artifact_id: &str) -> String {
| ^^^^^^^^^^^^^^^^^^
|
function `maven_artifact_url` is never used:
src/api/sources/maven/mod.rs#L10
warning: function `maven_artifact_url` is never used
--> src/api/sources/maven/mod.rs:10:8
|
10 | pub fn maven_artifact_url(url: &str, group_id: &str, artifact_id: &str) -> String {
| ^^^^^^^^^^^^^^^^^^
|
field `0` is never read:
src/api/sources/maven/mod.rs#L8
warning: field `0` is never read
--> src/api/sources/maven/mod.rs:8:25
|
8 | pub struct MavenAPI<'a>(pub &'a App);
| -------- ^^^^^^^^^^^
| |
| field in this struct
|
help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
|
8 | pub struct MavenAPI<'a>(());
| ~~
|
method `fetch_versions` is never used:
src/api/sources/papermc/mod.rs#L21
warning: method `fetch_versions` is never used
--> src/api/sources/papermc/mod.rs:21:18
|
13 | impl<'a> PaperMCAPI<'a> {
| ----------------------- method in this implementation
...
21 | pub async fn fetch_versions(&self, project: &str) -> Result<Vec<String>> {
| ^^^^^^^^^^^^^^
|
method `paste_log` is never used:
src/api/sources/mclogs/mod.rs#L16
warning: method `paste_log` is never used
--> src/api/sources/mclogs/mod.rs:16:18
|
15 | impl<'a> MCLogsAPI<'a> {
| ---------------------- method in this implementation
16 | pub async fn paste_log(&self, content: &str) -> Result<LogFileMetadata> {
| ^^^^^^^^^
|
function `dollar_repl` is never used:
src/api/sources/vanilla/rulematcher.rs#L187
warning: function `dollar_repl` is never used
--> src/api/sources/vanilla/rulematcher.rs:187:4
|
187 | fn dollar_repl<F>(input: &str, replacer: F) -> String
| ^^^^^^^^^^^
|
multiple associated items are never used:
src/api/sources/vanilla/rulematcher.rs#L20
warning: multiple associated items are never used
--> src/api/sources/vanilla/rulematcher.rs:20:12
|
17 | impl PistonRuleMatcher {
| ---------------------- associated items in this implementation
...
20 | pub fn new(os_name: String, os_arch: String, os_version: String) -> Self {
| ^^^
...
33 | pub fn empty() -> Self {
| ^^^^^
...
47 | pub fn from_os() -> Self {
| ^^^^^^^
...
71 | pub fn should_download_library(&self, library: &PistonLibrary) -> bool {
| ^^^^^^^^^^^^^^^^^^^^^^^
...
79 | pub fn get_native_library(&self, library: &PistonLibrary) -> Option<PistonFile> {
| ^^^^^^^^^^^^^^^^^^
...
93 | pub fn match_rules(&self, rules: &Vec<PistonRule>) -> bool {
| ^^^^^^^^^^^
...
107 | pub fn match_rule(&self, rule: &PistonRule) -> bool {
| ^^^^^^^^^^
...
117 | pub fn match_constraint(&self, constraint: &PistonRuleConstraints) -> bool {
| ^^^^^^^^^^^^^^^^
...
145 | pub fn build_args(
| ^^^^^^^^^^
...
172 | pub fn process_string(&self, map: &HashMap<String, String>, input: &str) -> String {
| ^^^^^^^^^^^^^^
|
struct `PistonRuleMatcher` is never constructed:
src/api/sources/vanilla/rulematcher.rs#L12
warning: struct `PistonRuleMatcher` is never constructed
--> src/api/sources/vanilla/rulematcher.rs:12:12
|
12 | pub struct PistonRuleMatcher {
| ^^^^^^^^^^^^^^^^^
|
method `find` is never used:
src/api/sources/vanilla/manifest.rs#L16
warning: method `find` is never used
--> src/api/sources/vanilla/manifest.rs:16:12
|
13 | impl VersionManifest {
| -------------------- method in this implementation
...
16 | pub fn find(&self, id: &str) -> Option<VersionIndex> {
| ^^^^
|
methods `get_url` and `get_path` are never used:
src/api/sources/vanilla/assets.rs#L21
warning: methods `get_url` and `get_path` are never used
--> src/api/sources/vanilla/assets.rs:21:12
|
18 | impl MCAsset {
| ------------ methods in this implementation
...
21 | pub fn get_url(&self) -> String {
| ^^^^^^^
...
27 | pub fn get_path(&self) -> String {
| ^^^^^^^^
|
constant `RESOURCES_URL` is never used:
src/api/sources/vanilla/assets.rs#L4
warning: constant `RESOURCES_URL` is never used
--> src/api/sources/vanilla/assets.rs:4:11
|
4 | pub const RESOURCES_URL: &str = "https://resources.download.minecraft.net";
| ^^^^^^^^^^^^^
|
method `fetch_latest_mcver` is never used:
src/api/sources/vanilla/mod.rs#L49
warning: method `fetch_latest_mcver` is never used
--> src/api/sources/vanilla/mod.rs:49:18
|
44 | impl<'a> VanillaAPI<'a> {
| ----------------------- method in this implementation
...
49 | pub async fn fetch_latest_mcver(&self) -> Result<String> {
| ^^^^^^^^^^^^^^^^^^
|
methods `fetch_project`, `fetch_versions`, and `version_from_hash` are never used:
src/api/sources/modrinth/mod.rs#L24
warning: methods `fetch_project`, `fetch_versions`, and `version_from_hash` are never used
--> src/api/sources/modrinth/mod.rs:24:18
|
19 | impl<'a> ModrinthAPI<'a> {
| ------------------------ methods in this implementation
...
24 | pub async fn fetch_project(&self, id: &str) -> Result<ModrinthProject> {
| ^^^^^^^^^^^^^
...
32 | pub async fn fetch_versions(&self, id: &str) -> Result<Vec<ModrinthVersion>> {
| ^^^^^^^^^^^^^^
...
104 | pub async fn version_from_hash(&self, hash: &str, algo: &str) -> Result<ModrinthVersion> {
| ^^^^^^^^^^^^^^^^^
|
method `fetch_repo_description` is never used:
src/api/sources/github/mod.rs#L73
warning: method `fetch_repo_description` is never used
--> src/api/sources/github/mod.rs:73:18
|
27 | impl<'a> GithubAPI<'a> {
| ---------------------- method in this implementation
...
73 | pub async fn fetch_repo_description(&self, repo: &str) -> Result<String> {
| ^^^^^^^^^^^^^^^^^^^^^^
|
method `fetch_api` is never used:
src/api/sources/curseforge/mod.rs#L13
warning: method `fetch_api` is never used
--> src/api/sources/curseforge/mod.rs:13:18
|
12 | impl<'a> CurseforgeAPI<'a> {
| -------------------------- method in this implementation
13 | pub async fn fetch_api<T: DeserializeOwned>(&self, url: String) -> Result<T> {
| ^^^^^^^^^
|
struct `CurseforgeAPI` is never constructed:
src/api/sources/curseforge/mod.rs#L10
warning: struct `CurseforgeAPI` is never constructed
--> src/api/sources/curseforge/mod.rs:10:12
|
10 | pub struct CurseforgeAPI<'a>(pub &'a App);
| ^^^^^^^^^^^^^
|
constant `CURSEFORGE_API_URL` is never used:
src/api/sources/curseforge/mod.rs#L8
warning: constant `CURSEFORGE_API_URL` is never used
--> src/api/sources/curseforge/mod.rs:8:11
|
8 | pub const CURSEFORGE_API_URL: &str = "https://api.curse.tools/v1/cf";
| ^^^^^^^^^^^^^^^^^^
|
methods `supports_datapacks`, `supports_mods`, and `supports_plugins` are never used:
src/api/models/server/server_flavor.rs#L12
warning: methods `supports_datapacks`, `supports_mods`, and `supports_plugins` are never used
--> src/api/models/server/server_flavor.rs:12:12
|
11 | impl ServerFlavor {
| ----------------- methods in this implementation
12 | pub fn supports_datapacks(&self) -> bool {
| ^^^^^^^^^^^^^^^^^^
...
19 | pub fn supports_mods(&self) -> bool {
| ^^^^^^^^^^^^^
...
26 | pub fn supports_plugins(&self) -> bool {
| ^^^^^^^^^^^^^^^^
|
struct `Lockfile` is never constructed:
src/api/models/lockfile/mod.rs#L1
warning: struct `Lockfile` is never constructed
--> src/api/models/lockfile/mod.rs:1:12
|
1 | pub struct Lockfile {}
| ^^^^^^^^
|
method `to_path` is never used:
src/api/models/addon/addon_target.rs#L44
warning: method `to_path` is never used
--> src/api/models/addon/addon_target.rs:44:12
|
18 | impl AddonTarget {
| ---------------- method in this implementation
...
44 | pub fn to_path(&self) -> PathBuf {
| ^^^^^^^
|
method `resolve_metadata` is never used:
src/api/models/addon/addon_metadata.rs#L42
warning: method `resolve_metadata` is never used
--> src/api/models/addon/addon_metadata.rs:42:18
|
41 | impl Addon {
| ---------- method in this implementation
42 | pub async fn resolve_metadata(&self, app: &App) -> Result<AddonMetadata> {
| ^^^^^^^^^^^^^^^^
|
method `into_str` is never used:
src/api/models/addon/addon_metadata.rs#L20
warning: method `into_str` is never used
--> src/api/models/addon/addon_metadata.rs:20:12
|
19 | impl AddonMetadataSource {
| ------------------------ method in this implementation
20 | pub fn into_str(&self) -> &'static str {
| ^^^^^^^^
|
fields `modrinth`, `cursetools`, `curserinth`, `spiget`, `hangar`, and `mclogs` are never read:
src/api/app/options/mod.rs#L20
warning: fields `modrinth`, `cursetools`, `curserinth`, `spiget`, `hangar`, and `mclogs` are never read
--> src/api/app/options/mod.rs:20:9
|
16 | pub struct ApiUrls {
| ------- fields in this struct
...
20 | pub modrinth: String,
| ^^^^^^^^
21 | #[config(default = "https://curse.tools", env = "API_URL_CURSETOOLS")]
22 | pub cursetools: String,
| ^^^^^^^^^^
23 | #[config(default = "", env = "API_URL_CURSERINTH")]
24 | pub curserinth: String,
| ^^^^^^^^^^
25 | #[config(default = "", env = "API_URL_SPIGET")]
26 | pub spiget: String,
| ^^^^^^
27 | #[config(default = "https://hangar.papermc.io/api/v1", env = "API_URL_HANGAR")]
28 | pub hangar: String,
| ^^^^^^
29 | #[config(default = "https://api.mclo.gs/1", env = "API_URL_MCLOGS")]
30 | pub mclogs: String,
| ^^^^^^
|
field `github_token` is never read:
src/api/app/options/mod.rs#L12
warning: field `github_token` is never read
--> src/api/app/options/mod.rs:12:9
|
4 | pub struct AppOptions {
| ---------- field in this struct
...
12 | pub github_token: Option<String>,
| ^^^^^^^^^^^^
|
method `save_changes` is never used:
src/api/app/io.rs#L23
warning: method `save_changes` is never used
--> src/api/app/io.rs:23:18
|
10 | impl App {
| -------- method in this implementation
...
23 | pub async fn save_changes(&self) -> Result<()> {
| ^^^^^^^^^^^^
|
method `render_markdown` is never used:
src/api/app/actions/markdown/mod.rs#L8
warning: method `render_markdown` is never used
--> src/api/app/actions/markdown/mod.rs:8:18
|
7 | impl App {
| -------- method in this implementation
8 | pub async fn render_markdown(self: Arc<Self>) -> Result<()> {
| ^^^^^^^^^^^^^^^
|
methods `init_server` and `init_network` are never used:
src/api/app/actions/init/mod.rs#L13
warning: methods `init_server` and `init_network` are never used
--> src/api/app/actions/init/mod.rs:13:18
|
12 | impl App {
| -------- methods in this implementation
13 | pub async fn init_server(&mut self) -> Result<()> {
| ^^^^^^^^^^^
...
30 | pub async fn init_network(&mut self) -> Result<()> {
| ^^^^^^^^^^^^
|
method `hangar` is never used:
src/api/app/mod.rs#L97
warning: method `hangar` is never used
--> src/api/app/mod.rs:97:9
|
89 | impl App {
| -------- method in this implementation
...
97 | hangar => HangarAPI,
| ^^^^^^
|
= note: this warning originates in the macro `api_methods` (in Nightly builds, run with -Z macro-backtrace for more info)
|
field `ci` is never read:
src/api/app/mod.rs#L34
warning: field `ci` is never read
--> src/api/app/mod.rs:34:9
|
26 | pub struct App {
| --- field in this struct
...
34 | pub ci: bool,
| ^^
|
= note: `#[warn(dead_code)]` on by default
|
unused import: `Digest`:
src/api/utils/hashing/curseforge.rs#L1
warning: unused import: `Digest`
--> src/api/utils/hashing/curseforge.rs:1:14
|
1 | use digest::{Digest, DynDigest, FixedOutput, FixedOutputReset, OutputSizeUser, Reset, Update};
| ^^^^^^
|
unused variable: `args`:
src/commands/sources/list.rs#L10
warning: unused variable: `args`
--> src/commands/sources/list.rs:10:33
|
10 | pub async fn run(app: Arc<App>, args: Args) -> Result<()> {
| ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
|
unused variable: `args`:
src/commands/init.rs#L14
warning: unused variable: `args`
--> src/commands/init.rs:14:33
|
14 | pub async fn run(app: Arc<App>, args: Args) -> Result<()> {
| ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
|
unused variable: `args`:
src/commands/build.rs#L12
warning: unused variable: `args`
--> src/commands/build.rs:12:33
|
12 | pub async fn run(app: Arc<App>, args: Args) -> Result<()> {
| ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
|
unused variable: `artifact`:
src/api/models/addon/addon_metadata.rs#L94
warning: unused variable: `artifact`
--> src/api/models/addon/addon_metadata.rs:94:17
|
94 | artifact,
| ^^^^^^^^ help: try ignoring the field: `artifact: _`
|
unused variable: `build`:
src/api/models/addon/addon_metadata.rs#L93
warning: unused variable: `build`
--> src/api/models/addon/addon_metadata.rs:93:17
|
93 | build,
| ^^^^^ help: try ignoring the field: `build: _`
|
unused variable: `job`:
src/api/models/addon/addon_metadata.rs#L92
warning: unused variable: `job`
--> src/api/models/addon/addon_metadata.rs:92:17
|
92 | job,
| ^^^ help: try ignoring the field: `job: _`
|
unused variable: `url`:
src/api/models/addon/addon_metadata.rs#L91
warning: unused variable: `url`
--> src/api/models/addon/addon_metadata.rs:91:17
|
91 | url,
| ^^^ help: try ignoring the field: `url: _`
|
unused variable: `version`:
src/api/models/addon/addon_metadata.rs#L63
warning: unused variable: `version`
--> src/api/models/addon/addon_metadata.rs:63:37
|
63 | AddonType::Spigot { id, version } => todo!(),
| ^^^^^^^ help: try ignoring the field: `version: _`
|
unused variable: `id`:
src/api/models/addon/addon_metadata.rs#L63
warning: unused variable: `id`
--> src/api/models/addon/addon_metadata.rs:63:33
|
63 | AddonType::Spigot { id, version } => todo!(),
| ^^ help: try ignoring the field: `id: _`
|
unused variable: `version`:
src/api/models/addon/addon_metadata.rs#L62
warning: unused variable: `version`
--> src/api/models/addon/addon_metadata.rs:62:41
|
62 | AddonType::Curseforge { id, version } => todo!(),
| ^^^^^^^ help: try ignoring the field: `version: _`
|
unused variable: `id`:
src/api/models/addon/addon_metadata.rs#L62
warning: unused variable: `id`
--> src/api/models/addon/addon_metadata.rs:62:37
|
62 | AddonType::Curseforge { id, version } => todo!(),
| ^^ help: try ignoring the field: `id: _`
|
unused variable: `addons`:
src/api/app/actions/markdown/mod.rs#L9
warning: unused variable: `addons`
--> src/api/app/actions/markdown/mod.rs:9:13
|
9 | let addons = self.collect_addons().await?;
| ^^^^^^ help: if this is intentional, prefix it with an underscore: `_addons`
|
variable does not need to be mutable:
src/api/app/actions/init/mod.rs#L35
warning: variable does not need to be mutable
--> src/api/app/actions/init/mod.rs:35:13
|
35 | let mut nw = Network { name };
| ----^^
| |
| help: remove this `mut`
|
variable does not need to be mutable:
src/api/app/actions/init/mod.rs#L18
warning: variable does not need to be mutable
--> src/api/app/actions/init/mod.rs:18:13
|
18 | let mut server = Server {
| ----^^^^^^
| |
| help: remove this `mut`
|
= note: `#[warn(unused_mut)]` on by default
|
unused variable: `app`:
src/api/models/packwiz/mod.rs#L35
warning: unused variable: `app`
--> src/api/models/packwiz/mod.rs:35:36
|
35 | pub async fn into_addon(&self, app: &App, target: AddonTarget) -> Result<Addon> {
| ^^^ help: if this is intentional, prefix it with an underscore: `_app`
|
unused variable: `path`:
src/api/models/source.rs#L38
warning: unused variable: `path`
--> src/api/models/source.rs:38:30
|
38 | Source::Folder { path } => Ok(vec![]),
| ^^^^ help: try ignoring the field: `path: _`
|
unused variable: `format`:
src/api/app/step.rs#L68
warning: unused variable: `format`
--> src/api/app/step.rs:68:38
|
68 | if let Some((format, mut hasher, content)) = hasher {
| ^^^^^^ help: if this is intentional, prefix it with an underscore: `_format`
|
unused variable: `app`:
src/api/sources/url/mod.rs#L10
warning: unused variable: `app`
--> src/api/sources/url/mod.rs:10:5
|
10 | app: &App,
| ^^^ help: if this is intentional, prefix it with an underscore: `_app`
|
unused variable: `artifact`:
src/api/models/addon/addon.rs#L25
warning: unused variable: `artifact`
--> src/api/models/addon/addon.rs:25:51
|
25 | AddonType::Jenkins { url, job, build, artifact } => todo!(),
| ^^^^^^^^ help: try ignoring the field: `artifact: _`
|
unused variable: `build`:
src/api/models/addon/addon.rs#L25
warning: unused variable: `build`
--> src/api/models/addon/addon.rs:25:44
|
25 | AddonType::Jenkins { url, job, build, artifact } => todo!(),
| ^^^^^ help: try ignoring the field: `build: _`
|
unused variable: `job`:
src/api/models/addon/addon.rs#L25
warning: unused variable: `job`
--> src/api/models/addon/addon.rs:25:39
|
25 | AddonType::Jenkins { url, job, build, artifact } => todo!(),
| ^^^ help: try ignoring the field: `job: _`
|
unused variable: `url`:
src/api/models/addon/addon.rs#L25
warning: unused variable: `url`
--> src/api/models/addon/addon.rs:25:34
|
25 | AddonType::Jenkins { url, job, build, artifact } => todo!(),
| ^^^ help: try ignoring the field: `url: _`
|
unused variable: `version`:
src/api/models/addon/addon.rs#L23
warning: unused variable: `version`
--> src/api/models/addon/addon.rs:23:37
|
23 | AddonType::Hangar { id, version } => todo!(),
| ^^^^^^^ help: try ignoring the field: `version: _`
|
unused variable: `id`:
src/api/models/addon/addon.rs#L23
warning: unused variable: `id`
--> src/api/models/addon/addon.rs:23:33
|
23 | AddonType::Hangar { id, version } => todo!(),
| ^^ help: try ignoring the field: `id: _`
|
unused variable: `version`:
src/api/models/addon/addon.rs#L22
warning: unused variable: `version`
--> src/api/models/addon/addon.rs:22:37
|
22 | AddonType::Spigot { id, version } => todo!(),
| ^^^^^^^ help: try ignoring the field: `version: _`
|
unused variable: `id`:
src/api/models/addon/addon.rs#L22
warning: unused variable: `id`
--> src/api/models/addon/addon.rs:22:33
|
22 | AddonType::Spigot { id, version } => todo!(),
| ^^ help: try ignoring the field: `id: _`
|
unused variable: `version`:
src/api/models/addon/addon.rs#L21
warning: unused variable: `version`
--> src/api/models/addon/addon.rs:21:41
|
21 | AddonType::Curseforge { id, version } => Ok(vec![]),
| ^^^^^^^ help: try ignoring the field: `version: _`
|
unused variable: `id`:
src/api/models/addon/addon.rs#L21
warning: unused variable: `id`
--> src/api/models/addon/addon.rs:21:37
|
21 | AddonType::Curseforge { id, version } => Ok(vec![]),
| ^^ help: try ignoring the field: `id: _`
|
unused variable: `env`:
src/api/sources/fabric/mod.rs#L30
warning: unused variable: `env`
--> src/api/sources/fabric/mod.rs:30:9
|
30 | env: &Environment,
| ^^^ help: if this is intentional, prefix it with an underscore: `_env`
|
unused variable: `args`:
src/api/models/server/server_type.rs#L113
warning: unused variable: `args`
--> src/api/models/server/server_type.rs:113:48
|
113 | ServerType::BuildTools { software, args } => todo!(),
| ^^^^ help: try ignoring the field: `args: _`
|
unused variable: `software`:
src/api/models/server/server_type.rs#L113
warning: unused variable: `software`
--> src/api/models/server/server_type.rs:113:38
|
113 | ServerType::BuildTools { software, args } => todo!(),
| ^^^^^^^^ help: try ignoring the field: `software: _`
|
unused variable: `loader`:
src/api/models/server/server_type.rs#L112
warning: unused variable: `loader`
--> src/api/models/server/server_type.rs:112:33
|
112 | ServerType::Forge { loader } => todo!(),
| ^^^^^^ help: try ignoring the field: `loader: _`
|
unused variable: `loader`:
src/api/models/server/server_type.rs#L111
warning: unused variable: `loader`
--> src/api/models/server/server_type.rs:111:36
|
111 | ServerType::NeoForge { loader } => todo!(),
| ^^^^^^ help: try ignoring the field: `loader: _`
|
unused variable: `installer`:
src/api/models/server/server_type.rs#L110
warning: unused variable: `installer`
--> src/api/models/server/server_type.rs:110:41
|
110 | ServerType::Quilt { loader, installer } => todo!(),
| ^^^^^^^^^ help: try ignoring the field: `installer: _`
|
unused variable: `loader`:
src/api/models/server/server_type.rs#L110
warning: unused variable: `loader`
--> src/api/models/server/server_type.rs:110:33
|
110 | ServerType::Quilt { loader, installer } => todo!(),
| ^^^^^^ help: try ignoring the field: `loader: _`
|
unused variable: `build`:
src/api/models/server/server_type.rs#L108
warning: unused variable: `build`
--> src/api/models/server/server_type.rs:108:34
|
108 | ServerType::Purpur { build } => todo!(),
| ^^^^^ help: try ignoring the field: `build: _`
|
= note: `#[warn(unused_variables)]` on by default
|
binding's name is too similar to existing binding:
src/api/utils/pathdiff.rs#L59
warning: binding's name is too similar to existing binding
--> src/api/utils/pathdiff.rs:59:17
|
59 | let mut itb = base.components();
| ^^^
|
note: existing binding defined here
--> src/api/utils/pathdiff.rs:58:17
|
58 | let mut ita = path.components();
| ^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names
|
unused import: `DynDigest`:
src/api/utils/hashing/curseforge.rs#L1
warning: unused import: `DynDigest`
--> src/api/utils/hashing/curseforge.rs:1:22
|
1 | use digest::{Digest, DynDigest, FixedOutput, FixedOutputReset, OutputSizeUser, Reset, Update};
| ^^^^^^^^^
|
unused imports: `Read`, `Seek`:
src/api/utils/accessor.rs#L2
warning: unused imports: `Read`, `Seek`
--> src/api/utils/accessor.rs:2:10
|
2 | io::{Read, Seek},
| ^^^^ ^^^^
|
unused import: `anyhow::Result`:
src/api/step/mod.rs#L3
warning: unused import: `anyhow::Result`
--> src/api/step/mod.rs:3:5
|
3 | use anyhow::Result;
| ^^^^^^^^^^^^^^
|
unused import: `path::Path`:
src/api/step/mod.rs#L1
warning: unused import: `path::Path`
--> src/api/step/mod.rs:1:46
|
1 | use std::{borrow::Cow, collections::HashMap, path::Path};
| ^^^^^^^^^^
|
unused import: `anyhow::Result`:
src/api/sources/hangar/models.rs#L3
warning: unused import: `anyhow::Result`
--> src/api/sources/hangar/models.rs:3:5
|
3 | use anyhow::Result;
| ^^^^^^^^^^^^^^
|
unused imports: `assets::*`, `rulematcher::*`:
src/api/sources/vanilla/mod.rs#L17
warning: unused imports: `assets::*`, `rulematcher::*`
--> src/api/sources/vanilla/mod.rs:17:16
|
17 | pub use self::{assets::*, manifest::*, rulematcher::*, version::*};
| ^^^^^^^^^ ^^^^^^^^^^^^^^
|
unused import: `Context`:
src/api/sources/github/mod.rs#L1
warning: unused import: `Context`
--> src/api/sources/github/mod.rs:1:22
|
1 | use anyhow::{anyhow, Context, Result};
| ^^^^^^^
|
unused import: `models::*`:
src/api/sources/curseforge/mod.rs#L3
warning: unused import: `models::*`
--> src/api/sources/curseforge/mod.rs:3:9
|
3 | pub use models::*;
| ^^^^^^^^^
|
unused import: `server_flavor::*`:
src/api/models/server/mod.rs#L8
warning: unused import: `server_flavor::*`
--> src/api/models/server/mod.rs:8:9
|
8 | pub use server_flavor::*;
| ^^^^^^^^^^^^^^^^
|
unused import: `std::path::Path`:
src/api/models/packwiz/mod.rs#L4
warning: unused import: `std::path::Path`
--> src/api/models/packwiz/mod.rs:4:5
|
4 | use std::path::Path;
| ^^^^^^^^^^^^^^^
|
unused import: `Environment`:
src/api/models/mrpack/mod.rs#L13
warning: unused import: `Environment`
--> src/api/models/mrpack/mod.rs:13:44
|
13 | use super::{Addon, AddonTarget, AddonType, Environment};
| ^^^^^^^^^^^
|
unused import: `models::Environment`:
src/api/models/mrpack/mrpack_file.rs#L5
warning: unused import: `models::Environment`
--> src/api/models/mrpack/mrpack_file.rs:5:18
|
5 | use crate::api::{models::Environment, utils::hashing::HashFormat};
| ^^^^^^^^^^^^^^^^^^^
|
unused import: `addon_metadata::*`:
src/api/models/addon/mod.rs#L8
warning: unused import: `addon_metadata::*`
--> src/api/models/addon/mod.rs:8:9
|
8 | pub use addon_metadata::*;
| ^^^^^^^^^^^^^^^^^
|
redundant else block:
src/api/app/step.rs#L83
warning: redundant else block
--> src/api/app/step.rs:83:36
|
83 | ... } else {
| ______________________________^
84 | | ... // hash mismatch
85 | | ... // TODO: print warning
86 | | ... println!("WARNING Hash mismatch: {}", metadata.filename);
87 | | ... tokio::fs::remove_file(&output_path).await?;
88 | | ... }
| |_______________________^
|
= help: remove the `else` block and move the contents out
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_else
= note: `-W clippy::redundant-else` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::redundant_else)]`
|
unused imports: `CacheLocation`, `FileMeta`, `models::Addon`, `utils::hashing::get_best_hash`:
src/api/app/step.rs#L9
warning: unused imports: `CacheLocation`, `FileMeta`, `models::Addon`, `utils::hashing::get_best_hash`
--> src/api/app/step.rs:9:5
|
9 | models::Addon,
| ^^^^^^^^^^^^^
10 | step::{CacheLocation, FileMeta, Step, StepResult},
| ^^^^^^^^^^^^^ ^^^^^^^^
11 | utils::hashing::get_best_hash,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
|
binding's name is too similar to existing binding:
src/api/app/http.rs#L20
warning: binding's name is too similar to existing binding
--> src/api/app/http.rs:20:13
|
20 | let res = req.send().await?.error_for_status()?;
| ^^^
|
note: existing binding defined here
--> src/api/app/http.rs:16:13
|
16 | let req = self.http_client.get(url.as_str());
| ^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names
= note: `-W clippy::similar-names` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::similar_names)]`
|
clippy
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3, actions-rs/clippy-check@v1. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
|
clippy
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/clippy-check@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
|
build (ubuntu-latest)
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3, actions/upload-artifact@v3. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
|
build (windows-latest)
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
|
Deprecation notice: v1, v2, and v3 of the artifact actions
The following artifacts were uploaded using a version of actions/upload-artifact that is scheduled for deprecation: "mcman-ubuntu-latest".
Please update your workflow to use v4 of the artifact actions.
Learn more: https://github.blog/changelog/2024-04-16-deprecation-notice-v3-of-the-artifact-actions/
|
Artifacts
Produced during runtime
Name | Size | |
---|---|---|
mcman-ubuntu-latest
Expired
|
4.58 MB |
|