disk

Macro messagepack

Source
macro_rules! messagepack {
    ($data:ty, $dir:expr, $project_directory:expr, $sub_directories:expr, $file_name:expr) => { ... };
}
Available on crate feature messagepack only.
Expand description

Implement the MessagePack trait

File extension is messagepack and is automatically appended.

§Input

These are the inputs you need to provide to implement MessagePack.

VariableDescriptionRelated Trait ConstantTypeExample
$dataIdentifier of the data to implement forstruct or enumMyState
$dirWhich OS directory to useMessagePack::OS_DIRECTORYDirDir::Data
$project_directoryThe name of the top project folderMessagePack::PROJECT_DIRECTORY&str"MyProject"
$sub_directories(Optional) sub-directories before fileMessagePack::SUB_DIRECTORIES&str"some/dirs"
$file_nameThe file name to useMessagePack::FILE_NAME&str"state"

§Example

use serde::{Serialize,Deserialize};
use disk::*;

messagepack!(State, Dir::Data, "MyProject", "some/dirs", "state");
#[derive(Serialize,Deserialize)]
struct State {
    string: String,
    number: u32,
}

This example would be located at ~/.local/share/myproject/some/dirs/state.messagepack.