这些是我可以想出的方法来尝试匹配引用计数的内部可变枚举:
#![allow(unused)]
use std::cell::RefCell;
use std::rc::Rc;
#[derive(Debug, Clone, PartialEq)]
struct Bar {
some_bar: Vec<f64>,
}
#[derive(Debug, Clone, PartialEq)]
struct Baz {
some_baz: i32,
}
#[derive(Debug, Clone, PartialEq)]
enum Foo {
Bar(Bar),
Baz(Baz),
}
fn is_baz(foo_ref: Rc<RefCell<Foo>>) -> bool {
match foo_ref {
Foo::Bar(_) => false,
Foo::Baz(_) => true,
}
}
fn is_baz_borrow(foo_ref: Rc<RefCell<Foo>>) -> bool {
match foo_ref.borrow() {
Foo::Bar(_) => false,
Foo::Baz(_) => true,
}
}
fn is_baz_deref(foo_ref: Rc<RefCell<Foo>>) -> bool {
match *foo_ref {
Foo::Bar(_) => false,
Foo::Baz(_) …Run Code Online (Sandbox Code Playgroud)