回答:
に変換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
ここで交換可能であるように見えます。