Forçando a ordem na qual os campos struct são descartados

Estou implementando um objeto que possui vários recursos criados a partir de bibliotecas C através do FFI. Para limpar o que já foi feito se o construtor entrar em pânico, estou agrupando cada recurso em sua própria estrutura e implementandoDrop para eles. No entanto, quando se trata de descartar o próprio objeto, não posso garantir que os recursos sejam descartados em uma ordem segura porque o Rust não define a ordem em que os campos de uma estrutura são descartados.

Normalmente, você resolveria isso fazendo com que o objeto não possuísse os recursos, mas os emprestaria (para que os recursos pudessem se emprestar). De fato, isso leva o problema ao código de chamada, onde a ordem de recebimento é bem definida e aplicada com a semântica do empréstimo. Mas isso é inapropriado para o meu caso de uso e, em geral, é um pouco difícil.

O que é irritante é que isso seria incrivelmente fácil sedrop tomouself ao invés de&mut self por algum motivo. Então eu poderia simplesmente ligarstd::mem::drop na minha ordem desejada.

Há alguma maneira de fazer isso? Se não, existe alguma maneira de limpar no caso de pânico no construtor sem capturar e revitalizar manualmente?

questionAnswers(1)

yourAnswerToTheQuestion