Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern crate num_traits;
- fn generic_scalar_product<T>(v: &[T], w: &[T]) -> Result<T,String>
- where
- T: num_traits::Zero + std::ops::Mul<Output = T> + Copy
- {
- let length = v.len();
- if length != w.len() {
- return Err("The error message".to_string());
- }
- // We initialise `sum` to a "zero" of type T
- // using the `zero` method provided by the `Zero` trait
- let mut sum = T::zero();
- for index in 0..length {
- sum = sum + v[index] * w[index];
- }
- Ok(sum)
- }
- fn main() {
- // Unsigned integers
- let x: Vec<u32> = vec![1, 1, 1];
- let y: Vec<u32> = vec![1, 0, 1];
- assert_eq!(generic_scalar_product(&x, &y).unwrap(), 2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement