Есть два возможных способа сделать это.
Вы можете объявить функцию и передать ее в println!()
, который похож на многие языки программирования, такие как Java,C#
и т. Д.
//Declare the function
fn cross_product(slice1: &[i32], slice2: &[i32]) -> i32 {
slice1[0] * slice2[1] - slice1[1] * slice2[2]
}
//Use it Like following
fn main() {
let vec1 = vec![1, 2, 3];
let vec2 = vec![4, 5, 6];
println!("{}", cross_product(&vec1[..], &vec2[..]));
}
Вы можете объявить замыкание и передать его в println!()
, общую методологию функционального программирования:
// You can declare a closure and use it as function in the same code block
fn main() {
let vec1 = vec![1, 2, 3];
let vec2 = vec![4, 5, 6];
let cross_product = |slice1: &[i32], slice2: &[i32]| -> i32 {
let result = slice1[0] * slice2[1] - slice1[1] * slice2[2];
result
};
println!("{}", cross_product(&vec1[..], &vec2[..]));
}
Обратите внимание, что я создал векторы и замыкания с использованием типа данных i32
, который соответствует целому числу. Вы можете изменить тип с помощью f32
или, если хотите, более широкий диапазон с плавающей точкой f64
.
Похоже, у вас в основном проблемы с синтаксисом Rust. Вы можете создать функцию кросс-продукта или сделать кросс-продукт встроенным.
let vec1 = vec![1.15, 7.0];
let vec2 = vec![7.0, 2.0];
let cross_product = vec1[0] * vec2[1] - vec1[1] * vec2[0];
println!("{}", cross_product);
Если вам нужна функция, вы можете использовать ее постоянно.
fn function_cross_product(vec1: Vec<f64>, vec2: Vec<f64>) -> f64 {
return vec1[0] * vec2[1] - vec1[1] * vec2[0];
};
let other_product = function_cross_product(vec1, vec2);
println!("{}", other_product);
Второе решение может вводить в заблуждение, поскольку оно всегда будет давать перекрестное произведение для вектора 2x2, даже если вы пропустите векторы разных размеров.