Skip to content

This version does not work, singleton is incorrect #38

This version does not work, singleton is incorrect

This version does not work, singleton is incorrect #38

Triggered via push September 19, 2023 15:06
Status Success
Total duration 9m 5s
Artifacts

rust.yml

on: push
Fit to window
Zoom out
Zoom in

Annotations

24 warnings
unused import: `std::env`: src/main.rs#L1
warning: unused import: `std::env` --> src/main.rs:1:5 | 1 | use std::env; | ^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
this function has too many lines (122/100): src/lib.rs#L411
warning: this function has too many lines (122/100) --> src/lib.rs:411:1 | 411 | / pub fn run(config: &Config) -> Result<(), Box<dyn Error>> { 412 | | //Coloring function 413 | | let mut coloring_function = COLORING_FUNCTION; 414 | | //Color channel mapping ... | 554 | | Ok(()) 555 | | } | |_^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_lines
consider adding a `;` to the last statement for consistent formatting: src/lib.rs#L345
warning: consider adding a `;` to the last statement for consistent formatting --> src/lib.rs:345:13 | 345 | self.previous.store(current, Ordering::Relaxed) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `self.previous.store(current, Ordering::Relaxed);` | = 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/lib.rs#L255
warning: consider adding a `;` to the last statement for consistent formatting --> src/lib.rs:255:17 | 255 | println!("translation_amount: {}", MandelbrotModel::get_instance().vars.translation_amount) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `println!("translation_amount: {}", MandelbrotModel::get_instance().vars.translation_amount);` | = 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/lib.rs#L238
warning: consider adding a `;` to the last statement for consistent formatting --> src/lib.rs:238:17 | 238 | / *coloring_function = pick_option(&[ 239 | | ("HSV", TrueColor::new_from_hsv_colors), 240 | | ("Bernstein polynomials", TrueColor::new_from_bernstein_polynomials), 241 | | ]) | |__________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned = note: `#[warn(clippy::semicolon_if_nothing_returned)]` implied by `#[warn(clippy::pedantic)]` help: add a `;` here | 238 ~ *coloring_function = pick_option(&[ 239 + ("HSV", TrueColor::new_from_hsv_colors), 240 + ("Bernstein polynomials", TrueColor::new_from_bernstein_polynomials), 241 + ]); |
strict comparison of `f32` or `f64`: src/lib.rs#L213
warning: strict comparison of `f32` or `f64` --> src/lib.rs:213:20 | 213 | if config.window_scale == 1.0 { | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some margin of error: `(config.window_scale - 1.0).abs() < error_margin` | = note: `f32::EPSILON` and `f64::EPSILON` are available for the `error_margin` = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp = note: `#[warn(clippy::float_cmp)]` implied by `#[warn(clippy::pedantic)]`
this function has too many lines (143/100): src/lib.rs#L132
warning: this function has too many lines (143/100) --> src/lib.rs:132:1 | 132 | / fn handle_key_events( 133 | | window: &Window, 134 | | c: &mut ComplexPlane, 135 | | p: &mut PixelBuffer, ... | 286 | | } 287 | | } | |_^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_lines = note: `#[warn(clippy::too_many_lines)]` implied by `#[warn(clippy::pedantic)]`
this function has too many arguments (10/7): src/lib.rs#L132
warning: this function has too many arguments (10/7) --> src/lib.rs:132:1 | 132 | / fn handle_key_events( 133 | | window: &Window, 134 | | c: &mut ComplexPlane, 135 | | p: &mut PixelBuffer, ... | 142 | | config: &Config, 143 | | ) { | |__^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments = note: `#[warn(clippy::too_many_arguments)]` implied by `#[warn(clippy::complexity)]`
docs for function which may panic missing `# Panics` section: src/view/coloring.rs#L123
warning: docs for function which may panic missing `# Panics` section --> src/view/coloring.rs:123:5 | 123 | pub fn get_color(&self, color: char) -> u8 { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: first possible panic found here --> src/view/coloring.rs:124:9 | 124 | / assert!( 125 | | color == 'R' || color == 'G' || color == 'B', 126 | | "Error: color should be equal to R, G, or B, color = {}", 127 | | color 128 | | ); | |_________^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
docs for function returning `Result` missing `# Errors` section: src/view/coloring.rs#L43
warning: docs for function returning `Result` missing `# Errors` section --> src/view/coloring.rs:43:5 | 43 | pub fn new(r_g_b: &str) -> Result<ColorChannelMapping, String> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc = note: `#[warn(clippy::missing_errors_doc)]` implied by `#[warn(clippy::pedantic)]`
item in documentation is missing backticks: src/view/coloring.rs#L10
warning: item in documentation is missing backticks --> src/view/coloring.rs:10:10 | 10 | /// E.g: Ok(ColorChannelMapping::BGR) means that red will get the value of blue, green the value of green, and blue the value of red: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown help: try | 10 | /// E.g: `Ok(ColorChannelMapping::BGR`) means that red will get the value of blue, green the value of green, and blue the value of red: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item in documentation is missing backticks: src/view/coloring.rs#L8
warning: item in documentation is missing backticks --> src/view/coloring.rs:8:19 | 8 | ///A mapping from ColorChannelMapping -> RGB, the first character denotes the new red channel, the second character the new green channel, | ^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown help: try | 8 | ///A mapping from `ColorChannelMapping` -> RGB, the first character denotes the new red channel, the second character the new green channel, | ~~~~~~~~~~~~~~~~~~~~~
the function has a cognitive complexity of (7/5): src/model/rendering.rs#L114
warning: the function has a cognitive complexity of (7/5) --> src/model/rendering.rs:114:41 | 114 | let handle = thread::spawn(move || { | ^^ | = help: you could split it up into multiple smaller functions = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cognitive_complexity note: the lint level is defined here --> src/lib.rs:4:5 | 4 | clippy::nursery, | ^^^^^^^^^^^^^^^ = note: `#[warn(clippy::cognitive_complexity)]` implied by `#[warn(clippy::nursery)]`
docs for function which may panic missing `# Panics` section: src/model/mandelbrot_model.rs#L41
warning: docs for function which may panic missing `# Panics` section --> src/model/mandelbrot_model.rs:41:5 | 41 | pub fn get_instance() -> MutexGuard<'static, MandelbrotModel> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: first possible panic found here --> src/model/mandelbrot_model.rs:42:9 | 42 | MANDELBROT_MODEL_INSTANCE.lock().unwrap() | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
item in documentation is missing backticks: src/model/mandelbrot_model.rs#L40
warning: item in documentation is missing backticks --> src/model/mandelbrot_model.rs:40:31 | 40 | /// Returns the singleton MandelbrotModel instance. | ^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown = note: `#[warn(clippy::doc_markdown)]` implied by `#[warn(clippy::pedantic)]` help: try | 40 | /// Returns the singleton `MandelbrotModel` instance. | ~~~~~~~~~~~~~~~~~
using `clone` on type `Config` which implements the `Copy` trait: src/model/mandelbrot_model.rs#L31
warning: using `clone` on type `Config` which implements the `Copy` trait --> src/model/mandelbrot_model.rs:31:21 | 31 | config: config.clone(), | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `config` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy note: the lint level is defined here --> src/lib.rs:9:5 | 9 | clippy::complexity | ^^^^^^^^^^^^^^^^^^ = note: `#[warn(clippy::clone_on_copy)]` implied by `#[warn(clippy::complexity)]`
you should consider adding a `Default` implementation for `MandelbrotModel`: src/model/mandelbrot_model.rs#L25
warning: you should consider adding a `Default` implementation for `MandelbrotModel` --> src/model/mandelbrot_model.rs:25:5 | 25 | / pub fn new() -> MandelbrotModel { 26 | | let config = Config::build(env::args()).unwrap_or_else(|err| { 27 | | eprintln!("Problem parsing arguments: {}", err); 28 | | process::exit(1); ... | 37 | | } 38 | | } | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default help: try adding this | 24 + impl Default for MandelbrotModel { 25 + fn default() -> Self { 26 + Self::new() 27 + } 28 + } |
docs for function which may panic missing `# Panics` section: src/controller/user_input.rs#L31
warning: docs for function which may panic missing `# Panics` section --> src/controller/user_input.rs:31:1 | 31 | pub fn get_user_input_untrimmed() -> String { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: first possible panic found here --> src/controller/user_input.rs:34:5 | 34 | / io::stdin() 35 | | .read_line(&mut user_input) 36 | | .expect("Error: Failed to read the user's input from stdin."); | |_____________________________________________________________________^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc note: the lint level is defined here --> src/lib.rs:3:5 | 3 | clippy::pedantic, | ^^^^^^^^^^^^^^^^ = note: `#[warn(clippy::missing_panics_doc)]` implied by `#[warn(clippy::pedantic)]`
you should consider adding a `Default` implementation for `Config`: src/controller/config.rs#L32
warning: you should consider adding a `Default` implementation for `Config` --> src/controller/config.rs:32:5 | 32 | / pub fn new() -> Config { 33 | | Config { 34 | | window_width: WIDTH, 35 | | window_height: HEIGHT, ... | 42 | | } 43 | | } | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default note: the lint level is defined here --> src/lib.rs:2:5 | 2 | clippy::all, | ^^^^^^^^^^^ = note: `#[warn(clippy::new_without_default)]` implied by `#[warn(clippy::all)]` help: try adding this | 31 + impl Default for Config { 32 + fn default() -> Self { 33 + Self::new() 34 + } 35 + } |
static `COLOR_CHANNEL_MAPPING` is never used: src/lib.rs#L56
warning: static `COLOR_CHANNEL_MAPPING` is never used --> src/lib.rs:56:8 | 56 | static COLOR_CHANNEL_MAPPING: ColorChannelMapping = ColorChannelMapping::RGB; | ^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default
unused variable: `c`: src/lib.rs#L293
warning: unused variable: `c` --> src/lib.rs:293:46 | 293 | fn handle_left_mouse_clicked(x: f32, y: f32, c: &ComplexPlane) { | ^ help: if this is intentional, prefix it with an underscore: `_c`
unused variable: `vars`: src/lib.rs#L137
warning: unused variable: `vars` --> src/lib.rs:137:5 | 137 | vars: &mut InteractionVariables, | ^^^^ help: if this is intentional, prefix it with an underscore: `_vars` | = note: `#[warn(unused_variables)]` on by default
clippy_check
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/
benchmark
The following actions uses node12 which is deprecated and will be forced to run on node16: actions/checkout@v2. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/