#dump #serialization #serde #macro-derive

serde2file_macro_derive

serde2file 的 derive 宏

10 个版本 (5 个破坏性更新)

0.6.1 2023年4月24日
0.6.0 2023年2月14日
0.5.0 2023年2月12日
0.4.0 2023年2月12日
0.1.1 2023年2月10日

#90 in #dump

Download history 25/week @ 2024-03-14 5/week @ 2024-03-28 1/week @ 2024-04-04

每月 57 次下载
serde2file 中使用

MIT/Apache

15KB
123

serde2file 的 derive 宏

用法 / 用法

#[derive(Serialize, Deserialize, Serde2File)]
#[serde2file(
    encrypt = "TestEncryptTool::encrypt",
    decrypt = "TestEncryptTool::decrypt",
    crypt_arg_type = "&'static str",
    dump_file_name = "test_data.json"
)]

属性 / 属性

  • #[serde2file(arg1=value1,...)]

    • encrypt 数据加密方法
    • decrypt 数据解密方法
    • 以上加密和解密方法必须同时设置,否则不进行加解密。
    • 示例: #[serde2file(encrypt="TestEncryptTool::encrypt",decrypt="TestEncryptTool::decrypt")]
    • dump_file_name
      • 自定义转储文件名
      • 如果没有设置,则默认转储文件名为当前 Struct 的全名。
      • 例如,serde2file::test::TestData 对应的默认转储文件名为 serde2file-test-TestData.json
      • 示例: #[serde2file(dump_file_name = "test_data.json")]
    • crypt_arg_type
      • 定义额外的加密和解密参数类型
      • 用于传递自定义参数到加密或解密函数
      • 示例: #[serde2file(crypt_arg_type = "&'static str")]
    • 动态确定文件名和保存路径
      • file_name_getter : 文件名个性化获取函数
      • file_name_getter_arg_type : 文件名获取函数参数类型,用于根据参数动态获取文件名
  • #[serde2file(参数1=值1,...)]

    • encrypt 数据加密方法
    • decrypt 数据解密方法
    • 以上加密和解密方法必须同时设置,否则不进行加解密。
    • 例如:#[file_encrypt(encrypt="TestEncryptTool::encrypt",decrypt="TestEncryptTool::decrypt")]
    • dump_file_name
      • 设置自定义的转储文件名称
      • 自定义转储文件名称
      • 默认为当前 Struct 的完整名称,
      • 如 serde2file::test::TestData 对应的默认转储文件名称为 serde2file-test-TestData.json
      • 例如:#[serde2file(dump_file_name = "test_data.json")]
    • crypt_arg_type
      • 定义额外的加解密参数类型
      • 用于向加密或解密函数传递自定义参数使用
      • 例如:#[serde2file(crypt_arg_type = "&'static str")]
    • 动态确定文件名称和保存路径
      • file_name_getter 文件名称获取函数
      • file_name_getter_arg_type 文件名称获取函数传参类型,用于根据参数动态获取文件名称
      • 例如:#[serde2file(file_name_getter = "some_get_file_name_function",file_name_getter_arg_type = "String")]

示例/例子

use serde2file_macro_derive::Serde2File;

#[derive(Debug, Serialize, Deserialize, Default, PartialEq, Eq, Serde2File)]
#[serde2file(
    encrypt = "TestEncryptTool::encrypt",
    decrypt = "TestEncryptTool::decrypt",
    crypt_arg_type = "&'static str",
    file_name_getter_arg_type = "(&str,&str)",
    file_name_getter = "(&str,&str)",
    dump_file_name = "test_data.json",   
    file_name_getter = "some_get_file_name_function",
    file_name_getter_arg_type = "String"
)]
struct TestData {
    id: String,
    name: String,
}

依赖项

~1.5MB
~35K SLoC