Function 从Rust中的函数返回值的不同方式有哪些?
我遇到了以下两种情况:Function 从Rust中的函数返回值的不同方式有哪些?,function,rust,return,Function,Rust,Return,我遇到了以下两种情况: #[derive(Debug)] struct InputList(i32, i32, i32, i32); #[derive(Debug)] struct OutputList(i32, i32, i32, i32); // Option 1 fn foo(input_list: InputList) -> OutputList { return OutputList(input_list.0, input_list.1, input_list.2, i
#[derive(Debug)]
struct InputList(i32, i32, i32, i32);
#[derive(Debug)]
struct OutputList(i32, i32, i32, i32);
// Option 1
fn foo(input_list: InputList) -> OutputList {
return OutputList(input_list.0, input_list.1, input_list.2, input_list.3);
}
// Option 2
fn bar(input_list: InputList) -> OutputList {
OutputList(input_list.0, input_list.1, input_list.2, input_list.3)
}
fn main() {
let input_list1 = InputList(1, 2, 3, 4);
let input_list2 = InputList(6, 7, 8, 9);
println!("foo() invocation output: {:?}", foo(input_list1));
println!("bar() invocation output: {:?}", bar(input_list2));
}
这是唯一的两个选择吗
在函数的尾部位置有一个不带分号的表达式
fn implicit() -> i32 {
1
}
async fn sometime() -> i32 {
async { 42 }.await;
99
}
另见:
使用return语句
fn explicit() -> i32 {
return 1;
}
另见:
宏中可以包含return语句,因此您可能不会总是看到返回
另见:
使用?在返回实现Try的类型的函数中
这是一个棘手且不明显的问题,因为编译器重写函数以包含状态机并实现未来特性。each.wait可以返回一个,但函数的调用方永远不必考虑这个问题
另见:
惊慌失措
fn bail_out() -> Option<i32> {
panic!()
}
在这里,函数返回,但通常不会得到值
另见:
async fn sometime() -> i32 {
async { 42 }.await;
99
}
fn bail_out() -> Option<i32> {
panic!()
}