try_from_into.rs: Improve slice implementation

Using pattern matching, we can reduce four bound checks to just one.
This commit is contained in:
Eugen 2025-11-29 19:24:55 +09:00 committed by GitHub
parent b5d440fdc3
commit 0bed579a4b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -52,13 +52,12 @@ impl TryFrom<&[i16]> for Color {
type Error = IntoColorError; type Error = IntoColorError;
fn try_from(slice: &[i16]) -> Result<Self, Self::Error> { fn try_from(slice: &[i16]) -> Result<Self, Self::Error> {
// Check the length. if let &[red, green, blue] = slice {
if slice.len() != 3 { // Reuse the implementation for a tuple.
return Err(IntoColorError::BadLen); Self::try_from((red, green, blue))
} else {
Err(IntoColorError::BadLen)
} }
// Reuse the implementation for a tuple.
Self::try_from((slice[0], slice[1], slice[2]))
} }
} }