portal: implement session restoration
This commit is contained in:
parent
4f431eec5c
commit
3e3532574b
13 changed files with 436 additions and 58 deletions
|
|
@ -1,6 +1,7 @@
|
|||
use {
|
||||
arrayvec::ArrayString,
|
||||
rand::{thread_rng, Rng},
|
||||
serde::{de, Deserialize, Deserializer, Serialize, Serializer},
|
||||
std::{
|
||||
fmt::{Debug, Display, Formatter},
|
||||
num::ParseIntError,
|
||||
|
|
@ -46,6 +47,26 @@ impl Debug for Opaque {
|
|||
}
|
||||
}
|
||||
|
||||
impl Serialize for Opaque {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
let s = self.to_string();
|
||||
serializer.serialize_str(&s)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> Deserialize<'de> for Opaque {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let s = <&str>::deserialize(deserializer)?;
|
||||
Opaque::from_str(s).map_err(de::Error::custom)
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for Opaque {
|
||||
type Err = OpaqueError;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue