задачи: я пишу sdk и мне нужно каким-то образом сохранить объекты (в частности строки, вектора и структуры) где-то, чтобы они остались в памяти после завершения вызова этого васм модуля и потом имелась возможность отдельно удалить их. Я сделал Vec<Box<dyn Drop>>, но это накладывает ограничения на пользовательские структуры (которые нужно оборачивать моим макросом), что из них нельзя потом замувать поля. Есть ли какие-то другие варианты с дженерик трейтом? Свой трейт не хочется вводить, потому что я не смогу просто найти все варианты T в Vec<T>, использованных пользователем.
я пишу sdk для васм, выглядит оно примерно вот так https://github.com/fluencelabs/fce/blob/master/examples/greeting/src/main.rs#L22
мувить то что является Drop? помоему тут и так и так, нельзя. раст не позволит мувить поле из структуры для которой реализован Drop. это возможно если MannDrop + unsafe.. и это классический вариант на статических типах, а вы к томуже еще хотите Box+dyn+move..
да, поэтому вариант dyn Drop не очень подходит
Обсуждают сегодня