rust 1.22.1 時点での話。
コメントを頂いてできることがわかったのでバチッと書き換えました!(コメント1、コメント2)
書き換え前の記事はこちら
こうする
trait Xor {
fn xor(self, other: Self) -> Self;
}
impl<T> Xor for Option<T> {
#[inline]
fn xor(self, optb: Option<T>) -> Option<T> {
match (self, optb) {
(Some(v), None) => Some(v),
(None, Some(v)) => Some(v),
_ => None,
}
}
}
fn main() {
let (some, none): (Option<u32>, Option<u32>) = (Some(1), None);
assert_eq!(some.xor(none), Some(1));
}
@JunSuzukiJapan, @tatsuya6502
本当にありがとうございます!