pub mod array;
pub mod map;
pub mod trie;
pub use array::Array;
pub use map::Map;
pub use trie::Trie;
use contract_bridge::Hand;
use contract_bridge::auction::{Call, RelativeVulnerability};
pub trait System {
fn classify(
&self,
hand: Hand,
vul: RelativeVulnerability,
auction: &[Call],
) -> Option<array::Logits>;
}
impl System for Trie {
fn classify(
&self,
hand: Hand,
vul: RelativeVulnerability,
auction: &[Call],
) -> Option<array::Logits> {
self.get(auction)
.map(|f| f.classify(hand, vul, self.common_prefixes(auction)))
}
}
impl System for trie::Forest {
fn classify(
&self,
hand: Hand,
vul: RelativeVulnerability,
auction: &[Call],
) -> Option<array::Logits> {
self[vul].classify(hand, vul, auction)
}
}