Browse Source

lib: use let-else to simplify code

bump MSRV to 1.65.0
luojia65 2 years ago
parent
commit
4fc461882c
4 changed files with 12 additions and 28 deletions
  1. 2 0
      CHANGELOG.md
  2. 1 1
      README.md
  3. 1 3
      src/hart_mask.rs
  4. 8 24
      src/instance.rs

+ 2 - 0
CHANGELOG.md

@@ -11,6 +11,8 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
 ### Modified
 
+- Use let-else to simplify code, bump MSRV to 1.65.0
+
 ### Removed
 
 ## [0.3.0] - 2022-11-03

+ 1 - 1
README.md

@@ -20,7 +20,7 @@ or consult vendors if they provide discrete RustSBI package support.
 
 ## Minimum supported Rust version
 
-To compile RustSBI library, you need at least stable Rust version of `rustc 1.64.0`.
+To compile RustSBI library, you need at least stable Rust version of `rustc 1.65.0`.
 
 If you are using feature `singleton` or `legacy` to support legacy SBI extensions, you are required to install
 nightly Rust compiler. You may need at least nightly Rust version of `rustc 1.59.0-nightly (c5ecc1570 2021-12-15)`.

+ 1 - 3
src/hart_mask.rs

@@ -29,9 +29,7 @@ impl HartMask {
                     // and all available harts must be considered.
                     return true;
                 }
-                let idx = if let Some(idx) = hart_id.checked_sub(hart_mask_base) {
-                    idx
-                } else {
+                let Some(idx) = hart_id.checked_sub(hart_mask_base) else {
                     // hart_id < hart_mask_base, not in current mask range
                     return false;
                 };

+ 8 - 24
src/instance.rs

@@ -79,9 +79,7 @@ impl<T: Timer, I: Ipi, R: Fence, H: Hsm, S: Reset, P: Pmu> RustSBI<T, I, R, H, S
     pub fn handle_ecall(&mut self, extension: usize, function: usize, param: [usize; 6]) -> SbiRet {
         match extension {
             spec::rfnc::EID_RFNC => {
-                let rfnc = if let Some(rfnc) = &mut self.rfnc {
-                    rfnc
-                } else {
+                let Some(rfnc) = &mut self.rfnc else {
                     return SbiRet::not_supported();
                 };
                 let [param0, param1, param2, param3, param4] =
@@ -113,9 +111,7 @@ impl<T: Timer, I: Ipi, R: Fence, H: Hsm, S: Reset, P: Pmu> RustSBI<T, I, R, H, S
             spec::time::EID_TIME => match () {
                 #[cfg(target_pointer_width = "64")]
                 () => {
-                    let timer = if let Some(timer) = &mut self.timer {
-                        timer
-                    } else {
+                    let Some(timer) = &mut self.timer else {
                         return SbiRet::not_supported();
                     };
                     let [param0] = [param[0]];
@@ -129,9 +125,7 @@ impl<T: Timer, I: Ipi, R: Fence, H: Hsm, S: Reset, P: Pmu> RustSBI<T, I, R, H, S
                 }
                 #[cfg(target_pointer_width = "32")]
                 () => {
-                    let timer = if let Some(timer) = &mut self.timer {
-                        timer
-                    } else {
+                    let Some(timer) = &mut self.timer else {
                         return SbiRet::not_supported();
                     };
                     let [param0, param1] = [param[0], param[1]];
@@ -145,9 +139,7 @@ impl<T: Timer, I: Ipi, R: Fence, H: Hsm, S: Reset, P: Pmu> RustSBI<T, I, R, H, S
                 }
             },
             spec::spi::EID_SPI => {
-                let ipi = if let Some(ipi) = &mut self.ipi {
-                    ipi
-                } else {
+                let Some(ipi) = &mut self.ipi else {
                     return SbiRet::not_supported();
                 };
                 let [param0, param1] = [param[0], param[1]];
@@ -190,9 +182,7 @@ impl<T: Timer, I: Ipi, R: Fence, H: Hsm, S: Reset, P: Pmu> RustSBI<T, I, R, H, S
                 SbiRet::success(value)
             }
             spec::hsm::EID_HSM => {
-                let hsm = if let Some(hsm) = &mut self.hsm {
-                    hsm
-                } else {
+                let Some(hsm) = &mut self.hsm else {
                     return SbiRet::not_supported();
                 };
                 let [param0, param1, param2] = [param[0], param[1], param[2]];
@@ -211,9 +201,7 @@ impl<T: Timer, I: Ipi, R: Fence, H: Hsm, S: Reset, P: Pmu> RustSBI<T, I, R, H, S
                 }
             }
             spec::srst::EID_SRST => {
-                let srst = if let Some(srst) = &mut self.srst {
-                    srst
-                } else {
+                let Some(srst) = &mut self.srst else {
                     return SbiRet::not_supported();
                 };
                 let [param0, param1] = [param[0], param[1]];
@@ -232,9 +220,7 @@ impl<T: Timer, I: Ipi, R: Fence, H: Hsm, S: Reset, P: Pmu> RustSBI<T, I, R, H, S
             spec::pmu::EID_PMU => match () {
                 #[cfg(target_pointer_width = "64")]
                 () => {
-                    let pmu = if let Some(pmu) = &mut self.pmu {
-                        pmu
-                    } else {
+                    let Some(pmu) = &mut self.pmu else {
                         return SbiRet::not_supported();
                     };
                     let [param0, param1, param2, param3, param4] =
@@ -255,9 +241,7 @@ impl<T: Timer, I: Ipi, R: Fence, H: Hsm, S: Reset, P: Pmu> RustSBI<T, I, R, H, S
                 }
                 #[cfg(target_pointer_width = "32")]
                 () => {
-                    let pmu = if let Some(pmu) = &mut self.pmu {
-                        pmu
-                    } else {
+                    let Some(pmu) = &mut self.pmu else {
                         return SbiRet::not_supported();
                     };
                     let [param0, param1, param2, param3, param4, param5] =