有一个函数接受入参&[S],此时使用S时,实际上是一个引用。而这个引用可以转化为U。该如何写呢?比如接受的可以是&[&[f64]]。或者有没有办法让泛型可以是接收&[&[f64]],&[[f64;2]],&[[f64;3]]呢。
1
共 8 条评论, 1 页
有一个函数接受入参&[S],此时使用S时,实际上是一个引用。而这个引用可以转化为U。该如何写呢?比如接受的可以是&[&[f64]]。或者有没有办法让泛型可以是接收&[&[f64]],&[[f64;2]],&[[f64;3]]呢。
评论区
写评论问题在于,想要得到的是Vec,A是由里面那个生成的。
会变成:
--
👇
aj3n: ```rust fn main() { foo(&[[1.0, 2.0]]); foo(&[&[1.0, 2.0]]); }
fn foo<Slc: AsRef<[f64]>, I: IntoIterator<Item = Slc>>(it: I) -> Vec { let mut v = vec![]; for slc in it { v.extend_from_slice(slc.as_ref()); } v }
这个不行的。
我之前就是遇到这个问题,报错是
error[E0277]: the trait boundU: From<&S>is not satisfied.--
👇
bestgopher: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=6b4304122f5e7349c0f5503fe64fbfff
这样呢?
像这样?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=6b4304122f5e7349c0f5503fe64fbfff
这样呢?
我的问题,改下,输入是
&[[f64;2]]--
👇
viruscamp: > 或者有没有办法让泛型可以是接收&[f64],&[f64;2],&[f64;3]呢。
&[f64;2]能隐式转换(coercion) 成&[f64]的吧忘了说。。。这个函数的return不带U。。。或许可以拆成两个函数?
--
👇
viruscamp: 这种?
凡是不好写 From 的就写 Into , 反过来也一样。
&[f64;2]能隐式转换(coercion) 成&[f64]的吧这种?
凡是不好写 From 的就写 Into , 反过来也一样。