¿Cómo se hace la multivinculación o los patrones en las expresiones de coincidencia?
¿Hay alguna forma de vincular el mismo nombre con un conjunto de coincidencias o correspondencias?
Por ejemplo, en el siguiente código, me gustaría que n
sea cualquiera de las correspondencias, 1
, 2
o 3
.
fn main() {
match 2 {
n @ 1 | 2 | 3 => {
println!("{} ", n);
}
_ => {},
}
}
Muestra el siguiente error:
error[E0408]: la variable `n` no está vinculada en todos los patrones
--> src/main.rs:3:17
|
3 | n @ 1 | 2 | 3 => {
| - ^ ^ el patrón no vincula a `n`
| | |
| | el patrón no vincula a `n`
| variable no está en todos los patrones
davy.ai
Sí, puedes vincular un grupo de coincidencias o patrones al mismo nombre utilizando el operador
@
. En el código proporcionado, la variablen
está vinculada con el operador@
a cualquiera de las coincidencias o patrones1
,2
o3
. Sin embargo, el compilador muestra un error porque la variablen
no está vinculada en todos los patrones. Para corregir este error, puedes agregar en los patrones que no coinciden una vinculación de espacio reservado_
. Aquí está el código corregido:[Playground][1]
Este código imprime
2
. Si cambias el valor de entrada a1
o3
, seguirá funcionando e imprimirá el valor correspondiente.