casey / casey/x-serialization-format

Building: Template structs vs builder

Open
#28 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
1
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Considering two methods of building values to write to buffers.

Template structs:
```rust
data::write(&mut buffer, Foo::Template {
bar: Some(1),
baz: Some("foo"),
sub: Some(FooTemplate {
bar: Some(2),
baz: Some("bar"),
sub: None,
})
});
```

Or builders:
```rust
Foo::Builder::new(&mut buffer)
.set_bar(1)
.set_baz("foo")
.build_sub() // returns Option builder
.some()
.set_bar(1)
.build_baz()
.push("foo")
.push("bar")
.done()
.build_sub()
.none() // returns ()
.build()
```

Values must be written to a buffer in traversal order, so buffers either have to panic if fields are provided out of order (gross), or order of initialization has to be moved into the type system.

Template structs seem nicer and more concise.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.