Stuff Messages to increase throughput #256
Annotations
13 errors and 74 warnings
use of moved value:
boards/communication/src/data_manager.rs#L49
error[E0382]: use of moved value
--> boards/communication/src/data_manager.rs:49:37
|
46 | pub fn handle_data(&mut self, data: Message) {
| ---- move occurs because `data` has type `messages::Message`, which does not implement the `Copy` trait
47 | self.message_queue.write(data);
| ---- value moved here
48 | match data.data {
49 | messages::Data::Command(command) => match command.data {
| ^^^^^^^ value used here after move
|
mismatched types:
boards/communication/src/main.rs#L318
error[E0308]: mismatched types
--> boards/communication/src/main.rs:318:29
|
318 | spawn!(send_gs, msg)?;
| ----------------^^^-
| | |
| | expected `Vec<u8, 255>`, found `Message`
| arguments to this function are incorrect
|
= note: expected struct `heapless::Vec<u8, 255>`
found struct `messages::Message`
note: function defined here
--> boards/communication/src/main.rs:44:1
|
44 | #[rtic::app(device = hal::pac, peripherals = true, dispatchers = [EVSYS_0, EVSYS_1, EVSYS_2])]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: this error originates in the attribute macro `rtic::app` (in Nightly builds, run with -Z macro-backtrace for more info)
|
mismatched types:
boards/communication/src/main.rs#L297
error[E0308]: mismatched types
--> boards/communication/src/main.rs:297:33
|
297 | spawn!(send_gs, message)?;
| ----------------^^^^^^^-
| | |
| | expected `Vec<u8, 255>`, found `Message`
| arguments to this function are incorrect
|
= note: expected struct `heapless::Vec<u8, 255>`
found struct `messages::Message`
note: function defined here
--> boards/communication/src/main.rs:44:1
|
44 | #[rtic::app(device = hal::pac, peripherals = true, dispatchers = [EVSYS_0, EVSYS_1, EVSYS_2])]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: this error originates in the attribute macro `rtic::app` (in Nightly builds, run with -Z macro-backtrace for more info)
|
no field `state` on type `&mut data_manager::DataManager`:
boards/communication/src/main.rs#L293
error[E0609]: no field `state` on type `&mut data_manager::DataManager`
--> boards/communication/src/main.rs:293:47
|
293 | .lock(|data_manager| data_manager.state.clone());
| ^^^^^ unknown field
|
= note: available fields are: `message_queue`, `logging_rate`
|
mismatched types:
boards/communication/src/main.rs#L275
error[E0308]: mismatched types
--> boards/communication/src/main.rs:275:29
|
275 | spawn!(sd_dump, sensors)?;
| ----------------^^^^^^^-
| | |
| | expected `Vec<u8, 255>`, found `Option<Vec<u8, 255>>`
| arguments to this function are incorrect
|
= note: expected struct `heapless::Vec<_, _>`
found enum `core::option::Option<heapless::Vec<_, _>>`
note: function defined here
--> boards/communication/src/main.rs:44:1
|
44 | #[rtic::app(device = hal::pac, peripherals = true, dispatchers = [EVSYS_0, EVSYS_1, EVSYS_2])]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: this error originates in the attribute macro `rtic::app` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using `Option::expect` to unwrap the `core::option::Option<heapless::Vec<u8, 255>>` value, panicking if the value is an `Option::None`
|
275 | spawn!(sd_dump, sensors.expect("REASON"))?;
| +++++++++++++++++
|
mismatched types:
boards/communication/src/main.rs#L274
error[E0308]: mismatched types
--> boards/communication/src/main.rs:274:29
|
274 | spawn!(send_gs, sensors.clone())?;
| ----------------^^^^^^^^^^^^^^^-
| | |
| | expected `Vec<u8, 255>`, found `Option<Vec<u8, 255>>`
| arguments to this function are incorrect
|
= note: expected struct `heapless::Vec<_, _>`
found enum `core::option::Option<heapless::Vec<_, _>>`
note: function defined here
--> boards/communication/src/main.rs:44:1
|
44 | #[rtic::app(device = hal::pac, peripherals = true, dispatchers = [EVSYS_0, EVSYS_1, EVSYS_2])]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: this error originates in the attribute macro `rtic::app` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using `Option::expect` to unwrap the `core::option::Option<heapless::Vec<u8, 255>>` value, panicking if the value is an `Option::None`
|
274 | spawn!(send_gs, sensors.clone().expect("REASON"))?;
| +++++++++++++++++
|
`?` couldn't convert the error to `common_arm::error::hydra_error::HydraErrorType`:
boards/communication/src/main.rs#L248
error[E0277]: `?` couldn't convert the error to `common_arm::error::hydra_error::HydraErrorType`
--> boards/communication/src/main.rs:248:52
|
248 | let mut buf: [u8; 255] = m.into_array()?;
| ^ the trait `core::convert::From<heapless::Vec<u8, 255>>` is not implemented for `common_arm::error::hydra_error::HydraErrorType`, which is required by `core::result::Result<(), common_arm::HydraError>: core::ops::FromResidual<core::result::Result<core::convert::Infallible, heapless::Vec<u8, 255>>>`
|
= note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
= help: the following other types implement trait `core::convert::From<T>`:
<common_arm::error::hydra_error::HydraErrorType as core::convert::From<atsamd_hal::prelude::nb::Error<common_arm::mcan::tx_buffers::Error>>>
<common_arm::error::hydra_error::HydraErrorType as core::convert::From<postcard::Error>>
<common_arm::error::hydra_error::HydraErrorType as core::convert::From<embedded_sdmmc::Error<embedded_sdmmc::sdmmc::Error>>>
<common_arm::error::hydra_error::HydraErrorType as core::convert::From<messages::mavlink::error::MessageReadError>>
<common_arm::error::hydra_error::HydraErrorType as core::convert::From<messages::mavlink::error::MessageWriteError>>
<common_arm::error::hydra_error::HydraErrorType as core::convert::From<common_arm::mcan::message::TooMuchData>>
<common_arm::error::hydra_error::HydraErrorType as core::convert::From<core::convert::Infallible>>
<common_arm::error::hydra_error::HydraErrorType as core::convert::From<&'static str>>
= note: required for `heapless::Vec<u8, 255>` to implement `core::convert::Into<common_arm::error::hydra_error::HydraErrorType>`
= note: required for `common_arm::HydraError` to implement `core::convert::From<heapless::Vec<u8, 255>>`
= note: required for `core::result::Result<(), common_arm::HydraError>` to implement `core::ops::FromResidual<core::result::Result<core::convert::Infallible, heapless::Vec<u8, 255>>>`
|
mismatched types:
boards/communication/src/main.rs#L228
error[E0308]: mismatched types
--> boards/communication/src/main.rs:228:24
|
228 | send_gs::spawn(message).ok();
| -------------- ^^^^^^^ expected `Vec<u8, 255>`, found `Message`
| |
| arguments to this function are incorrect
|
= note: expected struct `heapless::Vec<u8, 255>`
found struct `messages::Message`
note: function defined here
--> boards/communication/src/main.rs:44:1
|
44 | #[rtic::app(device = hal::pac, peripherals = true, dispatchers = [EVSYS_0, EVSYS_1, EVSYS_2])]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: this error originates in the attribute macro `rtic::app` (in Nightly builds, run with -Z macro-backtrace for more info)
|
no field `state` on type `&data_manager::DataManager`:
boards/communication/src/data_manager.rs#L44
error[E0609]: no field `state` on type `&data_manager::DataManager`
--> boards/communication/src/data_manager.rs:44:15
|
44 | [self.state.clone()]
| ^^^^^ unknown field
|
= note: available fields are: `message_queue`, `logging_rate`
|
mismatched types:
boards/communication/src/data_manager.rs#L35
error[E0308]: mismatched types
--> boards/communication/src/data_manager.rs:35:13
|
35 | bytes.extend_from_slice(el.to_bytes())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found `Result<(), ()>`
|
= note: expected unit type `()`
found enum `core::result::Result<(), ()>`
help: consider using a semicolon here
|
35 | bytes.extend_from_slice(el.to_bytes());
| +
help: consider using `Result::expect` to unwrap the `core::result::Result<(), ()>` value, panicking if the value is a `Result::Err`
|
35 | bytes.extend_from_slice(el.to_bytes()).expect("REASON")
| +++++++++++++++++
|
no method named `to_bytes` found for reference `&messages::Message` in the current scope:
boards/communication/src/data_manager.rs#L35
error[E0599]: no method named `to_bytes` found for reference `&messages::Message` in the current scope
--> boards/communication/src/data_manager.rs:35:40
|
35 | bytes.extend_from_slice(el.to_bytes())
| ^^^^^^^^ method not found in `&Message`
|
the trait bound `heapless::HistoryBuffer<messages::Message, 32>: core::clone::Clone` is not satisfied:
boards/communication/src/data_manager.rs#L10
error[E0277]: the trait bound `heapless::HistoryBuffer<messages::Message, 32>: core::clone::Clone` is not satisfied
--> boards/communication/src/data_manager.rs:10:5
|
8 | #[derive(Clone)]
| ----- in this derive macro expansion
9 | pub struct DataManager {
10 | pub message_queue: HistoryBuffer<Message, 32>,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `core::clone::Clone` is not implemented for `heapless::HistoryBuffer<messages::Message, 32>`
|
= note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
|
Clippy
Clippy had exited with the 101 exit code
|
empty `loop {}` wastes CPU cycles:
boards/recovery/src/main.rs#L136
warning: empty `loop {}` wastes CPU cycles
--> boards/recovery/src/main.rs:136:9
|
136 | loop {}
| ^^^^^^^
|
= help: you should either use `panic!()` or add a call pausing or sleeping the thread to the loop body
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_loop
= note: `#[warn(clippy::empty_loop)]` on by default
|
an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true:
boards/recovery/src/state_machine/mod.rs#L106
warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true
--> boards/recovery/src/state_machine/mod.rs:106:1
|
106 | impl Into<state::StateData> for RocketStates {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: `impl From<Local> for Foreign` is allowed by the orphan rules, for more information see
https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into
= note: `#[warn(clippy::from_over_into)]` on by default
help: replace the `Into` implementation with `From<state_machine::RocketStates>`
|
106 ~ impl From<RocketStates> for state::StateData {
107 ~ fn from(val: RocketStates) -> Self {
108 ~ match val {
|
|
empty `loop {}` wastes CPU cycles:
boards/camera/src/main.rs#L127
warning: empty `loop {}` wastes CPU cycles
--> boards/camera/src/main.rs:127:9
|
127 | loop {}
| ^^^^^^^
|
= help: you should either use `panic!()` or add a call pausing or sleeping the thread to the loop body
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_loop
= note: `#[warn(clippy::empty_loop)]` on by default
|
an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true:
boards/camera/src/state_machine/mod.rs#L111
warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true
--> boards/camera/src/state_machine/mod.rs:111:1
|
111 | impl Into<state::StateData> for RocketStates {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: `impl From<Local> for Foreign` is allowed by the orphan rules, for more information see
https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into
= note: `#[warn(clippy::from_over_into)]` on by default
help: replace the `Into` implementation with `From<state_machine::RocketStates>`
|
111 ~ impl From<RocketStates> for state::StateData {
112 ~ fn from(val: RocketStates) -> Self {
113 ~ match val {
|
|
you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`:
boards/camera/src/data_manager.rs#L115
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> boards/camera/src/data_manager.rs:115:47
|
115 | messages::Data::Sensor(sensor) => match sensor.data {
| _______________________________________________^
116 | | messages::sensor::SensorData::Air(air_data) => {
117 | | self.air = Some(air_data);
118 | | }
119 | | _ => {}
120 | | },
| |_____________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try
|
115 ~ messages::Data::Sensor(sensor) => if let messages::sensor::SensorData::Air(air_data) = sensor.data {
116 + self.air = Some(air_data);
117 ~ },
|
|
you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`:
boards/camera/src/data_manager.rs#L114
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> boards/camera/src/data_manager.rs:114:9
|
114 | / match data.data {
115 | | messages::Data::Sensor(sensor) => match sensor.data {
116 | | messages::sensor::SensorData::Air(air_data) => {
117 | | self.air = Some(air_data);
... |
121 | | _ => {}
122 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
= note: `#[warn(clippy::single_match)]` on by default
help: try
|
114 ~ if let messages::Data::Sensor(sensor) = data.data { match sensor.data {
115 + messages::sensor::SensorData::Air(air_data) => {
116 + self.air = Some(air_data);
117 + }
118 + _ => {}
119 + } }
|
|
this function has too many arguments (8/7):
boards/recovery/src/communication.rs#L62
warning: this function has too many arguments (8/7)
--> boards/recovery/src/communication.rs:62:5
|
62 | / pub fn new<S>(
63 | | can_rx: Pin<PA23, AlternateI>,
64 | | can_tx: Pin<PA22, AlternateI>,
65 | | pclk_can: Pclk<Can0, Gclk0Id>,
... |
70 | | loopback: bool,
71 | | ) -> (Self, S::Inc)
| |_______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments
= note: `#[warn(clippy::too_many_arguments)]` on by default
|
very complex type used. Consider factoring parts into `type` definitions:
boards/recovery/src/communication.rs#L52
warning: very complex type used. Consider factoring parts into `type` definitions
--> boards/recovery/src/communication.rs:52:14
|
52 | pub can: Can<
| ______________^
53 | | 'static,
54 | | Can0,
55 | | Dependencies<Can0, Gclk0Id, Pin<PA23, Alternate<I>>, Pin<PA22, Alternate<I>>, CAN0>,
56 | | Capacities,
57 | | >,
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity
= note: `#[warn(clippy::type_complexity)]` on by default
|
variants `DeployDrogue` and `DeployMain` are never constructed:
boards/recovery/src/state_machine/mod.rs#L72
warning: variants `DeployDrogue` and `DeployMain` are never constructed
--> boards/recovery/src/state_machine/mod.rs:72:5
|
71 | pub enum RocketEvents {
| ------------ variants in this enum
72 | DeployDrogue,
| ^^^^^^^^^^^^
73 | DeployMain,
| ^^^^^^^^^^
|
methods `lock_can`, `lock_data_manager`, and `lock_gpio` are never used:
boards/recovery/src/state_machine/mod.rs#L17
warning: methods `lock_can`, `lock_data_manager`, and `lock_gpio` are never used
--> boards/recovery/src/state_machine/mod.rs:17:8
|
16 | pub trait StateMachineSharedResources {
| --------------------------- methods in this trait
17 | fn lock_can(&mut self, f: &dyn Fn(&mut CanDevice0));
| ^^^^^^^^
18 | fn lock_data_manager(&mut self, f: &dyn Fn(&mut DataManager));
| ^^^^^^^^^^^^^^^^^
19 | fn lock_gpio(&mut self, f: &dyn Fn(&mut GPIOManager));
| ^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
|
this function has too many arguments (8/7):
boards/camera/src/communication.rs#L58
warning: this function has too many arguments (8/7)
--> boards/camera/src/communication.rs:58:5
|
58 | / pub fn new<S>(
59 | | can_rx: Pin<PA23, AlternateI>,
60 | | can_tx: Pin<PA22, AlternateI>,
61 | | pclk_can: Pclk<Can0, Gclk0Id>,
... |
66 | | loopback: bool,
67 | | ) -> (Self, S::Inc)
| |_______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments
= note: `#[warn(clippy::too_many_arguments)]` on by default
|
very complex type used. Consider factoring parts into `type` definitions:
boards/camera/src/communication.rs#L48
warning: very complex type used. Consider factoring parts into `type` definitions
--> boards/camera/src/communication.rs:48:14
|
48 | pub can: Can<
| ______________^
49 | | 'static,
50 | | Can0,
51 | | Dependencies<Can0, Gclk0Id, Pin<PA23, Alternate<I>>, Pin<PA22, Alternate<I>>, CAN0>,
52 | | Capacities,
53 | | >,
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity
= note: `#[warn(clippy::type_complexity)]` on by default
|
variants `DeployDrogue` and `DeployMain` are never constructed:
boards/camera/src/state_machine/mod.rs#L77
warning: variants `DeployDrogue` and `DeployMain` are never constructed
--> boards/camera/src/state_machine/mod.rs:77:5
|
76 | pub enum RocketEvents {
| ------------ variants in this enum
77 | DeployDrogue,
| ^^^^^^^^^^^^
78 | DeployMain,
| ^^^^^^^^^^
|
methods `lock_can`, `lock_data_manager`, `lock_gpio`, and `run_em` are never used:
boards/camera/src/state_machine/mod.rs#L18
warning: methods `lock_can`, `lock_data_manager`, `lock_gpio`, and `run_em` are never used
--> boards/camera/src/state_machine/mod.rs:18:8
|
17 | pub trait StateMachineSharedResources {
| --------------------------- methods in this trait
18 | fn lock_can(&mut self, f: &dyn Fn(&mut CanDevice0));
| ^^^^^^^^
19 | fn lock_data_manager(&mut self, f: &dyn Fn(&mut DataManager));
| ^^^^^^^^^^^^^^^^^
20 | fn lock_gpio(&mut self, f: &dyn Fn(&mut GPIOManager));
| ^^^^^^^^^
21 | fn run_em(&mut self, f: &dyn Fn() -> Result<(), HydraError>);
| ^^^^^^
|
= note: `#[warn(dead_code)]` on by default
|
empty `loop {}` wastes CPU cycles:
boards/beacon/src/main.rs#L88
warning: empty `loop {}` wastes CPU cycles
--> boards/beacon/src/main.rs:88:9
|
88 | loop {}
| ^^^^^^^
|
= help: you should either use `panic!()` or add a call pausing or sleeping the thread to the loop body
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_loop
= note: `#[warn(clippy::empty_loop)]` on by default
|
empty `loop {}` wastes CPU cycles:
boards/power/src/main.rs#L113
warning: empty `loop {}` wastes CPU cycles
--> boards/power/src/main.rs:113:9
|
113 | loop {}
| ^^^^^^^
|
= help: you should either use `panic!()` or add a call pausing or sleeping the thread to the loop body
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_loop
= note: `#[warn(clippy::empty_loop)]` on by default
|
unneeded `return` statement:
boards/beacon/src/data_manager.rs#L52
warning: unneeded `return` statement
--> boards/beacon/src/data_manager.rs:52:9
|
52 | return RadioRate::Slow;
| ^^^^^^^^^^^^^^^^^^^^^^
|
= 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`
|
52 - return RadioRate::Slow;
52 + RadioRate::Slow
|
|
field `data_manager` is never read:
boards/beacon/src/main.rs#L45
warning: field `data_manager` is never read
--> boards/beacon/src/main.rs:45:9
|
45 | data_manager: DataManager,
| ^^^^^^^^^^^^
...
59 | fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
| ------ field in this struct
|
static `COM_ID` is never used:
boards/beacon/src/types.rs#L7
warning: static `COM_ID` is never used
--> boards/beacon/src/types.rs:7:12
|
7 | pub static COM_ID: Node = BeaconBoard;
| ^^^^^^
|
methods `get_logging_rate`, `take_sensors`, `clone_states`, and `handle_data` are never used:
boards/beacon/src/data_manager.rs#L45
warning: methods `get_logging_rate`, `take_sensors`, `clone_states`, and `handle_data` are never used
--> boards/beacon/src/data_manager.rs:45:12
|
24 | impl DataManager {
| ---------------- methods in this implementation
...
45 | pub fn get_logging_rate(&mut self) -> RadioRate {
| ^^^^^^^^^^^^^^^^
...
56 | pub fn take_sensors(&mut self) -> [Option<Message>; 13] {
| ^^^^^^^^^^^^
...
74 | pub fn clone_states(&self) -> [Option<StateData>; 1] {
| ^^^^^^^^^^^^
...
77 | pub fn handle_data(&mut self, data: Message) {
| ^^^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
|
unused variable: `m`:
boards/beacon/src/main.rs#L100
warning: unused variable: `m`
--> boards/beacon/src/main.rs:100:50
|
100 | fn send_external(cx: send_external::Context, m: Message) {
| ^ help: if this is intentional, prefix it with an underscore: `_m`
|
unused variable: `cx`:
boards/beacon/src/main.rs#L100
warning: unused variable: `cx`
--> boards/beacon/src/main.rs:100:22
|
100 | fn send_external(cx: send_external::Context, m: Message) {
| ^^ help: if this is intentional, prefix it with an underscore: `_cx`
|
unused variable: `m`:
boards/beacon/src/main.rs#L95
warning: unused variable: `m`
--> boards/beacon/src/main.rs:95:50
|
95 | fn send_internal(cx: send_internal::Context, m: Message) {
| ^ help: if this is intentional, prefix it with an underscore: `_m`
|
unused variable: `cx`:
boards/beacon/src/main.rs#L95
warning: unused variable: `cx`
--> boards/beacon/src/main.rs:95:22
|
95 | fn send_internal(cx: send_internal::Context, m: Message) {
| ^^ help: if this is intentional, prefix it with an underscore: `_cx`
|
= note: `#[warn(unused_variables)]` on by default
|
variable does not need to be mutable:
boards/beacon/src/main.rs#L69
warning: variable does not need to be mutable
--> boards/beacon/src/main.rs:69:13
|
69 | let mut red_led = gpioa.pa10.into_push_pull_output();
| ----^^^^^^^
| |
| help: remove this `mut`
|
variable does not need to be mutable:
boards/beacon/src/main.rs#L68
warning: variable does not need to be mutable
--> boards/beacon/src/main.rs:68:13
|
68 | let mut green_led = gpioa.pa9.into_push_pull_output();
| ----^^^^^^^^^
| |
| help: remove this `mut`
|
= note: `#[warn(unused_mut)]` on by default
|
this function has too many arguments (8/7):
boards/power/src/communication.rs#L60
warning: this function has too many arguments (8/7)
--> boards/power/src/communication.rs:60:5
|
60 | / pub fn new<S>(
61 | | can_rx: Pin<PA23, AlternateI>,
62 | | can_tx: Pin<PA22, AlternateI>,
63 | | pclk_can: Pclk<Can0, Gclk0Id>,
... |
68 | | loopback: bool,
69 | | ) -> (Self, S::Inc)
| |_______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments
= note: `#[warn(clippy::too_many_arguments)]` on by default
|
very complex type used. Consider factoring parts into `type` definitions:
boards/power/src/communication.rs#L50
warning: very complex type used. Consider factoring parts into `type` definitions
--> boards/power/src/communication.rs:50:14
|
50 | pub can: Can<
| ______________^
51 | | 'static,
52 | | Can0,
53 | | Dependencies<Can0, Gclk0Id, Pin<PA23, Alternate<I>>, Pin<PA22, Alternate<I>>, CAN0>,
54 | | Capacities,
55 | | >,
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity
= note: `#[warn(clippy::type_complexity)]` on by default
|
fields `data_manager` and `can0` are never read:
boards/power/src/main.rs#L35
warning: fields `data_manager` and `can0` are never read
--> boards/power/src/main.rs:35:9
|
35 | data_manager: DataManager,
| ^^^^^^^^^^^^
36 | can0: CanDevice0,
| ^^^^
...
52 | fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
| ------ fields in this struct
|
method `handle_data` is never used:
boards/power/src/data_manager.rs#L10
warning: method `handle_data` is never used
--> boards/power/src/data_manager.rs:10:12
|
6 | impl DataManager {
| ---------------- method in this implementation
...
10 | pub fn handle_data(&mut self, _data: Message) {
| ^^^^^^^^^^^
|
field `line_interrupts` is never read:
boards/power/src/communication.rs#L56
warning: field `line_interrupts` is never read
--> boards/power/src/communication.rs:56:5
|
49 | pub struct CanDevice0 {
| ---------- field in this struct
...
56 | line_interrupts: OwnedInterruptSet<Can0, EnabledLine0>,
| ^^^^^^^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
|
unused import: `messages::sensor::Sensor`:
boards/beacon/src/main.rs#L21
warning: unused import: `messages::sensor::Sensor`
--> boards/beacon/src/main.rs:21:5
|
21 | use messages::sensor::Sensor;
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `common_arm::SdManager`:
boards/beacon/src/main.rs#L8
warning: unused import: `common_arm::SdManager`
--> boards/beacon/src/main.rs:8:5
|
8 | use common_arm::SdManager;
| ^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
|
empty `loop {}` wastes CPU cycles:
boards/sensor/src/main.rs#L167
warning: empty `loop {}` wastes CPU cycles
--> boards/sensor/src/main.rs:167:9
|
167 | loop {}
| ^^^^^^^
|
= help: you should either use `panic!()` or add a call pausing or sleeping the thread to the loop body
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_loop
= note: `#[warn(clippy::empty_loop)]` on by default
|
using `clone` on type `[u8; 1024]` which implements the `Copy` trait:
boards/sensor/src/sbg_manager.rs#L134
warning: using `clone` on type `[u8; 1024]` which implements the `Copy` trait
--> boards/sensor/src/sbg_manager.rs:134:33
|
134 | let buf_clone = buf.clone();
| ^^^^^^^^^^^ help: try dereferencing it: `*buf`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
= note: `#[warn(clippy::clone_on_copy)]` on by default
|
this function has too many arguments (8/7):
boards/sensor/src/communication.rs#L64
warning: this function has too many arguments (8/7)
--> boards/sensor/src/communication.rs:64:5
|
64 | / pub fn new<S>(
65 | | can_rx: Pin<PA23, AlternateI>,
66 | | can_tx: Pin<PA22, AlternateI>,
67 | | pclk_can: Pclk<Can0, Gclk0Id>,
... |
72 | | loopback: bool,
73 | | ) -> (Self, S::Inc)
| |_______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments
= note: `#[warn(clippy::too_many_arguments)]` on by default
|
very complex type used. Consider factoring parts into `type` definitions:
boards/sensor/src/communication.rs#L54
warning: very complex type used. Consider factoring parts into `type` definitions
--> boards/sensor/src/communication.rs:54:14
|
54 | pub can: Can<
| ______________^
55 | | 'static,
56 | | Can0,
57 | | Dependencies<Can0, Gclk0Id, Pin<PA23, Alternate<I>>, Pin<PA22, Alternate<I>>, CAN0>,
58 | | Capacities,
59 | | >,
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity
= note: `#[warn(clippy::type_complexity)]` on by default
|
you seem to be trying to use `match` for an equality check. Consider using `if`:
libraries/sbg-rs/src/sbg.rs#L479
warning: you seem to be trying to use `match` for an equality check. Consider using `if`
--> libraries/sbg-rs/src/sbg.rs:479:5
|
479 | / match logType {
480 | | // silently handle errors
481 | | // _SbgDebugLogType_SBG_DEBUG_LOG_TYPE_ERROR => error!("SBG Error"),
482 | | _SbgDebugLogType_SBG_DEBUG_LOG_TYPE_WARNING => warn!("SBG Warning"),
... |
485 | | _ => (),
486 | | };
| |_____^ help: try: `if logType == _SbgDebugLogType_SBG_DEBUG_LOG_TYPE_WARNING { warn!("SBG Warning") }`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
= note: `#[warn(clippy::single_match)]` on by default
|
unsafe function's docs miss `# Safety` section:
libraries/sbg-rs/src/sbg.rs#L459
warning: unsafe function's docs miss `# Safety` section
--> libraries/sbg-rs/src/sbg.rs:459:1
|
459 | / pub unsafe extern "C" fn sbgPlatformDebugLogMsg(
460 | | _pFileName: *const ::core::ffi::c_char,
461 | | _pFunctionName: *const ::core::ffi::c_char,
462 | | _line: u32,
... |
466 | | _pFormat: *const ::core::ffi::c_char,
467 | | ) {
| |_^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc
|
unneeded `return` statement:
libraries/sbg-rs/src/sbg.rs#L421
warning: unneeded `return` statement
--> libraries/sbg-rs/src/sbg.rs:421:23
|
421 | Err(_) => return _SbgErrorCode_SBG_READ_ERROR,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
421 | Err(_) => _SbgErrorCode_SBG_READ_ERROR,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
unneeded `return` statement:
libraries/sbg-rs/src/sbg.rs#L420
warning: unneeded `return` statement
--> libraries/sbg-rs/src/sbg.rs:420:22
|
420 | Ok(_) => return _SbgErrorCode_SBG_NO_ERROR,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
420 | Ok(_) => _SbgErrorCode_SBG_NO_ERROR,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
unsafe function's docs miss `# Safety` section:
libraries/sbg-rs/src/sbg.rs#L406
warning: unsafe function's docs miss `# Safety` section
--> libraries/sbg-rs/src/sbg.rs:406:5
|
406 | / pub unsafe extern "C" fn SbgFlushFunc(
407 | | pInterface: *mut _SbgInterface,
408 | | _flags: u32,
409 | | ) -> _SbgErrorCode {
| |______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc
|
unsafe function's docs miss `# Safety` section:
libraries/sbg-rs/src/sbg.rs#L354
warning: unsafe function's docs miss `# Safety` section
--> libraries/sbg-rs/src/sbg.rs:354:5
|
354 | / pub unsafe extern "C" fn SbgEComReceiveLogFunc(
355 | | _pHandle: *mut _SbgEComHandle,
356 | | msgClass: u32,
357 | | msg: u32,
358 | | pLogData: *const _SbgBinaryLogData,
359 | | _pUserArg: *mut c_void,
360 | | ) -> _SbgErrorCode {
| |______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc
|
unsafe function's docs miss `# Safety` section:
libraries/sbg-rs/src/sbg.rs#L315
warning: unsafe function's docs miss `# Safety` section
--> libraries/sbg-rs/src/sbg.rs:315:5
|
315 | / pub unsafe extern "C" fn SbgInterfaceWriteFunc(
316 | | pInterface: *mut _SbgInterface,
317 | | pBuffer: *const c_void,
318 | | bytesToWrite: usize,
319 | | ) -> _SbgErrorCode {
| |______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc
|
the loop variable `i` is only used to index `array`:
libraries/sbg-rs/src/sbg.rs#L298
warning: the loop variable `i` is only used to index `array`
--> libraries/sbg-rs/src/sbg.rs:298:18
|
298 | for i in 0..(bytesToRead) {
| ^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop
= note: `#[warn(clippy::needless_range_loop)]` on by default
help: consider using an iterator
|
298 | for <item> in array.iter_mut().take((bytesToRead)) {
| ~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
unneeded `return` statement:
libraries/sbg-rs/src/sbg.rs#L309
warning: unneeded `return` statement
--> libraries/sbg-rs/src/sbg.rs:309:9
|
309 | return _SbgErrorCode_SBG_NO_ERROR;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= 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`
|
309 - return _SbgErrorCode_SBG_NO_ERROR;
309 + _SbgErrorCode_SBG_NO_ERROR
|
|
unsafe function's docs miss `# Safety` section:
libraries/sbg-rs/src/sbg.rs#L281
warning: unsafe function's docs miss `# Safety` section
--> libraries/sbg-rs/src/sbg.rs:281:5
|
281 | / pub unsafe extern "C" fn SbgInterfaceReadFunc(
282 | | _pInterface: *mut _SbgInterface,
283 | | pBuffer: *mut c_void,
284 | | pBytesRead: *mut usize,
285 | | bytesToRead: usize,
286 | | ) -> _SbgErrorCode {
| |______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc
= note: `#[warn(clippy::missing_safety_doc)]` on by default
|
creating a shared reference to mutable static is discouraged:
libraries/sbg-rs/src/sbg.rs#L498
warning: creating a shared reference to mutable static is discouraged
--> libraries/sbg-rs/src/sbg.rs:498:15
|
498 | match &RTC {
| ^^^^ shared reference to mutable static
|
= note: for more information, see issue #114447 <https://github.com/rust-lang/rust/issues/114447>
= note: this will be a hard error in the 2024 edition
= note: this shared reference has lifetime `'static`, but if the static ever gets mutated, or a mutable reference is created, then any further use of this shared reference is Undefined Behavior
= note: `#[warn(static_mut_refs)]` on by default
help: use `addr_of!` instead to create a raw pointer
|
498 | match addr_of!(RTC) {
| ~~~~~~~~~~~~~
|
redundant field names in struct initialization:
libraries/sbg-rs/src/sbg.rs#L140
warning: redundant field names in struct initialization
--> libraries/sbg-rs/src/sbg.rs:140:13
|
140 | handle: handle,
| ^^^^^^^^^^^^^^ help: replace it with: `handle`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
= note: `#[warn(clippy::redundant_field_names)]` on by default
|
unused import: `self::_SbgEComOutputMonitoringPoint as SbgEComOutputMonitoringPoint`:
libraries/sbg-rs/src/bindings.rs#L13476
warning: unused import: `self::_SbgEComOutputMonitoringPoint as SbgEComOutputMonitoringPoint`
--> libraries/sbg-rs/src/bindings.rs:13476:9
|
13476 | pub use self::_SbgEComOutputMonitoringPoint as SbgEComOutputMonitoringPoint;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComClockUtcStatus as SbgEComClockUtcStatus`:
libraries/sbg-rs/src/bindings.rs#L10537
warning: unused import: `self::_SbgEComClockUtcStatus as SbgEComClockUtcStatus`
--> libraries/sbg-rs/src/bindings.rs:10537:9
|
10537 | pub use self::_SbgEComClockUtcStatus as SbgEComClockUtcStatus;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComClockStatus as SbgEComClockStatus`:
libraries/sbg-rs/src/bindings.rs#L10527
warning: unused import: `self::_SbgEComClockStatus as SbgEComClockStatus`
--> libraries/sbg-rs/src/bindings.rs:10527:9
|
10527 | pub use self::_SbgEComClockStatus as SbgEComClockStatus;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComCanBusStatus as SbgEComCanBusStatus`:
libraries/sbg-rs/src/bindings.rs#L10251
warning: unused import: `self::_SbgEComCanBusStatus as SbgEComCanBusStatus`
--> libraries/sbg-rs/src/bindings.rs:10251:9
|
10251 | pub use self::_SbgEComCanBusStatus as SbgEComCanBusStatus;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComGpsHdtStatus as SbgEComGpsHdtStatus`:
libraries/sbg-rs/src/bindings.rs#L8535
warning: unused import: `self::_SbgEComGpsHdtStatus as SbgEComGpsHdtStatus`
--> libraries/sbg-rs/src/bindings.rs:8535:9
|
8535 | pub use self::_SbgEComGpsHdtStatus as SbgEComGpsHdtStatus;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComGpsPosType as SbgEComGpsPosType`:
libraries/sbg-rs/src/bindings.rs#L8523
warning: unused import: `self::_SbgEComGpsPosType as SbgEComGpsPosType`
--> libraries/sbg-rs/src/bindings.rs:8523:9
|
8523 | pub use self::_SbgEComGpsPosType as SbgEComGpsPosType;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComGpsPosStatus as SbgEComGpsPosStatus`:
libraries/sbg-rs/src/bindings.rs#L8497
warning: unused import: `self::_SbgEComGpsPosStatus as SbgEComGpsPosStatus`
--> libraries/sbg-rs/src/bindings.rs:8497:9
|
8497 | pub use self::_SbgEComGpsPosStatus as SbgEComGpsPosStatus;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComGpsVelType as SbgEComGpsVelType`:
libraries/sbg-rs/src/bindings.rs#L8485
warning: unused import: `self::_SbgEComGpsVelType as SbgEComGpsVelType`
--> libraries/sbg-rs/src/bindings.rs:8485:9
|
8485 | pub use self::_SbgEComGpsVelType as SbgEComGpsVelType;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComGpsVelStatus as SbgEComGpsVelStatus`:
libraries/sbg-rs/src/bindings.rs#L8473
warning: unused import: `self::_SbgEComGpsVelStatus as SbgEComGpsVelStatus`
--> libraries/sbg-rs/src/bindings.rs:8473:9
|
8473 | pub use self::_SbgEComGpsVelStatus as SbgEComGpsVelStatus;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComSolutionMode as SbgEComSolutionMode`:
libraries/sbg-rs/src/bindings.rs#L8004
warning: unused import: `self::_SbgEComSolutionMode as SbgEComSolutionMode`
--> libraries/sbg-rs/src/bindings.rs:8004:9
|
8004 | pub use self::_SbgEComSolutionMode as SbgEComSolutionMode;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComCmd as SbgEComCmd`:
libraries/sbg-rs/src/bindings.rs#L7306
warning: unused import: `self::_SbgEComCmd as SbgEComCmd`
--> libraries/sbg-rs/src/bindings.rs:7306:9
|
7306 | pub use self::_SbgEComCmd as SbgEComCmd;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComIdThirdParty as SbgEComIdThirdParty`:
libraries/sbg-rs/src/bindings.rs#L7212
warning: unused import: `self::_SbgEComIdThirdParty as SbgEComIdThirdParty`
--> libraries/sbg-rs/src/bindings.rs:7212:9
|
7212 | pub use self::_SbgEComIdThirdParty as SbgEComIdThirdParty;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComIdNmea1Log as SbgEComIdNmea1Log`:
libraries/sbg-rs/src/bindings.rs#L7184
warning: unused import: `self::_SbgEComIdNmea1Log as SbgEComIdNmea1Log`
--> libraries/sbg-rs/src/bindings.rs:7184:9
|
7184 | pub use self::_SbgEComIdNmea1Log as SbgEComIdNmea1Log;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComNmeaLog as SbgEComNmeaLog`:
libraries/sbg-rs/src/bindings.rs#L7152
warning: unused import: `self::_SbgEComNmeaLog as SbgEComNmeaLog`
--> libraries/sbg-rs/src/bindings.rs:7152:9
|
7152 | pub use self::_SbgEComNmeaLog as SbgEComNmeaLog;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComLog1MsgId as SbgEComLog1`:
libraries/sbg-rs/src/bindings.rs#L7126
warning: unused import: `self::_SbgEComLog1MsgId as SbgEComLog1`
--> libraries/sbg-rs/src/bindings.rs:7126:9
|
7126 | pub use self::_SbgEComLog1MsgId as SbgEComLog1;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgEComLog as SbgEComLog`:
libraries/sbg-rs/src/bindings.rs#L7118
warning: unused import: `self::_SbgEComLog as SbgEComLog`
--> libraries/sbg-rs/src/bindings.rs:7118:9
|
7118 | pub use self::_SbgEComLog as SbgEComLog;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
unused import: `self::_SbgSBSeekOrigin as SbgSBSeekOrigin`:
libraries/sbg-rs/src/bindings.rs#L6822
warning: unused import: `self::_SbgSBSeekOrigin as SbgSBSeekOrigin`
--> libraries/sbg-rs/src/bindings.rs:6822:9
|
6822 | pub use self::_SbgSBSeekOrigin as SbgSBSeekOrigin;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
|
unneeded `return` statement:
libraries/common-arm/src/health/health_manager.rs#L74
warning: unneeded `return` statement
--> libraries/common-arm/src/health/health_manager.rs:74:13
|
74 | return HealthState::Warning;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
74 - return HealthState::Warning;
74 + HealthState::Warning
|
|
unneeded `return` statement:
libraries/common-arm/src/health/health_manager.rs#L66
warning: unneeded `return` statement
--> libraries/common-arm/src/health/health_manager.rs:66:17
|
66 | return HealthState::Nominal;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= 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`
|
66 - return HealthState::Nominal;
66 + HealthState::Nominal
|
|
Clippy
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions-rs/toolchain@v1, actions/cache@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/toolchain@v1, 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/
|
Clippy
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
|
Clippy
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
|
Clippy
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
|
Clippy
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
|