回答:
に変換Option<Vec<u8>>してOption<&[u8]>、使用しas_ref()、Index特性を設定するだけです。
fn foo(a: Option<Vec<u8>>, b: Option<&[u8]>) -> bool {
a.as_ref().map(|x| &x[..]) == b
}
Rust 1.40以降では、以下を使用できますas_deref()。
fn foo(a: Option<Vec<u8>>, b: Option<&[u8]>) -> bool {
a.as_deref() == b
}
Vec::as_ref私のものではありません、Rustにはスタイルが1つしか存在しないことが証明されました;)
&**x。
多分それは最適ではありませんが、このコードはコンパイルされるようです:
fn cmp(first: Option<Vec<u8>>, second: Option<&[u8]>) -> bool {
first.as_ref().map(Vec::as_ref) == second
}
ここには2つの主要な変換があります。
first.map(Vec::as_slice) == secondますか?
as_ref()とにかく最初のものが必要です-私はチェックしたところ、それ以外の場合はコンパイルされません。しかし、はい、Vec::as_refとVec::as_sliceここで交換可能であるように見えます。