在下面的代码中,如何返回引用floor而不是新对象?是否可以让函数返回借用的引用或拥有的值?
extern crate num; // 0.2.0
use num::bigint::BigInt;
fn cal(a: BigInt, b: BigInt, floor: &BigInt) -> BigInt {
let c: BigInt = a - b;
if c.ge(floor) {
c
} else {
floor.clone()
}
}
Run Code Online (Sandbox Code Playgroud) 我想向下转换类型(从C到A),但在示例中失败了:
data A = One Int
data B = Two Int
fa::A -> Int
fa a = 1
data C = A | B
f::C -> Int
f c = case c of
A -> fa (c::A)
_ -> 0
Run Code Online (Sandbox Code Playgroud)
错误消息是:
Couldn't match expected type ‘A’ with actual type ‘C’
In the first argument of ‘fa’, namely ‘(c :: A)’
In the expression: fa (c :: A)
Run Code Online (Sandbox Code Playgroud)
我怎么能正确地做到这一点?非常感谢!