24: Add solutions for section "conversions".
[?]
Aaw9nJhsNmfzFih9mKyNw9mV8CgERXJkRa1kK1Kx3LQH
Aug 14, 2021, 12:53 PM
ZN4JRLPZVM5MVVBIFPKDXDP2FAHCD5F2I7EYHCBOVL3HAJTSSCHQCDependencies
- [2]
H6XH45OP0
Change contents
- edit in exercises/conversions/using_as.rs at line 7
// I AM NOT DONE - replacement in exercises/conversions/using_as.rs at line 10
total / values.len()total / values.len() as f64 - replacement in exercises/conversions/try_from_into.rs at line 5
use std::convert::{TryFrom, TryInto};use std::error;use std::{convert::{TryFrom, TryInto}, error, fmt}; - edit in exercises/conversions/try_from_into.rs at line 13
// I AM NOT DONE - replacement in exercises/conversions/try_from_into.rs at line 26
fn try_from(tuple: (i16, i16, i16)) -> Result<Self, Self::Error> {}fn try_from(tuple: (i16, i16, i16)) -> Result<Self, Self::Error> {Ok(Color {red: u8::try_from(tuple.0)?,green: u8::try_from(tuple.1)?,blue: u8::try_from(tuple.2)?})} - replacement in exercises/conversions/try_from_into.rs at line 38
fn try_from(arr: [i16; 3]) -> Result<Self, Self::Error> {}fn try_from(arr: [i16; 3]) -> Result<Self, Self::Error> {Ok(Color {red: u8::try_from(arr[0])?,green: u8::try_from(arr[1])?,blue: u8::try_from(arr[2])?})} - edit in exercises/conversions/try_from_into.rs at line 46
#[derive(Debug, Clone)]struct IncorrectSliceLength; - edit in exercises/conversions/try_from_into.rs at line 50
impl fmt::Display for IncorrectSliceLength {fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {write!(f, "Incorrect slice length.")}}impl error::Error for IncorrectSliceLength {} - replacement in exercises/conversions/try_from_into.rs at line 61
fn try_from(slice: &[i16]) -> Result<Self, Self::Error> {}fn try_from(slice: &[i16]) -> Result<Self, Self::Error> {if slice.len() == 3 {Ok(Color {red: u8::try_from(slice[0])?,green: u8::try_from(slice[1])?,blue: u8::try_from(slice[2])?})} else { Err(Box::new(IncorrectSliceLength)) }} - replacement in exercises/conversions/from_str.rs at line 5
use std::error;use std::str::FromStr;use std::{error, str::FromStr, fmt}; - edit in exercises/conversions/from_str.rs at line 13
// I AM NOT DONE - edit in exercises/conversions/from_str.rs at line 23
#[derive(Debug, Clone)]struct InvalidInput;impl fmt::Display for InvalidInput {fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {write!(f, "Could not parse input.")}}impl error::Error for InvalidInput {} - edit in exercises/conversions/from_str.rs at line 37
let v: Vec<&str> = s.split(',').collect();if v.len() != 2 || v[0].is_empty() {Err(Box::new(InvalidInput))} else {Ok(Person {name: v[0].to_string(),age: v[1].parse::<usize>()?})} - edit in exercises/conversions/from_into.rs at line 35
// I AM NOT DONE - edit in exercises/conversions/from_into.rs at line 38
let mut s = s.split(',');if let (Some(name), Some(age), None) = (s.next(), s.next(), s.next()) {if let (false, Ok(age)) = (name.is_empty(), age.parse()) {return Person {name: String::from(name),age,};}}Person::default() - edit in exercises/conversions/as_ref_mut.rs at line 4
// I AM NOT DONE - replacement in exercises/conversions/as_ref_mut.rs at line 7
fn byte_counter<T>(arg: T) -> usize {fn byte_counter<T: AsRef<str>>(arg: T) -> usize { - replacement in exercises/conversions/as_ref_mut.rs at line 13
fn char_counter<T>(arg: T) -> usize {fn char_counter<T: AsRef<str>>(arg: T) -> usize {