かってきままな日々
2022-07-07 (Th) [長年日記]
_ Rust
昨日の件は、 型の推論に惑わされて辞書の参照を渡してたのが問題だったっぽい。 所有権を渡すつもりで引数渡したら大丈夫みたい。
ただ、今度は辞書の clone どうしよう問題にぶちあたる… JapaneseDictionary が Clone trait を実装してないのは何故??
いや、sudachi-cli がちゃんと動いてるんだからいけるはずか。
…
んー?
main.rs から AnalyzeSplitted::new
にも AnalyzeNonSplitted::new
にも
辞書の参照を渡してる。
AnalyzeSplitted::new
は辞書の参照を受け取る。
それを AnalyzeNonSplitted::new
にそのまま渡す。
つまり AnalyzeNonSplitted::new
は参照を受けるはず。
ここまでは良い。が、
実際の AnalyzeNonSplitted::new
は参照ではなく辞書そのものを受け取るように
書かれてる。
…どゆこと?
fn type_of<T>(r: T) -> T {
let a = std::any::type_name::<T>();
println!("{}", a.to_string());
r
}
こんな関数を突っ込んで、
let dict = type_of(dict);
こんな感じで呼び出してみた。
確かに参照だなぁ…
というか、そもそもなんで StatefulTokenizer::create
は
辞書の参照でも実体でも受け取れるの?