Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct FooBuilder;
- struct Foo;
- impl FooBuilder {
- fn new() -> Self { FooBuilder }
- fn build(self) -> Foo { Foo }
- fn set_x(&mut self, _: u8) -> &mut Self {
- self
- }
- fn set_y(&mut self, _: u8) -> &mut Self {
- self
- }
- fn set_f(&mut self) -> &mut Self { self }
- fn with<T>(mut self, f: T) -> Self where T: FnOnce(&mut Self) -> &mut Self {
- f(&mut self);
- self
- }
- fn with1<T, Q>(mut self, f: T, v: Q) -> Self where T: FnOnce(&mut Self, Q) -> &mut Self {
- f(&mut self, v);
- self
- }
- }
- fn main() {
- let _ = FooBuilder::new()
- .with(FooBuilder::set_f)
- .with1(FooBuilder::set_x, 5)
- .with(|s| {s.set_y(3); s})
- .build();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement