Background: I have a large serde_json value that I want to be read-only (the authoritative source is an encrypted SQLite DB and should only be updated when that gets updated)
The issue, I would like a single get function that returns a generic type
use serde_json; pub struct Configuration { config: serde_json::Value, } impl Configuration { async fn get(&self, key: &str) -> Result { let tmp_value: = &self.config["test"]; // This would be repeated for String, bool, etc if tmp_value.is_i64() { match tmp_value.as_i64 { Some(x) => Ok(x), Err(e) => Err(()), } } else { Err(()) } } }
However I get: “mismatched types expected type parameter T found type i64”
Is it even possible to return multiple types from a single function?
I_like_cats@lemmy.one 1 year ago
No. You can only return a single type from the function. You could return the serde_json::Value though so that the code calling this function can get the value it needs itself
wulf@lemmy.world 1 year ago
Afraid this might have been the case, if Ogeon’s suggestion doesn’t work out, I’ll probably end up with multiple getters, one per type. There aren’t that many anyway