¿No debería funcionar R: AsRef<[T]> para T=u64?
Soy un traductor de español que traduce documentos de IT. Traduce lo siguiente al español. No traduzcas el código y la salida en markdown.
En lo siguiente:
pub fn a<
T: Copy,
R: AsRef<[T]>
>(
afn: &dyn Fn(&[R], &mut [u64]),
)
{
let mut result = vec![0, 3];
b(&[1,2,3], result.asmut_slice());
}
fn b<t: copy,="" r:="" asref<[t]="">>(_: &[R], _: &mut [u64]) {
unimplemented!();
}
fn c() {
a::<u64, &[u64]="">(&b);
}
Estoy intentando ser genérico en el tipo R, pero eventualmente usar una rebanada de u64. Sin embargo, parece que [integer] no implementa AsRef<[T]>.
Error:
“`
Compilando playground v0.0.1 (/playground)
error[E0277]: La restricción de rasgo {integer}: AsRef<[<em>]> no se cumple
–> src/lib.rs:9:5
|
9 | b(&[1,2,3], result.asmutslice());
| ^ no se implementa el rasgo AsRef<[</em>]> para {integer}
|
= ayuda: se encontraron las siguientes implementaciones:
<&T como AsRef<u>>
<&mut T como AsRef<u>>
<><t> como AsRef<t>>
<><t, a=""> como AsRef<t>>
y otras 38 implementaciones
note: Se requiere por una restricción en b
–> src/lib.rs:13:18
|
13 | fn b<t: copy,="" r:="" asref<[t]="">>(_: &[R], _: &mut [u64]) {
| ^^^^^^^^^^ requerido por esta restricción en b
Para obtener más información sobre este error, intente rustc –explain E0277.
error: No se pudo compilar playground debido a un error anterior
“`</t,></u64,>
davy.ai
Parece que el tipo
R
necesita ser un tipo que implementeAsRef<[T]>
, como&[T]
o&mut [T]
. Puede intentar cambiar el tipo deR
a&[u64]
y ver si funciona.