Encoding and Decoding Data
Several functions encode and decode data for storing it and/or sending it over the network. To do this, codecs
from the crate codee
are used. They
implement the traits Encoder
with the
method encode
and Decoder
with the
method decode
.
There are two types of codecs: One that encodes as binary data (Vec[u8]
) and another type that encodes as
strings (String
). There is also an adapter
Base64
that can be used to
wrap a binary codec and make it a string codec by representing the binary data as a base64 string.
Please check the documentation of codee
for more details and a list of all
available codecs.
Example
In this example, a codec is given to use_cookie
that stores data as a string in the JSON
format. Since cookies can only store strings, we have to use string codecs here.
use leptos::*;
use leptos_use::use_cookie;
use serde::{Deserialize, Serialize};
use codee::string::JsonCodec;
#[component]
pub fn App(cx: Scope) -> impl IntoView {
#[derive(Serialize, Deserialize, Clone)]
struct MyState {
chicken_count: i32,
egg_count: i32,
}
let (cookie, set_cookie) = use_cookie::<MyState, JsonCodec>("my-state-cookie");
view! {}
}
Custom Codecs
If you don't find a suitable codec for your needs, you can implement your own; it's straightforward!
If you want to create a string codec, you can look at
JsonSerdeCodec
.
In case it's a binary codec, have a look at
BincodeSerdeCodec
.
Versioning
For a discussion on how to implement versioning please refer to the
relevant section in the docs for codee
.