Change summary
crates/util/src/paths.rs | 6 ++++++
crates/workspace/src/persistence/model.rs | 4 ++--
2 files changed, 8 insertions(+), 2 deletions(-)
Detailed changes
@@ -146,6 +146,12 @@ impl From<SanitizedPath> for Arc<Path> {
}
}
+impl From<SanitizedPath> for PathBuf {
+ fn from(sanitized_path: SanitizedPath) -> Self {
+ sanitized_path.0.as_ref().into()
+ }
+}
+
impl<T: AsRef<Path>> From<T> for SanitizedPath {
#[cfg(not(target_os = "windows"))]
fn from(path: T) -> Self {
@@ -17,7 +17,7 @@ use std::{
path::{Path, PathBuf},
sync::Arc,
};
-use util::ResultExt;
+use util::{paths::SanitizedPath, ResultExt};
use uuid::Uuid;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
@@ -98,7 +98,7 @@ impl LocalPaths {
pub fn new<P: AsRef<Path>>(paths: impl IntoIterator<Item = P>) -> Self {
let mut paths: Vec<PathBuf> = paths
.into_iter()
- .map(|p| p.as_ref().to_path_buf())
+ .map(|p| SanitizedPath::from(p).into())
.collect();
// Ensure all future `zed workspace1 workspace2` and `zed workspace2 workspace1` calls are using the same workspace.
// The actual workspace order is stored in the `LocalPathsOrder` struct.