where句を用いて関数型をF
に指定して、またargsの一部をT
に指定して関数に渡したいです。
rust
1pub fn func_a<T: AsRef<[u8]>>(input: T) -> Vec<u8> { 2 unimplemented!() 3} 4 5pub fn func_b<F, T>(&self, func: F) 6where 7 T: AsRef<[u8]>, 8 F: Fn(T) -> Vec<u8>, 9{ 10 let input: Vec<u8> = vec![0, 1, 2, 3]; 11 let output = fnc(input.as_ref()); 12 unimplemented!() 13}
関数func_a
を関数func_b
のargとして渡したいです。だいたいwhere句は上記のような例になると予想しますがコンパイルが通りません。下記のようなエラーが出現します。
error
1error[E0308]: mismatched types 2 --> src\named.rs:67:30 3 | 457 | fn func_b<F, T: AsRef<[u8]>>(&self, fnc: F) -> (Vec<u8>, u32) 5 | - this type parameter 6... 767 | let output = fnc(input.as_ref()); 8 | ^^^^^^^^^^^^^^ expected type parameter `T`, found `&[u8]` 9 | 10 = note: expected type parameter `T` 11 found reference `&[u8]` 12 = help: type parameters must be constrained to match other types 13 = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
func_a
は外部から取得するのでfunc_b
を変える事になります。
この問題はどのように解決をすればいいでしょうか?
何かわかる方は回答の方をよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/04 12:45
2020/06/04 15:04
2020/06/05 05:28