En Rust no_std, ¿cómo puedo devolver uno de varios closures que implementan un trait utilizando Rust estable?
En Rust no_std, puedes devolver uno de varios closures que implementan un trait utilizando Rust estable de la siguiente manera:
1. Primero, define un trait que describa las funcionalidades que los closures deben implementar. Por ejemplo:
“`rust
trait MyTrait {
fn do_something(&self);
}
“`
2. Luego, implementa el trait para cada closure que desees utilizar:
“`rust
struct Closure1;
impl MyTrait for Closure1 {
fn do_something(&self) {
// Implementación del primer closure
}
}
struct Closure2;
impl MyTrait for Closure2 {
fn do_something(&self) {
// Implementación del segundo closure
}
}
“`
3. Ahora, puedes utilizar una función para devolver la instancia del closure deseado utilizando una condición o algún otro método, como se muestra a continuación:
“`rust
fn get_closure() -> Box {
// Aquí puedes implementar la lógica para elegir qué closure devolver, por ejemplo:
if some_condition {
Box::new(Closure1)
} else {
Box::new(Closure2)
}
}
“`
4. En tu código principal, puedes llamar a la función `get_closure()` para obtener el closure deseado y luego usarlo:
“`rust
fn main() {
let my_closure = get_closure();
my_closure.do_something();
}
“`
Recuerda que el ejemplo anterior es solo una ilustración, y deberás adaptarlo según tus necesidades específicas. Espero que esto te sea de ayuda.
Estoy trabajando con Rust en un Teensy 4.0 ( –target thumbv7em-none-eabihf ), lo cual significa que tengo que usar #![no_std] . Tengo algunas situaciones en las que quiero hacer cosas diferentes dependiendo de la posición de un interruptor rotativo. El siguiente es un ejemplo ficticio que ilustra un problema en . . . Read more