From b29e161a37e0f9642dca8b5e3b4836c816615647 Mon Sep 17 00:00:00 2001 From: messense Date: Sun, 4 Jul 2021 12:45:02 +0800 Subject: [PATCH] Don't convert PathBuf to str before calling Python function --- src/lib.rs | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index b33e86a..2ae4724 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -30,21 +30,20 @@ impl ImportResolver for PythonImportResolver { ) -> jrsonnet_evaluator::error::Result> { use jrsonnet_evaluator::error::Error::*; - // FIXME: use PathBuf directly on PyO3 0.14 - let from_str = from.to_str().unwrap(); - let path_str = path.to_str().unwrap(); - let (resolved, content) = - Python::with_gil( - |py| match self.callback.call(py, (from_str, path_str), None) { - Ok(obj) => obj.extract::<(String, Option)>(py).map_err(|err| { - ImportCallbackError(format!("import_callback error: {}", err)) - }), - Err(err) => Err(ImportCallbackError(format!( - "import_callback error: {}", - err - ))), - }, - )?; + let (resolved, content) = Python::with_gil(|py| { + match self + .callback + .call(py, (from.as_path(), path.as_path()), None) + { + Ok(obj) => obj + .extract::<(String, Option)>(py) + .map_err(|err| ImportCallbackError(format!("import_callback error: {}", err))), + Err(err) => Err(ImportCallbackError(format!( + "import_callback error: {}", + err + ))), + } + })?; if let Some(content) = content { let resolved = PathBuf::from(resolved); let mut out = self.out.borrow_mut();