use super::basic::{Leaf, Node, Trie};
use std::cell::RefCell;
use std::cmp::Eq;
use std::hash::Hash;
use std::rc::Rc;
#[derive(Debug)]
pub struct WordTrie {
inner: Rc<RefCell<Node<String>>>,
}
impl WordTrie {
fn new() -> WordTrie {
WordTrie { inner: Node::new() }
}
fn insert_words(&self, words: &str, target: &str) {
let m_words = WordTrie::split_words(words);
self.insert(&m_words, target.to_string())
}
fn split_words(words: &str) -> Vec<String> {
let res: Vec<String> = words.chars().map(|word| word.to_string()).collect();
res
}
fn insert(&self, words: &[String], target: String) {
let mut leaf = Leaf::<String>::Nil;
if target != "".to_string() {
leaf = Leaf::<String>::End(target);
}
Node::insert_seq(self.inner.clone(), words, leaf);
}
fn get_leaf(&self, words: &[String]) -> Leaf<String> {
Node::get_leaf(self.inner.clone(), words)
}
}
#[test]
fn test_word() {
let word_trie = WordTrie::new();
let seq = "你在干什么";
let seq1 = "你在找什么";
word_trie.insert_words(seq, "没干嘛");
word_trie.insert_words(seq1, "是吗");
println!("{:?}", word_trie);
assert!(true);
}