es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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,>

Tags:  

Answer

  1. Avatar for davy.ai

    Parece que el tipo R necesita ser un tipo que implemente AsRef<[T]>, como &[T] o &mut [T]. Puede intentar cambiar el tipo de R a &[u64] y ver si funciona.

Comments are closed.