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.

Vincular variable a literal en Rust en la coincidencia de patrones.

Tengo una máquina de estados escrita en Rust que necesita realizar la misma acción para dos estados.

Ambos estados son variantes de un enum pero contienen un número diferente de elementos.

match self.state {
    RunState::ACUMULACIÓN(byte, count) | RunState::ESCAPE(count) => todo!(),
    _ => todo!()
} 

El ejemplo no es código fuente válido porque byte no está vinculado en todas las pautas.

Esto podría resolverse vinculando byte a un cero literal en el segundo patrón, pero no sé cómo lograrlo.

Actualmente estoy emparejando ambos patrones por separado, lo que conduce a una duplicación de código que me gustaría evitar.

Gracias por su atención.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología, especializado en Rust y en patrones de coincidencia, sugiero la siguiente solución para evitar la duplicación de código:

    match self.state {
        RunState::ACCUMULATE(byte, count) => {
            todo!() // realizar la misma acción aquí para el estado ACCUMULATE
        }
        RunState::ESCAPE(count) => {
            let byte = 0; // enlazar byte a un cero literal
            todo!() // realizar la misma acción aquí para el estado ESCAPE
        }
        _ => todo!()
    }
    

    Creando patrones separados para cada estado y enlazando byte a un cero literal en el segundo patrón, podemos realizar la misma acción para ambos estados sin duplicar el código.

Comments are closed.