我想根據配置字符串選擇一個摘要算法(來自rust-crypto)。在Python或JavaScript,比如說,我可能會使用反射來得到這個:反射的習慣性替代
getattr(Digest, myAlgorithm)
...但是從我已經能夠谷歌,這不是一個語言,如最佳實踐Rust(加上我沒有找到關於如何完成的細節)。我最初的想法是使用模式匹配:
let mut digest = match myAlgorithm {
"sha256" => Sha256::new(),
...
};
然而,這並不因爲工作,而本場比賽的所有分支實現相同的特質,他們最終不同的類型。此外,假設有一種解決方法,手動枚舉代碼中的所有這些選項是很麻煩的。
什麼是在Rust中做到這一點的正確方法?
你知道魯斯特性嗎?它們用於爲多個實現指定一個通用接口。 –