mirror of https://github.com/sunface/rust-course
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					29 lines
				
				686 B
			
		
		
			
		
	
	
					29 lines
				
				686 B
			| 
								 
											4 years ago
										 
									 | 
							
								// Type casting in Rust is done via the usage of the `as` operator.
							 | 
						||
| 
								 | 
							
								// Please note that the `as` operator is not only used when type casting.
							 | 
						||
| 
								 | 
							
								// It also helps with renaming imports.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// The goal is to make sure that the division does not fail to compile
							 | 
						||
| 
								 | 
							
								// and returns the proper type.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// I AM NOT DONE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								fn average(values: &[f64]) -> f64 {
							 | 
						||
| 
								 | 
							
								    let total = values.iter().fold(0.0, |a, b| a + b);
							 | 
						||
| 
								 | 
							
								    total / values.len()
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								fn main() {
							 | 
						||
| 
								 | 
							
								    let values = [3.5, 0.3, 13.0, 11.7];
							 | 
						||
| 
								 | 
							
								    println!("{}", average(&values));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#[cfg(test)]
							 | 
						||
| 
								 | 
							
								mod tests {
							 | 
						||
| 
								 | 
							
								    use super::*;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    #[test]
							 | 
						||
| 
								 | 
							
								    fn returns_proper_type_and_value() {
							 | 
						||
| 
								 | 
							
								        assert_eq!(average(&[3.5, 0.3, 13.0, 11.7]), 7.125);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |