Díky za článek, tohle mě dost zajímá a tak jsem se rád taky poučil ;-) Mám v této souvislosti dotaz. Řeší FFI nějak situaci, kdy chci manipulovat se strukturou, která obsahuje reference a tudíž má lifetime anotace? Samozřejmě mám na mysli problémy spojené s Pythoním garbage collectorem, ale taky to, jestli v případě, že předám ukazatel z Rustu do Pythonu a Python, resp. GC, se pak rozhodne objekt zabít, tak je možné nějak zaručit, aby se v tom případě v Rustu vyvolal destruktor (Drop)?
Pomocí FFI jde předávat jen holé struktury. Garbage kolektor se aktivuje jen při manipulaci s pythonovkými referencemi, to přes FFI nejde. Rust neznám, ale hádám, že vracet objekty s omezeným lifetime z extern funkcí vám nedovolí překladač.
Pro vytvoření objektu s funkčím destruktorem byste musel v Rustu vytvořit pythonovký objekt (nejlépe context manager). To jde pomocí cpython rozšíření https://github.com/dgrunwald/rust-cpython.