Skip to content

Commit cb369fd

Browse files
committed
smbios: Make it more idiomatic Rust
Signed-off-by: Daniel Schaefer <dhs@frame.work>
1 parent 9d6055a commit cb369fd

File tree

1 file changed

+23
-31
lines changed

1 file changed

+23
-31
lines changed

framework_lib/src/smbios.rs

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,7 @@ pub fn is_framework() -> bool {
115115
return maker == "Framework";
116116
}
117117

118-
let smbios = if let Some(smbios) = get_smbios() {
119-
smbios
120-
} else {
118+
let Some(smbios) = get_smbios() else {
121119
return false;
122120
};
123121

@@ -137,44 +135,38 @@ pub fn get_product_name() -> Option<String> {
137135
return Some(product);
138136
}
139137

140-
let smbios = get_smbios();
141-
if smbios.is_none() {
138+
let Some(smbios) = get_smbios() else {
142139
println!("Failed to find SMBIOS");
143140
return None;
144-
}
145-
smbios.unwrap().structures().find_map(|result| {
146-
if let Ok(Structure::System(sys)) = result {
147-
if !sys.product.is_empty() {
148-
return Some(sys.product.to_string());
149-
}
150-
}
151-
None
141+
};
142+
smbios.structures().find_map(|result| match result {
143+
Ok(Structure::System(sys)) if !sys.product.is_empty() => Some(sys.product.to_string()),
144+
_ => None,
152145
})
153146
}
154147

155148
pub fn get_baseboard_version() -> Option<ConfigDigit0> {
156-
let smbios = get_smbios();
157-
if smbios.is_none() {
149+
let Some(smbios) = get_smbios() else {
158150
error!("Failed to find SMBIOS");
159151
return None;
160-
}
161-
smbios.unwrap().structures().find_map(|result| {
162-
if let Ok(Structure::BaseBoard(board)) = result {
163-
let version = board.version;
164-
if !version.is_empty() {
165-
// Assumes it's ASCII, which is guaranteed by SMBIOS
166-
let config_digit0 = &version[0..1];
167-
let config_digit0 = u8::from_str_radix(config_digit0, 16);
168-
if let Ok(version_config) =
169-
config_digit0.map(<ConfigDigit0 as FromPrimitive>::from_u8)
170-
{
171-
return version_config;
172-
} else {
173-
debug!(" Invalid BaseBoard Version: {}'", version);
174-
}
152+
};
153+
smbios.structures().find_map(|result| {
154+
let Ok(Structure::BaseBoard(board)) = result else {
155+
return None;
156+
};
157+
let version = board.version;
158+
if version.is_empty() {
159+
return None;
160+
}
161+
// Assumes it's ASCII, which is guaranteed by SMBIOS
162+
let config_digit0 = u8::from_str_radix(&version[0..1], 16);
163+
match config_digit0.map(<ConfigDigit0 as FromPrimitive>::from_u8) {
164+
Ok(version_config) => version_config,
165+
Err(_) => {
166+
debug!(" Invalid BaseBoard Version: {}'", version);
167+
None
175168
}
176169
}
177-
None
178170
})
179171
}
180172

0 commit comments

Comments
 (0)