From b60d0c99ba3ba63c422681561451390f8d42256f Mon Sep 17 00:00:00 2001 From: saying121 Date: Thu, 13 Feb 2025 16:18:35 +0800 Subject: [PATCH 1/2] feat(rust): impl useful trait --- rust/src/lib.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 08aa0f4..e57b17d 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -1 +1,30 @@ tonic::include_proto!("psh.proto.instance"); + +impl From for Ipv6Addr { + fn from(value: std::net::Ipv6Addr) -> Self { + let ip = value.to_bits().to_be(); + let high = (ip >> 64) as u64; + let low = ip as u64; + Self { + hi_64_bits: high, + lo_64_bits: low, + } + } +} + +#[test] +fn test_ipv6_into_pb_repr() { + use std::net::Ipv6Addr as StdIpv6Addr; + + let var: u128 = 1; + + let raw = StdIpv6Addr::from_bits(var); + + let pb_repr: Ipv6Addr = raw.into(); + + let hi = (pb_repr.hi_64_bits as u128) << 64; + let lo = pb_repr.lo_64_bits as u128; + let ip = StdIpv6Addr::from_bits(u128::from_be(hi | lo)); + + assert_eq!(ip, StdIpv6Addr::from_bits(1)); +} From 7aff49c162fdb318e81c6ab51143b74062e91505 Mon Sep 17 00:00:00 2001 From: saying121 Date: Thu, 13 Feb 2025 16:20:40 +0800 Subject: [PATCH 2/2] ci: add rust test --- .github/workflows/build.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f0e5548..3ab6872 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Build +name: Check proto on: push: @@ -36,3 +36,7 @@ jobs: run: | if [ ! -d target ]; then mkdir target; fi protoc --rust_opt='experimental-codegen=enabled,kernel=cpp' --rust_out=./target psh.proto + + - name: Test + run: | + cargo test --workspace