#grpc #cassandra #api-bindings #stargate

stargate-grpc-derive

stargate-grpc结构映射器

3个不稳定版本

0.2.0 2021年10月27日
0.1.1 2021年10月15日
0.1.0 2021年10月14日

#55 in #cassandra


用于stargate-grpc

Apache-2.0

17KB
224 代码行

stargate-grpc的派生宏

此crate提供以下派生宏

  • IntoValue – 允许将Rust结构转换为用户定义的CQL类型的Value;当您想在查询中绑定单个UDT字段时使用此宏
  • TryFromValue – 允许将表示用户定义的CQL类型的Value转换为Rust结构;当您想从行中读取单个UDT列值时使用此宏
  • IntoValues – 允许一次将Rust结构转换为查询的多个参数;如果您想在单个bind调用中绑定单个Rust结构中的多个字段,则使用此宏
    使用此宏
  • TryFromRow – 允许将结果集中接收到的Row转换为Rust值

示例

use stargate_grpc::Value;
use stargate_grpc_derive::{IntoValue, TryFromValue};

#[derive(IntoValue, TryFromValue)]
struct User {
    id: i64,
    login: String
}

let user = User { id: 1, login: "user".to_string() };

// Convert User to Value:
let value = Value::from(user);
assert_eq!(value, Value::udt(vec![("id", Value::bigint(1)), ("login", Value::string("user"))]));

// Now convert it back to User:
let user: User = value.try_into().unwrap();
assert_eq!(user.id, 1);
assert_eq!(user.login, "user".to_string());

请参阅crate文档以获取更多示例。

依赖项

~1.5–3MB
~57K SLoC