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?
EDIT: SOLUTION
Here is the solution I came up with:
pub struct Configuration {}
impl Configuration {
fn get std::str::FromStr>() -> Result {
Ok(T::from_str("1234");
}
}
fn main() {
let my_conf_val = Configuration::get();
}
Call me a socialist, but the moment the tech was proven either the US or some UN based org should have eminent domained and brought Starlink.
That way there wouldn't be multiple companies sending tens of thousands of satellites into space. And hypothetically there would be a greater expectation of equal access. Oh and access wouldn't be at the whim of a pretty billionaire.