É possível algo assim onde ambos let Some(...)
estão na mesma linha e o segundo let
depende do primeiro let
?
let Some(h) = socket.req_parts().headers.get("room"), let Some(room) = h.to_str() else {
return;
};
Esta solução:
Como escrever múltiplas condições na instrução if let?
propõe o uso de tuplas, mas não tenho certeza de como fazer isso quando o segundo let
depende do primeiro.
Você está certo, não pode fazer dois dependentes separados
let Some()
ao mesmo tempo, quando a dependência é por meio de uma chamada de função. Nos comentários do seu link, mostre exemplos de correspondências "dependentes" com@
identificadores:Isso funciona porque é, em certo sentido, equivalente a
com a adição de vincular o
Some(7)
ac
. A dependência é expressa no lado esquerdo, no padrão. Você não pode colocar sua chamada de função lá.Como você deseja entrar na
else
cláusula if ouh
ouroom
seriaNone
, você pode usarOption.and_then
, que recebe uma função que retorna anOption
como argumento e a aplica apenas aSome
. Isso é mais limpo se você só precisarroom
:Mas você também pode usar tuplas para obter ambos
room
eh
: