Что такое кроссплатформенный способ очистки и повторного использования Rust PathBuf? - PullRequest
0 голосов
/ 24 сентября 2018

В попытке сохранить как можно меньше служебных данных при обработке большого количества путей файловой системы, я хочу избежать выделения памяти для каждого пути.Есть ли способ очистить и повторно использовать PathBuf?

Из того, что я мог найти в документах, повторное использование PathBuf возможно при работе с абсолютными путями через PathBuf::push (по крайней мере, в POSIXсистем), но я не нашел способа повторно использовать PathBuf при работе с относительным путем.

Есть ли способ сделать это кросс-платформенным способом, или я вынужден обрабатывать этипути в зависимости от платформы?

1 Ответ

0 голосов
/ 24 сентября 2018

Один из способов - преобразовать PathBuf во внутреннее хранилище, очистить его и преобразовать обратно в PathBuf.Это не требует дополнительного выделения:

use std::path::PathBuf;

fn main() {
    let path = PathBuf::from("../tmp");
    let mut path = path.into_os_string();
    path.clear();
    let mut path = PathBuf::from(path);
    path.push("../etc");
    assert_eq!(path, PathBuf::from("../etc"));
}

( Постоянная ссылка на игровую площадку )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...