fix support for language switch

update document
This commit is contained in:
2022-05-15 12:26:58 +08:00
parent 50122f6450
commit 76f6691f8a
5 changed files with 127 additions and 17 deletions

View File

@@ -1,4 +1,7 @@
use json::JsonValue;
use std::ops::Deref;
use std::sync::RwLockReadGuard;
use std::sync::RwLockWriteGuard;
pub trait ToJson {
fn to_json(&self) -> Option<JsonValue>;
@@ -28,6 +31,27 @@ impl<T: ToJson> ToJson for &T {
}
}
impl<T: ToJson> ToJson for Option<T> {
fn to_json(&self) -> Option<JsonValue> {
match self {
Some(d) => { d.to_json() }
None => { None }
}
}
}
impl<T: ToJson> ToJson for RwLockReadGuard<'_, T> {
fn to_json(&self) -> Option<JsonValue> {
self.deref().to_json()
}
}
impl<T: ToJson> ToJson for RwLockWriteGuard<'_, T> {
fn to_json(&self) -> Option<JsonValue> {
self.deref().to_json()
}
}
pub trait FromJson where Self: Sized {
type Err;
fn from_json<T: ToJson>(v: T) -> Result<Self, Self::Err>;