Skip to content

V2 Board Support, Health Manager, Radio Receive, and Cleanup #207

V2 Board Support, Health Manager, Radio Receive, and Cleanup

V2 Board Support, Health Manager, Radio Receive, and Cleanup #207

Triggered via pull request January 23, 2024 00:32
@NoahSprengerNoahSprenger
synchronize #71
sensor_v2
Status Success
Total duration 1m 16s
Artifacts

clippy.yml

on: pull_request
Fit to window
Zoom out
Zoom in

Annotations

102 warnings
unused `core::result::Result` that must be used: /home/runner/work/hydra/hydra/libraries/common-arm/src/error/mod.rs#L92
warning: unused `core::result::Result` that must be used --> boards/sensor/src/sbg_manager.rs:140:21 | 140 | spawn!(sbg_sd(buf_clone)); // this warning isn't right but it's fine | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: this `Result` may be an `Err` variant, which should be handled = note: this warning originates in the macro `spawn` (in Nightly builds, run with -Z macro-backtrace for more info)
unused `core::result::Result` that must be used: /home/runner/work/hydra/hydra/libraries/common-arm/src/error/mod.rs#L92
warning: unused `core::result::Result` that must be used --> boards/sensor/src/data_manager.rs:51:21 | 51 | spawn!(sleep_system); // need proper error handling. could just expect, but that is mal practice. | ^^^^^^^^^^^^^^^^^^^^ | = note: this `Result` may be an `Err` variant, which should be handled = note: `#[warn(unused_must_use)]` on by default = note: this warning originates in the macro `spawn` (in Nightly builds, run with -Z macro-backtrace for more info)
empty `loop {}` wastes CPU cycles: boards/sensor/src/main.rs#L163
warning: empty `loop {}` wastes CPU cycles --> boards/sensor/src/main.rs:163:9 | 163 | 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
unnecessary parentheses around function argument: boards/sensor/src/sbg_manager.rs#L140
warning: unnecessary parentheses around function argument --> boards/sensor/src/sbg_manager.rs:140:34 | 140 | spawn!(sbg_sd(buf_clone)); // this warning isn't right but it's fine | ^ ^ | = note: `#[warn(unused_parens)]` on by default help: remove these parentheses | 140 - spawn!(sbg_sd(buf_clone)); // this warning isn't right but it's fine 140 + spawn!(sbg_sdbuf_clone); // this warning isn't right but it's fine |
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
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
empty `loop {}` wastes CPU cycles: boards/camera/src/main.rs#L121
warning: empty `loop {}` wastes CPU cycles --> boards/camera/src/main.rs:121:9 | 121 | 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#L109
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` --> boards/camera/src/data_manager.rs:109:47 | 109 | messages::Data::Sensor(sensor) => match sensor.data { | _______________________________________________^ 110 | | messages::sensor::SensorData::Air(air_data) => { 111 | | self.air = Some(air_data); 112 | | } 113 | | _ => {} 114 | | }, | |_____________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match help: try | 109 ~ messages::Data::Sensor(sensor) => if let messages::sensor::SensorData::Air(air_data) = sensor.data { 110 + self.air = Some(air_data); 111 ~ }, |
you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`: boards/camera/src/data_manager.rs#L108
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` --> boards/camera/src/data_manager.rs:108:9 | 108 | / match data.data { 109 | | messages::Data::Sensor(sensor) => match sensor.data { 110 | | messages::sensor::SensorData::Air(air_data) => { 111 | | self.air = Some(air_data); ... | 115 | | _ => {} 116 | | } | |_________^ | = 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 | 108 ~ if let messages::Data::Sensor(sensor) = data.data { match sensor.data { 109 + messages::sensor::SensorData::Air(air_data) => { 110 + self.air = Some(air_data); 111 + } 112 + _ => {} 113 + } } |
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, | ^^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default
empty `loop {}` wastes CPU cycles: boards/power/src/main.rs#L107
warning: empty `loop {}` wastes CPU cycles --> boards/power/src/main.rs:107:9 | 107 | 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
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#L29
warning: fields `data_manager` and `can0` are never read --> boards/power/src/main.rs:29:9 | 29 | data_manager: DataManager, | ^^^^^^^^^^^^ 30 | can0: CanDevice0, | ^^^^ ... 46 | 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#L11
warning: method `handle_data` is never used --> boards/power/src/data_manager.rs:11:12 | 7 | impl DataManager { | ---------------- method in this implementation ... 11 | 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 variable: `data`: boards/power/src/data_manager.rs#L11
warning: unused variable: `data` --> boards/power/src/data_manager.rs:11:35 | 11 | pub fn handle_data(&mut self, data: Message) { | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` | = note: `#[warn(unused_variables)]` on by default
unused imports: `Current`, `Regulator`, `SensorData`, `Temperature`, `Voltage`: boards/power/src/data_manager.rs#L2
warning: unused imports: `Current`, `Regulator`, `SensorData`, `Temperature`, `Voltage` --> boards/power/src/data_manager.rs:2:24 | 2 | use messages::sensor::{Current, Regulator, SensorData, Temperature, Voltage}; | ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
unused `core::result::Result` that must be used: /home/runner/work/hydra/hydra/libraries/common-arm/src/error/mod.rs#L92
warning: unused `core::result::Result` that must be used --> boards/recovery/src/data_manager.rs:166:21 | 166 | spawn!(fire_main); | ^^^^^^^^^^^^^^^^^ | = note: this `Result` may be an `Err` variant, which should be handled = note: this warning originates in the macro `spawn` (in Nightly builds, run with -Z macro-backtrace for more info)
unused `core::result::Result` that must be used: /home/runner/work/hydra/hydra/libraries/common-arm/src/error/mod.rs#L92
warning: unused `core::result::Result` that must be used --> boards/recovery/src/data_manager.rs:163:21 | 163 | spawn!(fire_drogue); // need someway to capture this error. | ^^^^^^^^^^^^^^^^^^^ | = note: this `Result` may be an `Err` variant, which should be handled = note: `#[warn(unused_must_use)]` on by default = note: this warning originates in the macro `spawn` (in Nightly builds, run with -Z macro-backtrace for more info)
empty `loop {}` wastes CPU cycles: boards/recovery/src/main.rs#L131
warning: empty `loop {}` wastes CPU cycles --> boards/recovery/src/main.rs:131:9 | 131 | 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 { |
very complex type used. Consider factoring parts into `type` definitions: boards/communication/src/main.rs#L57
warning: very complex type used. Consider factoring parts into `type` definitions --> boards/communication/src/main.rs:57:21 | 57 | sd_manager: SdManager< | _____________________^ 58 | | Spi< 59 | | Config< 60 | | Pads< ... | 70 | | Pin<PB14, Output<PushPull>>, 71 | | >, | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity
this expression creates a reference which is immediately dereferenced by the compiler: boards/communication/src/main.rs#L255
warning: this expression creates a reference which is immediately dereferenced by the compiler --> boards/communication/src/main.rs:255:42 | 255 | manager.write(&mut file, &msg_ser)?; | ^^^^^^^^ help: change this to: `msg_ser` | = 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: boards/communication/src/main.rs#L252
warning: this expression creates a reference which is immediately dereferenced by the compiler --> boards/communication/src/main.rs:252:42 | 252 | manager.write(&mut file, &msg_ser)?; | ^^^^^^^^ help: change this to: `msg_ser` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `#[warn(clippy::needless_borrow)]` on by default
empty `loop {}` wastes CPU cycles: boards/communication/src/main.rs#L204
warning: empty `loop {}` wastes CPU cycles --> boards/communication/src/main.rs:204:9 | 204 | 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
this function has too many arguments (11/7): boards/communication/src/health.rs#L60
warning: this function has too many arguments (11/7) --> boards/communication/src/health.rs:60:5 | 60 | / pub fn new( 61 | | reader: Adc<ADC0>, 62 | | reader1: Adc<ADC1>, 63 | | pin_3v3: Pin<PB01, Alternate<B>>, ... | 71 | | pin_failover: Pin<PB05, Alternate<B>>, 72 | | ) -> Self { | |_____________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments
unused `core::result::Result` that must be used: /home/runner/work/hydra/hydra/libraries/common-arm/src/error/mod.rs#L92
warning: unused `core::result::Result` that must be used --> boards/sensor_v2/src/data_manager.rs:51:21 | 51 | spawn!(sleep_system); // need proper error handling. could just expect, but that is mal practice. | ^^^^^^^^^^^^^^^^^^^^ | = note: this `Result` may be an `Err` variant, which should be handled = note: `#[warn(unused_must_use)]` on by default = note: this warning originates in the macro `spawn` (in Nightly builds, run with -Z macro-backtrace for more info)
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, | ^^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default
unneeded `return` statement: boards/communication/src/data_manager.rs#L49
warning: unneeded `return` statement --> boards/communication/src/data_manager.rs:49:9 | 49 | return RadioRate::Slow; | ^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 49 - return RadioRate::Slow; 49 + RadioRate::Slow |
empty `loop {}` wastes CPU cycles: boards/sensor_v2/src/main.rs#L59
warning: empty `loop {}` wastes CPU cycles --> boards/sensor_v2/src/main.rs:59:9 | 59 | 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/communication/src/communication.rs#L306
warning: unneeded `return` statement --> boards/communication/src/communication.rs:306:44 | 306 | info!("Radio unknown msg"); | ____________________________________________^ 307 | | return; | |______________________^ | = 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` | 306 - info!("Radio unknown msg"); 307 - return; 306 + info!("Radio unknown msg"); |
this function has too many arguments (8/7): boards/communication/src/communication.rs#L73
warning: this function has too many arguments (8/7) --> boards/communication/src/communication.rs:73:5 | 73 | / pub fn new<S>( 74 | | can_rx: Pin<PA23, AlternateI>, 75 | | can_tx: Pin<PA22, AlternateI>, 76 | | pclk_can: Pclk<Can0, Gclk0Id>, ... | 81 | | loopback: bool, 82 | | ) -> (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/communication/src/communication.rs#L63
warning: very complex type used. Consider factoring parts into `type` definitions --> boards/communication/src/communication.rs:63:14 | 63 | pub can: Can< | ______________^ 64 | | 'static, 65 | | Can0, 66 | | Dependencies<Can0, Gclk0Id, Pin<PA23, Alternate<I>>, Pin<PA22, Alternate<I>>, CAN0>, 67 | | Capacities, 68 | | >, | |_____^ | = 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
field `radio_manager` is never read: boards/communication/src/main.rs#L72
warning: field `radio_manager` is never read --> boards/communication/src/main.rs:72:9 | 72 | radio_manager: RadioManager, | ^^^^^^^^^^^^^ ... 82 | fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) { | ----- field in this struct
fields `xfer` and `buf_select` are never read: boards/communication/src/communication.rs#L288
warning: fields `xfer` and `buf_select` are never read --> boards/communication/src/communication.rs:288:5 | 287 | pub struct RadioManager { | ------------ fields in this struct 288 | xfer: Option<RadioTransfer>, | ^^^^ 289 | buf_select: bool, | ^^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default
variable does not need to be mutable: boards/communication/src/main.rs#L170
warning: variable does not need to be mutable --> boards/communication/src/main.rs:170:13 | 170 | let mut health_manager = HealthManager::new(health_monitor); | ----^^^^^^^^^^^^^^ | | | help: remove this `mut`
variable does not need to be mutable: boards/communication/src/main.rs#L169
warning: variable does not need to be mutable --> boards/communication/src/main.rs:169:13 | 169 | let mut health_monitor = HealthMonitor::new(health_monitor_channels, 10000, 5000, 1023); | ----^^^^^^^^^^^^^^ | | | help: remove this `mut`
variable does not need to be mutable: boards/communication/src/main.rs#L155
warning: variable does not need to be mutable --> boards/communication/src/main.rs:155:13 | 155 | let mut health_monitor_channels = HealthMonitorChannelsCommunication::new( | ----^^^^^^^^^^^^^^^^^^^^^^^ | | | help: remove this `mut`
variable does not need to be mutable: boards/communication/src/main.rs#L152
warning: variable does not need to be mutable --> boards/communication/src/main.rs:152:13 | 152 | let mut adc1 = Adc::adc1(peripherals.ADC1, &mut mclk); | ----^^^^ | | | help: remove this `mut`
variable does not need to be mutable: boards/communication/src/main.rs#L151
warning: variable does not need to be mutable --> boards/communication/src/main.rs:151:13 | 151 | let mut adc0 = Adc::adc0(peripherals.ADC0, &mut mclk); | ----^^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default
unused variable: `pclk_adc1`: boards/communication/src/main.rs#L149
warning: unused variable: `pclk_adc1` --> boards/communication/src/main.rs:149:14 | 149 | let (pclk_adc1, gclk0) = Pclk::enable(tokens.pclks.adc1, gclk0); | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pclk_adc1`
unused variable: `pclk_adc0`: boards/communication/src/main.rs#L148
warning: unused variable: `pclk_adc0` --> boards/communication/src/main.rs:148:14 | 148 | let (pclk_adc0, gclk0) = Pclk::enable(tokens.pclks.adc0, gclk0); | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pclk_adc0` | = note: `#[warn(unused_variables)]` on by default
field `data_manager` is never read: boards/sensor_v2/src/main.rs#L21
warning: field `data_manager` is never read --> boards/sensor_v2/src/main.rs:21:9 | 21 | data_manager: DataManager, | ^^^^^^^^^^^^ ... 30 | fn init(mut ctx: init::Context) -> (SharedResources, LocalResources, init::Monotonics) { | --------------- field in this struct
methods `clone_sensors` and `handle_data` are never used: boards/sensor_v2/src/data_manager.rs#L32
warning: methods `clone_sensors` and `handle_data` are never used --> boards/sensor_v2/src/data_manager.rs:32:12 | 19 | impl DataManager { | ---------------- methods in this implementation ... 32 | pub fn clone_sensors(&self) -> [Option<SensorData>; 10] { | ^^^^^^^^^^^^^ ... 47 | pub fn handle_data(&mut self, data: Message) { | ^^^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default
variable does not need to be mutable: boards/sensor_v2/src/main.rs#L63
warning: variable does not need to be mutable --> boards/sensor_v2/src/main.rs:63:21 | 63 | fn sleep_system(mut cx: sleep_system::Context) { | ----^^ | | | help: remove this `mut`
unused variable: `cx`: boards/sensor_v2/src/main.rs#L63
warning: unused variable: `cx` --> boards/sensor_v2/src/main.rs:63:25 | 63 | fn sleep_system(mut cx: sleep_system::Context) { | ^^ help: if this is intentional, prefix it with an underscore: `_cx`
variable does not need to be mutable: boards/sensor_v2/src/main.rs#L58
warning: variable does not need to be mutable --> boards/sensor_v2/src/main.rs:58:13 | 58 | fn idle(mut ctx: idle::Context) -> ! { | ----^^^ | | | help: remove this `mut`
unused variable: `ctx`: boards/sensor_v2/src/main.rs#L58
warning: unused variable: `ctx` --> boards/sensor_v2/src/main.rs:58:17 | 58 | fn idle(mut ctx: idle::Context) -> ! { | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` | = note: `#[warn(unused_variables)]` on by default
variable does not need to be mutable: boards/sensor_v2/src/main.rs#L44
warning: variable does not need to be mutable --> boards/sensor_v2/src/main.rs:44:13 | 44 | let mut button = gpioc.pc13.into_floating_input(); | ----^^^^^^ | | | help: remove this `mut`
variable does not need to be mutable: boards/sensor_v2/src/main.rs#L30
warning: variable does not need to be mutable --> boards/sensor_v2/src/main.rs:30:13 | 30 | fn init(mut ctx: init::Context) -> (SharedResources, LocalResources, init::Monotonics) { | ----^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default
unused import: `messages::Event::MainDeploy`: boards/recovery/src/main.rs#L23
warning: unused import: `messages::Event::MainDeploy` --> boards/recovery/src/main.rs:23:5 | 23 | use messages::Event::MainDeploy; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
unused import: `PA02`: boards/communication/src/health.rs#L6
warning: unused import: `PA02` --> boards/communication/src/health.rs:6:24 | 6 | Alternate, Pin, B, PA02, PB00, PB01, PB02, PB03, PB05, PB06, PB07, PB08, PB09, | ^^^^
unused import: `defmt::info`: boards/communication/src/data_manager.rs#L1
warning: unused import: `defmt::info` --> boards/communication/src/data_manager.rs:1:5 | 1 | use defmt::info; | ^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
unused imports: `Edge`, `ExtiPin`: boards/sensor_v2/src/main.rs#L9
warning: unused imports: `Edge`, `ExtiPin` --> boards/sensor_v2/src/main.rs:9:27 | 9 | use stm32h7xx_hal::gpio::{Edge, ExtiPin, Input}; | ^^^^ ^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
unneeded `return` statement: libraries/common-arm/src/health/health_manager.rs#L77
warning: unneeded `return` statement --> libraries/common-arm/src/health/health_manager.rs:77:13 | 77 | return HealthState::Warning; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = 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` | 77 - return HealthState::Warning; 77 + HealthState::Warning |
unused variable: `nominal`: libraries/common-arm/src/health/health_manager.rs#L66
warning: unused variable: `nominal` --> libraries/common-arm/src/health/health_manager.rs:66:34 | 66 | fn get_status(data: Option<u16>, nominal: &RangeInclusive<u16>) -> HealthState { | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nominal`
unused variable: `nominal`: libraries/common-arm/src/health/health_manager.rs#L69
warning: unused variable: `nominal` --> libraries/common-arm/src/health/health_manager.rs:69:13 | 69 | nominal => HealthState::Nominal, | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nominal` | = note: `#[warn(unused_variables)]` on by default
unreachable pattern: libraries/common-arm/src/health/health_manager.rs#L70
warning: unreachable pattern --> libraries/common-arm/src/health/health_manager.rs:70:13 | 69 | nominal => HealthState::Nominal, | ------- matches any value 70 | _ => { | ^ unreachable pattern | = note: `#[warn(unreachable_patterns)]` on by default
unused import: `core::ops::RangeToInclusive`: libraries/common-arm/src/health/health_manager.rs#L6
warning: unused import: `core::ops::RangeToInclusive` --> libraries/common-arm/src/health/health_manager.rs:6:5 | 6 | use core::ops::RangeToInclusive; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
unused import: `core::ops::RangeFrom`: libraries/common-arm/src/health/health_manager.rs#L4
warning: unused import: `core::ops::RangeFrom` --> libraries/common-arm/src/health/health_manager.rs:4:5 | 4 | use core::ops::RangeFrom; | ^^^^^^^^^^^^^^^^^^^^
unused import: `core::any::TypeId`: libraries/common-arm/src/health/health_manager.rs#L3
warning: unused import: `core::any::TypeId` --> libraries/common-arm/src/health/health_manager.rs:3:5 | 3 | use core::any::TypeId; | ^^^^^^^^^^^^^^^^^
unused import: `core::any::Any`: libraries/common-arm/src/health/health_manager.rs#L2
warning: unused import: `core::any::Any` --> libraries/common-arm/src/health/health_manager.rs:2:5 | 2 | use core::any::Any; | ^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
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/