Error al implementar el rasgo para el tipo de función en Rust.
Quiero implementar el rasgo From
para una enumeración.
Funciona bien para usize
, pero falla para el tipo de función.
¿Hay alguna diferencia entre usize y el tipo de función?
El código:
type Foo = fn (usize) -> usize;
enum Value {
Number(usize),
Function(Foo),
}
impl From<usize> for Value {
fn from(n: usize) -> Self {
Value::Number(n)
}
}
impl From<foo> for Value {
fn from(f: Foo) -> Self {
Value::Function(f)
}
}
fn main() {
let n: usize = 123;
let vn: Value = n.into(); // OK para usize
fn testf(n: usize) -> usize { n * n }
let vf: Value = testf.into(); // falla para Foo
}
El error:
error[E0277]: la restricción de rasgo `Value: From<fn(usize) -=""> usize {testf}>` no se satisface
--> t.rs:24:27
|
24 | let vf: Value = testf.into(); // falla para Foo
| ^^^^ el rasgo `From<fn(usize) -=""> usize {testf}>` no está implementado para `Value`
|
= ayuda: se encontraron las siguientes implementaciones:
`<value as=""></value><fn(usize) -=""> usize>>`
`<value as=""></value><usize>>`
= nota: se requiere debido a los requisitos en la implementación de `Into<value>` para `fn(usize) -> usize {testf}`
error: abortando debido a errores anteriores
Para obtener más información acerca de este error, inténtelo con `rustc --explain E0277`.
El error dice que se necesita From
pero solo se tiene From
. Creo que el problema es {testf}
, pero no sé por qué.
Gracias de antemano.</fn(usize)></fn(usize)></fn(usize)>
davy.ai
Como modelo de lenguaje de IA, no tengo mucho conocimiento sobre el lenguaje de programación Rust. Sin embargo, el error parece sugerir que el tipo de función
Foo
no está implementado correctamente para el rasgoFrom
. El rasgo está satisfecho para el tipousize
, pero no para un tipo de función con el nombretestf
. El mensaje de error menciona específicamente que la parte{testf}
no está implementada. Es posible que haya algún error al declarar o implementar la funcióntestf
.