PiperOrigin-RevId: 678734677pull/18366/head
parent
a51f98ce0c
commit
3b62052186
9 changed files with 145 additions and 6 deletions
@ -0,0 +1,10 @@ |
||||
[package] |
||||
name = "protobuf-codegen-example" |
||||
version = "0.1.0" |
||||
edition = "2021" |
||||
|
||||
[dependencies] |
||||
protobuf = { path = "../protobuf" } |
||||
|
||||
[build-dependencies] |
||||
protobuf-codegen = { path = "../protobuf_codegen" } |
@ -0,0 +1,14 @@ |
||||
use protobuf_codegen::CodeGen; |
||||
use std::env; |
||||
|
||||
fn main() { |
||||
let mut codegen = CodeGen::new(); |
||||
codegen |
||||
.protoc_path(env::var("PROTOC").expect("PROTOC should be set to the path to protoc")) |
||||
.protoc_gen_upb_minitable_path(env::var("PROTOC_GEN_UPB_MINITABLE").expect( |
||||
"PROTOC_GEN_UPB_MINITABLE should be set to the path to protoc-gen-upb_minitable", |
||||
)) |
||||
.inputs(["foo.proto", "bar/bar.proto"]) |
||||
.include("proto"); |
||||
codegen.compile().unwrap(); |
||||
} |
@ -0,0 +1,9 @@ |
||||
edition = "2023"; |
||||
|
||||
package proto_example; |
||||
|
||||
message Bar { |
||||
int32 int = 1; |
||||
repeated int32 numbers = 2; |
||||
string name = 3; |
||||
} |
@ -0,0 +1,12 @@ |
||||
edition = "2023"; |
||||
|
||||
package proto_example; |
||||
|
||||
import "bar/bar.proto"; |
||||
|
||||
message Foo { |
||||
int32 int = 1; |
||||
repeated int32 numbers = 2; |
||||
string name = 3; |
||||
Bar bar = 4; |
||||
} |
@ -0,0 +1,33 @@ |
||||
#[path = "protos/foo.u.pb.rs"] |
||||
mod protos; |
||||
|
||||
use protobuf::proto; |
||||
|
||||
use protos::Foo; |
||||
|
||||
fn main() { |
||||
let foo = proto!(Foo { name: "foo", bar: __ { name: "bar" } }); |
||||
dbg!(foo); |
||||
} |
||||
|
||||
#[cfg(test)] |
||||
mod tests { |
||||
use super::*; |
||||
|
||||
#[test] |
||||
fn set_strings() { |
||||
let foo = proto!(Foo { name: "foo", bar: __ { name: "bar" } }); |
||||
|
||||
assert_eq!(foo.name(), "foo"); |
||||
assert_eq!(foo.bar().name(), "bar"); |
||||
} |
||||
|
||||
#[test] |
||||
fn set_ints() { |
||||
let foo = proto!(Foo { int: 42, bar: __ { numbers: [1, 2, 3] } }); |
||||
|
||||
assert_eq!(foo.int(), 42); |
||||
let nums: Vec<_> = foo.bar().numbers().iter().collect(); |
||||
assert_eq!(nums, vec![1, 2, 3]); |
||||
} |
||||
} |
Loading…
Reference in new issue