возвращает указатель, чтобы избежать казусов, когда происходит чтение мусора. Собственно пишу дллку, есть программа на делфи, которая принимает данные типа PWideChar(на винде это null terminated строка в utf16), возвращаю данные так:
let wide: Vec<u16> = OsStr::new(&s).encode_wide().chain(once(0)).collect();
return wide.as_ptr();
есть ли смысл вызывать mem::forget здесь, если и без него тоже все работает?
Так тут не mem::forget, а какой-нибудь leak или into_raw_parts у вектора дернуть лучше
Обязательно, иначе вектор дропнется. Лучше будет использовать ManuallyDrop.
Обсуждают сегодня