difftreelog
feat(evaluator) anyhow integration
in: master
3 files changed
Cargo.lockdiffbeforeafterboth10 "yansi-term",10 "yansi-term",11]11]1213[[package]]14name = "anyhow"15version = "1.0.38"16source = "registry+https://github.com/rust-lang/crates.io-index"17checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1"121813[[package]]19[[package]]14name = "atty"20name = "atty"163version = "0.3.4"169version = "0.3.4"164dependencies = [170dependencies = [165 "annotate-snippets",171 "annotate-snippets",172 "anyhow",166 "base64",173 "base64",167 "bincode",174 "bincode",168 "closure",175 "closure",crates/jrsonnet-evaluator/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-evaluator/Cargo.toml
+++ b/crates/jrsonnet-evaluator/Cargo.toml
@@ -17,6 +17,8 @@
faster = []
# Rustc-like trace visualization
explaining-traces = ["annotate-snippets"]
+# Allows library authors to throw custom errors
+anyhow-error = ["anyhow"]
# Unlocks extra features, but works only on unstable
unstable = []
@@ -37,6 +39,10 @@
thiserror = "1.0"
+[dependencies.anyhow]
+version = "1.0"
+optional = true
+
# Serialized stdlib
[dependencies.serde]
version = "1.0"
crates/jrsonnet-evaluator/src/error.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/error.rs
+++ b/crates/jrsonnet-evaluator/src/error.rs
@@ -123,7 +123,19 @@
TypeError(TypeLocError),
#[error("sort error: {0}")]
Sort(#[from] SortError),
+
+ #[cfg(feature = "anyhow-error")]
+ #[error(transparent)]
+ Other(Rc<anyhow::Error>)
+}
+
+#[cfg(feature = "anyhow-error")]
+impl From<anyhow::Error> for LocError {
+ fn from(e: anyhow::Error) -> Self {
+ Self::new(Error::Other(Rc::new(e)))
+ }
}
+
impl From<Error> for LocError {
fn from(e: Error) -> Self {
Self::new(e)