From 2f1cea72724cf87f9b9c8613cb77e105125b7adb Mon Sep 17 00:00:00 2001 From: marmeladema Date: Wed, 11 Jan 2023 21:46:33 +0100 Subject: [PATCH 1/7] Remove `RefCell` from builder arena --- capnp-rpc/src/rpc_capnp.rs | 296 ++++++++-------- capnp-rpc/src/rpc_twoparty_capnp.rs | 50 +-- capnp/src/any_pointer.rs | 2 +- capnp/src/any_pointer_list.rs | 2 +- capnp/src/capability_list.rs | 4 +- capnp/src/data.rs | 2 +- capnp/src/data_list.rs | 2 +- capnp/src/enum_list.rs | 9 +- capnp/src/list_list.rs | 6 +- capnp/src/message.rs | 2 +- capnp/src/primitive_list.rs | 17 +- capnp/src/private/arena.rs | 55 ++- capnp/src/private/layout.rs | 159 ++++++--- capnp/src/struct_list.rs | 8 +- capnp/src/text.rs | 2 +- capnp/src/text_list.rs | 2 +- capnpc/src/codegen.rs | 58 ++-- capnpc/src/schema_capnp.rs | 516 ++++++++++++++-------------- capnpc/test/test.rs | 4 +- 19 files changed, 644 insertions(+), 552 deletions(-) diff --git a/capnp-rpc/src/rpc_capnp.rs b/capnp-rpc/src/rpc_capnp.rs index 018c10ebf..380af86f9 100644 --- a/capnp-rpc/src/rpc_capnp.rs +++ b/capnp-rpc/src/rpc_capnp.rs @@ -227,7 +227,7 @@ pub mod message { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -235,19 +235,19 @@ pub mod message { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_unimplemented(&mut self, value: crate::rpc_capnp::message::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 0); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_unimplemented(self, ) -> crate::rpc_capnp::message::Builder<'a> { @@ -257,12 +257,12 @@ pub mod message { #[inline] pub fn has_unimplemented(&self) -> bool { if self.builder.get_data_field::(0) != 0 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_abort(&mut self, value: crate::rpc_capnp::exception::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_abort(self, ) -> crate::rpc_capnp::exception::Builder<'a> { @@ -272,12 +272,12 @@ pub mod message { #[inline] pub fn has_abort(&self) -> bool { if self.builder.get_data_field::(0) != 1 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_call(&mut self, value: crate::rpc_capnp::call::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 2); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_call(self, ) -> crate::rpc_capnp::call::Builder<'a> { @@ -287,12 +287,12 @@ pub mod message { #[inline] pub fn has_call(&self) -> bool { if self.builder.get_data_field::(0) != 2 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_return(&mut self, value: crate::rpc_capnp::return_::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 3); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_return(self, ) -> crate::rpc_capnp::return_::Builder<'a> { @@ -302,12 +302,12 @@ pub mod message { #[inline] pub fn has_return(&self) -> bool { if self.builder.get_data_field::(0) != 3 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_finish(&mut self, value: crate::rpc_capnp::finish::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 4); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_finish(self, ) -> crate::rpc_capnp::finish::Builder<'a> { @@ -317,12 +317,12 @@ pub mod message { #[inline] pub fn has_finish(&self) -> bool { if self.builder.get_data_field::(0) != 4 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_resolve(&mut self, value: crate::rpc_capnp::resolve::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 5); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_resolve(self, ) -> crate::rpc_capnp::resolve::Builder<'a> { @@ -332,12 +332,12 @@ pub mod message { #[inline] pub fn has_resolve(&self) -> bool { if self.builder.get_data_field::(0) != 5 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_release(&mut self, value: crate::rpc_capnp::release::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 6); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_release(self, ) -> crate::rpc_capnp::release::Builder<'a> { @@ -347,7 +347,7 @@ pub mod message { #[inline] pub fn has_release(&self) -> bool { if self.builder.get_data_field::(0) != 6 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn init_obsolete_save(self, ) -> ::capnp::any_pointer::Builder<'a> { @@ -359,12 +359,12 @@ pub mod message { #[inline] pub fn has_obsolete_save(&self) -> bool { if self.builder.get_data_field::(0) != 7 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_bootstrap(&mut self, value: crate::rpc_capnp::bootstrap::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 8); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_bootstrap(self, ) -> crate::rpc_capnp::bootstrap::Builder<'a> { @@ -374,7 +374,7 @@ pub mod message { #[inline] pub fn has_bootstrap(&self) -> bool { if self.builder.get_data_field::(0) != 8 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn init_obsolete_delete(self, ) -> ::capnp::any_pointer::Builder<'a> { @@ -386,12 +386,12 @@ pub mod message { #[inline] pub fn has_obsolete_delete(&self) -> bool { if self.builder.get_data_field::(0) != 9 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_provide(&mut self, value: crate::rpc_capnp::provide::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 10); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_provide(self, ) -> crate::rpc_capnp::provide::Builder<'a> { @@ -401,12 +401,12 @@ pub mod message { #[inline] pub fn has_provide(&self) -> bool { if self.builder.get_data_field::(0) != 10 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_accept(&mut self, value: crate::rpc_capnp::accept::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 11); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_accept(self, ) -> crate::rpc_capnp::accept::Builder<'a> { @@ -416,12 +416,12 @@ pub mod message { #[inline] pub fn has_accept(&self) -> bool { if self.builder.get_data_field::(0) != 11 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_join(&mut self, value: crate::rpc_capnp::join::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 12); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_join(self, ) -> crate::rpc_capnp::join::Builder<'a> { @@ -431,12 +431,12 @@ pub mod message { #[inline] pub fn has_join(&self) -> bool { if self.builder.get_data_field::(0) != 12 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_disembargo(&mut self, value: crate::rpc_capnp::disembargo::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 13); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_disembargo(self, ) -> crate::rpc_capnp::disembargo::Builder<'a> { @@ -446,7 +446,7 @@ pub mod message { #[inline] pub fn has_disembargo(&self) -> bool { if self.builder.get_data_field::(0) != 13 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -645,7 +645,7 @@ pub mod bootstrap { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -653,14 +653,14 @@ pub mod bootstrap { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_question_id(self) -> u32 { @@ -682,7 +682,7 @@ pub mod bootstrap { } #[inline] pub fn has_deprecated_object_id(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } @@ -814,7 +814,7 @@ pub mod call { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -822,14 +822,14 @@ pub mod call { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_question_id(self) -> u32 { @@ -845,7 +845,7 @@ pub mod call { } #[inline] pub fn set_target(&mut self, value: crate::rpc_capnp::message_target::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_target(self, ) -> crate::rpc_capnp::message_target::Builder<'a> { @@ -853,7 +853,7 @@ pub mod call { } #[inline] pub fn has_target(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_interface_id(self) -> u64 { @@ -877,7 +877,7 @@ pub mod call { } #[inline] pub fn set_params(&mut self, value: crate::rpc_capnp::payload::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) } #[inline] pub fn init_params(self, ) -> crate::rpc_capnp::payload::Builder<'a> { @@ -885,16 +885,16 @@ pub mod call { } #[inline] pub fn has_params(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_send_results_to(self) -> crate::rpc_capnp::call::send_results_to::Builder<'a> { ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] - pub fn init_send_results_to(self, ) -> crate::rpc_capnp::call::send_results_to::Builder<'a> { + pub fn init_send_results_to(mut self, ) -> crate::rpc_capnp::call::send_results_to::Builder<'a> { self.builder.set_data_field::(3, 0); - self.builder.get_pointer_field(2).clear(); + self.builder.get_pointer_field_mut(2).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] @@ -1032,7 +1032,7 @@ pub mod call { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1040,14 +1040,14 @@ pub mod call { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_caller(&mut self, _value: ()) { @@ -1067,7 +1067,7 @@ pub mod call { #[inline] pub fn has_third_party(&self) -> bool { if self.builder.get_data_field::(3) != 2 { return false; } - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -1250,7 +1250,7 @@ pub mod return_ { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1258,14 +1258,14 @@ pub mod return_ { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_answer_id(self) -> u32 { @@ -1286,7 +1286,7 @@ pub mod return_ { #[inline] pub fn set_results(&mut self, value: crate::rpc_capnp::payload::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(3, 0); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_results(self, ) -> crate::rpc_capnp::payload::Builder<'a> { @@ -1296,12 +1296,12 @@ pub mod return_ { #[inline] pub fn has_results(&self) -> bool { if self.builder.get_data_field::(3) != 0 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_exception(&mut self, value: crate::rpc_capnp::exception::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(3, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_exception(self, ) -> crate::rpc_capnp::exception::Builder<'a> { @@ -1311,7 +1311,7 @@ pub mod return_ { #[inline] pub fn has_exception(&self) -> bool { if self.builder.get_data_field::(3) != 1 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_canceled(&mut self, _value: ()) { @@ -1336,7 +1336,7 @@ pub mod return_ { #[inline] pub fn has_accept_from_third_party(&self) -> bool { if self.builder.get_data_field::(3) != 5 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -1483,7 +1483,7 @@ pub mod finish { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1491,14 +1491,14 @@ pub mod finish { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_question_id(self) -> u32 { @@ -1639,7 +1639,7 @@ pub mod resolve { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1647,14 +1647,14 @@ pub mod resolve { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_promise_id(self) -> u32 { @@ -1667,7 +1667,7 @@ pub mod resolve { #[inline] pub fn set_cap(&mut self, value: crate::rpc_capnp::cap_descriptor::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(2, 0); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_cap(self, ) -> crate::rpc_capnp::cap_descriptor::Builder<'a> { @@ -1677,12 +1677,12 @@ pub mod resolve { #[inline] pub fn has_cap(&self) -> bool { if self.builder.get_data_field::(2) != 0 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_exception(&mut self, value: crate::rpc_capnp::exception::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(2, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_exception(self, ) -> crate::rpc_capnp::exception::Builder<'a> { @@ -1692,7 +1692,7 @@ pub mod resolve { #[inline] pub fn has_exception(&self) -> bool { if self.builder.get_data_field::(2) != 1 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -1815,7 +1815,7 @@ pub mod release { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1823,14 +1823,14 @@ pub mod release { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_id(self) -> u32 { @@ -1951,7 +1951,7 @@ pub mod disembargo { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1959,14 +1959,14 @@ pub mod disembargo { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_target(self) -> ::capnp::Result> { @@ -1974,7 +1974,7 @@ pub mod disembargo { } #[inline] pub fn set_target(&mut self, value: crate::rpc_capnp::message_target::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_target(self, ) -> crate::rpc_capnp::message_target::Builder<'a> { @@ -1982,7 +1982,7 @@ pub mod disembargo { } #[inline] pub fn has_target(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_context(self) -> crate::rpc_capnp::disembargo::context::Builder<'a> { @@ -2118,7 +2118,7 @@ pub mod disembargo { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2126,14 +2126,14 @@ pub mod disembargo { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_sender_loopback(&mut self, value: u32) { @@ -2300,7 +2300,7 @@ pub mod provide { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2308,14 +2308,14 @@ pub mod provide { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_question_id(self) -> u32 { @@ -2331,7 +2331,7 @@ pub mod provide { } #[inline] pub fn set_target(&mut self, value: crate::rpc_capnp::message_target::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_target(self, ) -> crate::rpc_capnp::message_target::Builder<'a> { @@ -2339,7 +2339,7 @@ pub mod provide { } #[inline] pub fn has_target(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_recipient(self) -> ::capnp::any_pointer::Builder<'a> { @@ -2353,7 +2353,7 @@ pub mod provide { } #[inline] pub fn has_recipient(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } @@ -2468,7 +2468,7 @@ pub mod accept { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2476,14 +2476,14 @@ pub mod accept { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_question_id(self) -> u32 { @@ -2505,7 +2505,7 @@ pub mod accept { } #[inline] pub fn has_provision(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_embargo(self) -> bool { @@ -2629,7 +2629,7 @@ pub mod join { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2637,14 +2637,14 @@ pub mod join { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_question_id(self) -> u32 { @@ -2660,7 +2660,7 @@ pub mod join { } #[inline] pub fn set_target(&mut self, value: crate::rpc_capnp::message_target::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_target(self, ) -> crate::rpc_capnp::message_target::Builder<'a> { @@ -2668,7 +2668,7 @@ pub mod join { } #[inline] pub fn has_target(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_key_part(self) -> ::capnp::any_pointer::Builder<'a> { @@ -2682,7 +2682,7 @@ pub mod join { } #[inline] pub fn has_key_part(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } @@ -2804,7 +2804,7 @@ pub mod message_target { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2812,14 +2812,14 @@ pub mod message_target { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_imported_cap(&mut self, value: u32) { @@ -2829,7 +2829,7 @@ pub mod message_target { #[inline] pub fn set_promised_answer(&mut self, value: crate::rpc_capnp::promised_answer::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(2, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_promised_answer(self, ) -> crate::rpc_capnp::promised_answer::Builder<'a> { @@ -2839,7 +2839,7 @@ pub mod message_target { #[inline] pub fn has_promised_answer(&self) -> bool { if self.builder.get_data_field::(2) != 1 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -2970,7 +2970,7 @@ pub mod payload { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2978,14 +2978,14 @@ pub mod payload { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_content(self) -> ::capnp::any_pointer::Builder<'a> { @@ -2999,7 +2999,7 @@ pub mod payload { } #[inline] pub fn has_content(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_cap_table(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::rpc_capnp::cap_descriptor::Owned>> { @@ -3007,7 +3007,7 @@ pub mod payload { } #[inline] pub fn set_cap_table(&mut self, value: ::capnp::struct_list::Reader<'a,crate::rpc_capnp::cap_descriptor::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) } #[inline] pub fn init_cap_table(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::rpc_capnp::cap_descriptor::Owned> { @@ -3015,7 +3015,7 @@ pub mod payload { } #[inline] pub fn has_cap_table(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } @@ -3163,7 +3163,7 @@ pub mod cap_descriptor { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -3171,14 +3171,14 @@ pub mod cap_descriptor { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_none(&mut self, _value: ()) { @@ -3202,7 +3202,7 @@ pub mod cap_descriptor { #[inline] pub fn set_receiver_answer(&mut self, value: crate::rpc_capnp::promised_answer::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 4); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_receiver_answer(self, ) -> crate::rpc_capnp::promised_answer::Builder<'a> { @@ -3212,12 +3212,12 @@ pub mod cap_descriptor { #[inline] pub fn has_receiver_answer(&self) -> bool { if self.builder.get_data_field::(0) != 4 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_third_party_hosted(&mut self, value: crate::rpc_capnp::third_party_cap_descriptor::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 5); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_third_party_hosted(self, ) -> crate::rpc_capnp::third_party_cap_descriptor::Builder<'a> { @@ -3227,7 +3227,7 @@ pub mod cap_descriptor { #[inline] pub fn has_third_party_hosted(&self) -> bool { if self.builder.get_data_field::(0) != 5 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_attached_fd(self) -> u8 { @@ -3386,7 +3386,7 @@ pub mod promised_answer { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -3394,14 +3394,14 @@ pub mod promised_answer { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_question_id(self) -> u32 { @@ -3417,7 +3417,7 @@ pub mod promised_answer { } #[inline] pub fn set_transform(&mut self, value: ::capnp::struct_list::Reader<'a,crate::rpc_capnp::promised_answer::op::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_transform(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::rpc_capnp::promised_answer::op::Owned> { @@ -3425,7 +3425,7 @@ pub mod promised_answer { } #[inline] pub fn has_transform(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } @@ -3535,7 +3535,7 @@ pub mod promised_answer { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -3543,14 +3543,14 @@ pub mod promised_answer { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_noop(&mut self, _value: ()) { @@ -3687,7 +3687,7 @@ pub mod third_party_cap_descriptor { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -3695,14 +3695,14 @@ pub mod third_party_cap_descriptor { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_id(self) -> ::capnp::any_pointer::Builder<'a> { @@ -3716,7 +3716,7 @@ pub mod third_party_cap_descriptor { } #[inline] pub fn has_id(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_vine_id(self) -> u32 { @@ -3848,7 +3848,7 @@ pub mod exception { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -3856,14 +3856,14 @@ pub mod exception { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_reason(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { @@ -3871,7 +3871,7 @@ pub mod exception { } #[inline] pub fn set_reason(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_reason(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -3879,7 +3879,7 @@ pub mod exception { } #[inline] pub fn has_reason(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_obsolete_is_callers_fault(self) -> bool { @@ -3911,7 +3911,7 @@ pub mod exception { } #[inline] pub fn set_trace(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(1).set_text(value); + self.builder.get_pointer_field_mut(1).set_text(value); } #[inline] pub fn init_trace(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -3919,7 +3919,7 @@ pub mod exception { } #[inline] pub fn has_trace(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } diff --git a/capnp-rpc/src/rpc_twoparty_capnp.rs b/capnp-rpc/src/rpc_twoparty_capnp.rs index 601b1c9f1..05d6826cb 100644 --- a/capnp-rpc/src/rpc_twoparty_capnp.rs +++ b/capnp-rpc/src/rpc_twoparty_capnp.rs @@ -107,7 +107,7 @@ pub mod vat_id { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -115,14 +115,14 @@ pub mod vat_id { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_side(self) -> ::core::result::Result { @@ -227,7 +227,7 @@ pub mod provision_id { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -235,14 +235,14 @@ pub mod provision_id { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_join_id(self) -> u32 { @@ -343,7 +343,7 @@ pub mod recipient_id { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -351,14 +351,14 @@ pub mod recipient_id { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } } @@ -451,7 +451,7 @@ pub mod third_party_cap_id { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -459,14 +459,14 @@ pub mod third_party_cap_id { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } } @@ -571,7 +571,7 @@ pub mod join_key_part { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -579,14 +579,14 @@ pub mod join_key_part { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_join_id(self) -> u32 { @@ -719,7 +719,7 @@ pub mod join_result { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -727,14 +727,14 @@ pub mod join_result { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_join_id(self) -> u32 { @@ -764,7 +764,7 @@ pub mod join_result { } #[inline] pub fn has_cap(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } diff --git a/capnp/src/any_pointer.rs b/capnp/src/any_pointer.rs index 2b2bbc2db..53c26b7f5 100644 --- a/capnp/src/any_pointer.rs +++ b/capnp/src/any_pointer.rs @@ -139,7 +139,7 @@ impl<'a> Builder<'a> { /// Gets the total size of the target and all of its children. Does not count far pointer overhead. pub fn target_size(&self) -> Result { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } pub fn get_as>(self) -> Result { diff --git a/capnp/src/any_pointer_list.rs b/capnp/src/any_pointer_list.rs index 3df257f7e..f71923a5a 100644 --- a/capnp/src/any_pointer_list.rs +++ b/capnp/src/any_pointer_list.rs @@ -165,7 +165,7 @@ impl<'a> FromPointerBuilder<'a> for Builder<'a> { impl<'a> crate::traits::SetPointerBuilder for Reader<'a> { fn set_pointer_builder<'b>( - pointer: PointerBuilder<'b>, + mut pointer: PointerBuilder<'b>, value: Reader<'a>, canonicalize: bool, ) -> Result<()> { diff --git a/capnp/src/capability_list.rs b/capnp/src/capability_list.rs index 5d5f631c3..398f81db3 100644 --- a/capnp/src/capability_list.rs +++ b/capnp/src/capability_list.rs @@ -190,7 +190,7 @@ where { pub fn reborrow(&mut self) -> Builder<'_, T> { Builder { - builder: self.builder, + builder: self.builder.reborrow(), marker: PhantomData, } } @@ -251,7 +251,7 @@ where T: FromClientHook, { fn set_pointer_builder<'b>( - pointer: crate::private::layout::PointerBuilder<'b>, + mut pointer: crate::private::layout::PointerBuilder<'b>, value: Reader<'a, T>, canonicalize: bool, ) -> Result<()> { diff --git a/capnp/src/data.rs b/capnp/src/data.rs index b0d2a1cbf..c5f93babb 100644 --- a/capnp/src/data.rs +++ b/capnp/src/data.rs @@ -67,7 +67,7 @@ impl<'a> crate::traits::FromPointerBuilder<'a> for Builder<'a> { impl<'a> crate::traits::SetPointerBuilder for Reader<'a> { fn set_pointer_builder<'b>( - pointer: PointerBuilder<'b>, + mut pointer: PointerBuilder<'b>, value: Reader<'a>, _canonicalize: bool, ) -> Result<()> { diff --git a/capnp/src/data_list.rs b/capnp/src/data_list.rs index 58e90c738..9b7fb0639 100644 --- a/capnp/src/data_list.rs +++ b/capnp/src/data_list.rs @@ -175,7 +175,7 @@ impl<'a> Builder<'a> { impl<'a> crate::traits::SetPointerBuilder for Reader<'a> { fn set_pointer_builder<'b>( - pointer: crate::private::layout::PointerBuilder<'b>, + mut pointer: crate::private::layout::PointerBuilder<'b>, value: Reader<'a>, canonicalize: bool, ) -> Result<()> { diff --git a/capnp/src/enum_list.rs b/capnp/src/enum_list.rs index 1927b7913..e3dcae326 100644 --- a/capnp/src/enum_list.rs +++ b/capnp/src/enum_list.rs @@ -176,14 +176,17 @@ impl<'a, T: ToU16 + FromU16> Builder<'a, T> { } } - pub fn reborrow(&self) -> Builder<'_, T> { - Builder { ..*self } + pub fn reborrow(&mut self) -> Builder<'_, T> { + Builder { + builder: self.builder.reborrow(), + marker: PhantomData, + } } } impl<'a, T> crate::traits::SetPointerBuilder for Reader<'a, T> { fn set_pointer_builder<'b>( - pointer: crate::private::layout::PointerBuilder<'b>, + mut pointer: crate::private::layout::PointerBuilder<'b>, value: Reader<'a, T>, canonicalize: bool, ) -> Result<()> { diff --git a/capnp/src/list_list.rs b/capnp/src/list_list.rs index c07a7e70c..48c8e0ce6 100644 --- a/capnp/src/list_list.rs +++ b/capnp/src/list_list.rs @@ -232,14 +232,14 @@ where } } - pub fn set<'b>(&self, index: u32, value: T::Reader<'a>) -> Result<()> + pub fn set<'b>(&mut self, index: u32, value: T::Reader<'a>) -> Result<()> where T::Reader<'a>: crate::traits::IntoInternalListReader<'b>, { use crate::traits::IntoInternalListReader; assert!(index < self.len()); self.builder - .get_pointer_element(index) + .get_pointer_element_mut(index) .set_list(&value.into_internal_list_reader(), false) } } @@ -249,7 +249,7 @@ where T: crate::traits::Owned, { fn set_pointer_builder<'b>( - pointer: crate::private::layout::PointerBuilder<'b>, + mut pointer: crate::private::layout::PointerBuilder<'b>, value: Reader<'a, T>, canonicalize: bool, ) -> Result<()> { diff --git a/capnp/src/message.rs b/capnp/src/message.rs index d00998d9a..eb98203f1 100644 --- a/capnp/src/message.rs +++ b/capnp/src/message.rs @@ -482,7 +482,7 @@ where self.arena.allocate(0, 1).expect("allocate root pointer"); } let (seg_start, _seg_len) = self.arena.get_segment_mut(0); - let pointer = layout::PointerBuilder::get_root(&self.arena, 0, seg_start); + let pointer = layout::PointerBuilder::get_root(&mut self.arena, 0, seg_start); SetPointerBuilder::set_pointer_builder(pointer, value, true)?; assert_eq!(self.get_segments_for_output().len(), 1); Ok(()) diff --git a/capnp/src/primitive_list.rs b/capnp/src/primitive_list.rs index 2ffce2597..e67a3b8c5 100644 --- a/capnp/src/primitive_list.rs +++ b/capnp/src/primitive_list.rs @@ -161,13 +161,13 @@ where } #[cfg(all(target_endian = "little"))] - pub fn as_slice(&self) -> Option<&mut [T]> { + pub fn as_slice(&self) -> Option<&[T]> { if self.builder.get_element_size() == T::element_size() { - let bytes = self.builder.into_raw_bytes(); + let bytes = self.builder.as_raw_bytes(); Some(unsafe { use core::slice; - slice::from_raw_parts_mut( - bytes.as_ptr() as *mut T, + slice::from_raw_parts( + bytes.as_ptr() as *const T, 8 * bytes.len() / (data_bits_per_element(T::element_size())) as usize, ) }) @@ -213,8 +213,11 @@ impl<'a, T: PrimitiveElement> Builder<'a, T> { } } - pub fn reborrow(&self) -> Builder<'_, T> { - Builder { ..*self } + pub fn reborrow(&mut self) -> Builder<'_, T> { + Builder { + marker: marker::PhantomData, + builder: self.builder.reborrow(), + } } } @@ -223,7 +226,7 @@ where T: PrimitiveElement, { fn set_pointer_builder<'b>( - pointer: PointerBuilder<'b>, + mut pointer: PointerBuilder<'b>, value: Reader<'a, T>, canonicalize: bool, ) -> Result<()> { diff --git a/capnp/src/private/arena.rs b/capnp/src/private/arena.rs index 825917e56..1d3872fef 100644 --- a/capnp/src/private/arena.rs +++ b/capnp/src/private/arena.rs @@ -20,7 +20,6 @@ use alloc::string::String; use alloc::vec::Vec; -use core::cell::RefCell; use core::slice; use core::u64; @@ -154,15 +153,9 @@ where } pub trait BuilderArena: ReaderArena { - // These methods all take an immutable &self because otherwise a StructBuilder<'a> - // would need a `&'a mut dyn BuilderArena` and `StructBuilder::reborrow()` would - // have lifetime issues. (If `'a: 'b`, then a `&'a dyn (BuilderArena + 'a)` can be - // converted to a `&'b dyn (BuilderArena + 'b)`, but a `&'a mut dyn (BuilderArena + 'a)` - // *cannot* be converted to a `&'b mut dyn (BuilderArena + 'b)`. See some discussion here: - // https://botbot.me/mozilla/rust/2017-01-31/?msg=80228117&page=19 .) - fn allocate(&self, segment_id: u32, amount: WordCount32) -> Option; - fn allocate_anywhere(&self, amount: u32) -> (SegmentId, u32); - fn get_segment_mut(&self, id: u32) -> (*mut u8, u32); + fn allocate(&mut self, segment_id: u32, amount: WordCount32) -> Option; + fn allocate_anywhere(&mut self, amount: u32) -> (SegmentId, u32); + fn get_segment_mut(&mut self, id: u32) -> (*mut u8, u32); fn as_reader(&self) -> &dyn ReaderArena; } @@ -194,7 +187,7 @@ pub struct BuilderArenaImpl where A: Allocator, { - inner: RefCell>, + inner: BuilderArenaImplInner, } impl BuilderArenaImpl @@ -203,20 +196,20 @@ where { pub fn new(allocator: A) -> Self { Self { - inner: RefCell::new(BuilderArenaImplInner { + inner: BuilderArenaImplInner { allocator: Some(allocator), segments: Vec::new(), - }), + }, } } /// Allocates a new segment with capacity for at least `minimum_size` words. - pub fn allocate_segment(&self, minimum_size: u32) -> Result<()> { - self.inner.borrow_mut().allocate_segment(minimum_size) + pub fn allocate_segment(&mut self, minimum_size: u32) -> Result<()> { + self.inner.allocate_segment(minimum_size) } pub fn get_segments_for_output(&self) -> OutputSegments { - let reff = self.inner.borrow(); + let reff = &self.inner; if reff.segments.len() == 1 { let seg = &reff.segments[0]; @@ -244,7 +237,7 @@ where } pub fn len(&self) -> usize { - self.inner.borrow().segments.len() + self.inner.segments.len() } pub fn is_empty(&self) -> bool { @@ -253,10 +246,9 @@ where /// Retrieves the underlying `Allocator`, deallocating all currently-allocated /// segments. - pub fn into_allocator(self) -> A { - let mut inner = self.inner.into_inner(); - inner.deallocate_all(); - inner.allocator.take().unwrap() + pub fn into_allocator(mut self) -> A { + self.inner.deallocate_all(); + self.inner.allocator.take().unwrap() } } @@ -265,8 +257,7 @@ where A: Allocator, { fn get_segment(&self, id: u32) -> Result<(*const u8, u32)> { - let borrow = self.inner.borrow(); - let seg = &borrow.segments[id as usize]; + let seg = &self.inner.segments[id as usize]; Ok((seg.ptr, seg.allocated)) } @@ -358,16 +349,16 @@ impl BuilderArena for BuilderArenaImpl where A: Allocator, { - fn allocate(&self, segment_id: u32, amount: WordCount32) -> Option { - self.inner.borrow_mut().allocate(segment_id, amount) + fn allocate(&mut self, segment_id: u32, amount: WordCount32) -> Option { + self.inner.allocate(segment_id, amount) } - fn allocate_anywhere(&self, amount: u32) -> (SegmentId, u32) { - self.inner.borrow_mut().allocate_anywhere(amount) + fn allocate_anywhere(&mut self, amount: u32) -> (SegmentId, u32) { + self.inner.allocate_anywhere(amount) } - fn get_segment_mut(&self, id: u32) -> (*mut u8, u32) { - self.inner.borrow_mut().get_segment_mut(id) + fn get_segment_mut(&mut self, id: u32) -> (*mut u8, u32) { + self.inner.get_segment_mut(id) } fn as_reader(&self) -> &dyn ReaderArena { @@ -414,15 +405,15 @@ impl ReaderArena for NullArena { } impl BuilderArena for NullArena { - fn allocate(&self, _segment_id: u32, _amount: WordCount32) -> Option { + fn allocate(&mut self, _segment_id: u32, _amount: WordCount32) -> Option { None } - fn allocate_anywhere(&self, _amount: u32) -> (SegmentId, u32) { + fn allocate_anywhere(&mut self, _amount: u32) -> (SegmentId, u32) { panic!("tried to allocate from a null arena") } - fn get_segment_mut(&self, _id: u32) -> (*mut u8, u32) { + fn get_segment_mut(&mut self, _id: u32) -> (*mut u8, u32) { (core::ptr::null_mut(), 0) } diff --git a/capnp/src/private/layout.rs b/capnp/src/private/layout.rs index f5c98255b..58cf81f96 100644 --- a/capnp/src/private/layout.rs +++ b/capnp/src/private/layout.rs @@ -399,7 +399,7 @@ mod wire_helpers { #[inline] pub unsafe fn allocate( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, reff: *mut WirePointer, segment_id: u32, amount: WordCount32, @@ -450,7 +450,7 @@ mod wire_helpers { #[inline] pub unsafe fn follow_builder_fars( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, reff: *mut WirePointer, ref_target: *mut u8, segment_id: u32, @@ -535,7 +535,11 @@ mod wire_helpers { } } - pub unsafe fn zero_object(arena: &dyn BuilderArena, segment_id: u32, reff: *mut WirePointer) { + pub unsafe fn zero_object( + arena: &mut dyn BuilderArena, + segment_id: u32, + reff: *mut WirePointer, + ) { //# Zero out the pointed-to object. Use when the pointer is //# about to be overwritten making the target object no longer //# reachable. @@ -569,7 +573,7 @@ mod wire_helpers { } pub unsafe fn zero_object_helper( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, segment_id: u32, tag: *mut WirePointer, ptr: *mut u8, @@ -651,7 +655,7 @@ mod wire_helpers { #[inline] pub unsafe fn zero_pointer_and_fars( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, _segment_id: u32, reff: *mut WirePointer, ) -> Result<()> { @@ -822,7 +826,7 @@ mod wire_helpers { // Helper for copy_message(). unsafe fn copy_struct( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, segment_id: u32, cap_table: CapTableBuilder, dst: *mut u8, @@ -849,7 +853,7 @@ mod wire_helpers { // Copies from a trusted message. // Returns (new_dst_ptr, new_dst, new_segment_id). pub unsafe fn copy_message( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, segment_id: u32, cap_table: CapTableBuilder, dst: *mut WirePointer, @@ -984,7 +988,7 @@ mod wire_helpers { } pub unsafe fn transfer_pointer( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, dst_segment_id: u32, dst: *mut WirePointer, src_segment_id: u32, @@ -1020,7 +1024,7 @@ mod wire_helpers { } pub unsafe fn transfer_pointer_split( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, dst_segment_id: u32, dst: *mut WirePointer, src_segment_id: u32, @@ -1094,7 +1098,7 @@ mod wire_helpers { #[inline] pub unsafe fn init_struct_pointer( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, reff: *mut WirePointer, segment_id: u32, cap_table: CapTableBuilder, @@ -1122,7 +1126,7 @@ mod wire_helpers { #[inline] pub unsafe fn get_writable_struct_pointer<'a>( - arena: &'a dyn BuilderArena, + arena: &'a mut dyn BuilderArena, mut reff: *mut WirePointer, mut segment_id: u32, cap_table: CapTableBuilder, @@ -1238,7 +1242,7 @@ mod wire_helpers { #[inline] pub unsafe fn init_list_pointer( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, reff: *mut WirePointer, segment_id: u32, cap_table: CapTableBuilder, @@ -1274,7 +1278,7 @@ mod wire_helpers { #[inline] pub unsafe fn init_struct_list_pointer( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, reff: *mut WirePointer, segment_id: u32, cap_table: CapTableBuilder, @@ -1319,7 +1323,7 @@ mod wire_helpers { #[inline] pub unsafe fn get_writable_list_pointer( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, mut orig_ref: *mut WirePointer, mut orig_segment_id: u32, cap_table: CapTableBuilder, @@ -1335,7 +1339,7 @@ mod wire_helpers { if (*orig_ref).is_null() { if default_value.is_null() || (*(default_value as *const WirePointer)).is_null() { - return Ok(ListBuilder::new_default()); + return Ok(ListBuilder::new_default(arena)); } let (new_orig_ref_target, new_orig_ref, new_orig_segment_id) = copy_message( arena, @@ -1457,7 +1461,7 @@ mod wire_helpers { #[inline] pub unsafe fn get_writable_struct_list_pointer( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, mut orig_ref: *mut WirePointer, mut orig_segment_id: u32, cap_table: CapTableBuilder, @@ -1468,7 +1472,7 @@ mod wire_helpers { if (*orig_ref).is_null() { if default_value.is_null() || (*(default_value as *const WirePointer)).is_null() { - return Ok(ListBuilder::new_default()); + return Ok(ListBuilder::new_default(arena)); } let (new_orig_ref_target, new_orig_ref, new_orig_segment_id) = copy_message( arena, @@ -1703,7 +1707,7 @@ mod wire_helpers { #[inline] pub unsafe fn init_text_pointer( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, reff: *mut WirePointer, segment_id: u32, size: ByteCount32, @@ -1732,7 +1736,7 @@ mod wire_helpers { #[inline] pub unsafe fn set_text_pointer<'a>( - arena: &'a dyn BuilderArena, + arena: &'a mut dyn BuilderArena, reff: *mut WirePointer, segment_id: u32, value: &str, @@ -1746,7 +1750,7 @@ mod wire_helpers { #[inline] pub unsafe fn get_writable_text_pointer<'a>( - arena: &'a dyn BuilderArena, + arena: &'a mut dyn BuilderArena, mut reff: *mut WirePointer, mut segment_id: u32, default: Option<&'a [crate::Word]>, @@ -1802,7 +1806,7 @@ mod wire_helpers { #[inline] pub unsafe fn init_data_pointer( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, reff: *mut WirePointer, segment_id: u32, size: ByteCount32, @@ -1827,7 +1831,7 @@ mod wire_helpers { #[inline] pub unsafe fn set_data_pointer<'a>( - arena: &'a dyn BuilderArena, + arena: &'a mut dyn BuilderArena, reff: *mut WirePointer, segment_id: u32, value: &[u8], @@ -1839,7 +1843,7 @@ mod wire_helpers { #[inline] pub unsafe fn get_writable_data_pointer<'a>( - arena: &'a dyn BuilderArena, + arena: &'a mut dyn BuilderArena, mut reff: *mut WirePointer, mut segment_id: u32, default: Option<&'a [crate::Word]>, @@ -1886,7 +1890,7 @@ mod wire_helpers { } pub unsafe fn set_struct_pointer( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, segment_id: u32, cap_table: CapTableBuilder, reff: *mut WirePointer, @@ -1983,7 +1987,7 @@ mod wire_helpers { } pub unsafe fn set_list_pointer( - arena: &dyn BuilderArena, + arena: &mut dyn BuilderArena, segment_id: u32, cap_table: CapTableBuilder, reff: *mut WirePointer, @@ -2152,7 +2156,7 @@ mod wire_helpers { } pub unsafe fn copy_pointer( - dst_arena: &dyn BuilderArena, + dst_arena: &mut dyn BuilderArena, dst_segment_id: u32, dst_cap_table: CapTableBuilder, dst: *mut WirePointer, @@ -3054,9 +3058,8 @@ impl<'a> PointerReader<'a> { } } -#[derive(Clone, Copy)] pub struct PointerBuilder<'a> { - arena: &'a dyn BuilderArena, + arena: &'a mut dyn BuilderArena, segment_id: u32, cap_table: CapTableBuilder, pointer: *mut WirePointer, @@ -3064,7 +3067,7 @@ pub struct PointerBuilder<'a> { impl<'a> PointerBuilder<'a> { #[inline] - pub fn get_root(arena: &'a dyn BuilderArena, segment_id: u32, location: *mut u8) -> Self { + pub fn get_root(arena: &'a mut dyn BuilderArena, segment_id: u32, location: *mut u8) -> Self { PointerBuilder { arena, cap_table: CapTableBuilder::Plain(ptr::null_mut()), @@ -3073,6 +3076,7 @@ impl<'a> PointerBuilder<'a> { } } + #[inline] pub fn reborrow(&mut self) -> PointerBuilder<'_> { PointerBuilder { arena: self.arena, @@ -3240,7 +3244,7 @@ impl<'a> PointerBuilder<'a> { } } - pub fn set_struct(&self, value: &StructReader, canonicalize: bool) -> Result<()> { + pub fn set_struct(&mut self, value: &StructReader, canonicalize: bool) -> Result<()> { unsafe { wire_helpers::set_struct_pointer( self.arena, @@ -3254,7 +3258,7 @@ impl<'a> PointerBuilder<'a> { } } - pub fn set_list(&self, value: &ListReader, canonicalize: bool) -> Result<()> { + pub fn set_list(&mut self, value: &ListReader, canonicalize: bool) -> Result<()> { unsafe { wire_helpers::set_list_pointer( self.arena, @@ -3268,13 +3272,13 @@ impl<'a> PointerBuilder<'a> { } } - pub fn set_text(&self, value: &str) { + pub fn set_text(&mut self, value: &str) { unsafe { wire_helpers::set_text_pointer(self.arena, self.pointer, self.segment_id, value); } } - pub fn set_data(&self, value: &[u8]) { + pub fn set_data(&mut self, value: &[u8]) { unsafe { wire_helpers::set_data_pointer(self.arena, self.pointer, self.segment_id, value); } @@ -3324,6 +3328,16 @@ impl<'a> PointerBuilder<'a> { } } + pub fn as_reader(&self) -> PointerReader<'_> { + PointerReader { + arena: self.arena.as_reader(), + segment_id: self.segment_id, + cap_table: self.cap_table.into_reader(), + pointer: self.pointer, + nesting_limit: 0x7fffffff, + } + } + pub fn into_reader(self) -> PointerReader<'a> { PointerReader { arena: self.arena.as_reader(), @@ -3535,9 +3549,8 @@ impl<'a> StructReader<'a> { } } -#[derive(Clone, Copy)] pub struct StructBuilder<'a> { - arena: &'a dyn BuilderArena, + arena: &'a mut dyn BuilderArena, cap_table: CapTableBuilder, data: *mut u8, pointers: *mut WirePointer, @@ -3547,6 +3560,27 @@ pub struct StructBuilder<'a> { } impl<'a> StructBuilder<'a> { + #[inline] + pub fn reborrow(&mut self) -> StructBuilder<'_> { + StructBuilder { + arena: self.arena, + ..*self + } + } + + pub fn as_reader(&self) -> StructReader<'_> { + StructReader { + arena: self.arena.as_reader(), + cap_table: self.cap_table.into_reader(), + data: self.data, + pointers: self.pointers, + pointer_count: self.pointer_count, + segment_id: self.segment_id, + data_size: self.data_size, + nesting_limit: 0x7fffffff, + } + } + pub fn into_reader(self) -> StructReader<'a> { StructReader { arena: self.arena.as_reader(), @@ -3632,6 +3666,21 @@ impl<'a> StructBuilder<'a> { } } + #[inline] + pub fn get_pointer_field_mut(&mut self, ptr_index: WirePointerCount) -> PointerBuilder<'_> { + PointerBuilder { + arena: self.arena, + segment_id: self.segment_id, + cap_table: self.cap_table, + pointer: unsafe { self.pointers.add(ptr_index) }, + } + } + + #[inline] + pub fn is_pointer_field_null(&self, ptr_index: WirePointerCount) -> bool { + unsafe { (*self.pointers.add(ptr_index)).is_null() } + } + pub fn copy_content_from(&mut self, other: &StructReader) -> Result<()> { use core::cmp::min; // Determine the amount of data the builders have in common. @@ -3924,9 +3973,8 @@ impl<'a> ListReader<'a> { } } -#[derive(Clone, Copy)] pub struct ListBuilder<'a> { - arena: &'a dyn BuilderArena, + arena: &'a mut dyn BuilderArena, cap_table: CapTableBuilder, ptr: *mut u8, segment_id: u32, @@ -3939,9 +3987,9 @@ pub struct ListBuilder<'a> { impl<'a> ListBuilder<'a> { #[inline] - pub fn new_default<'b>() -> ListBuilder<'b> { + pub fn new_default<'b>(arena: &'b mut dyn BuilderArena) -> ListBuilder<'b> { ListBuilder { - arena: &NULL_ARENA, + arena, segment_id: 0, cap_table: CapTableBuilder::Plain(ptr::null_mut()), ptr: ptr::null_mut(), @@ -3968,6 +4016,7 @@ impl<'a> ListBuilder<'a> { } } + #[inline] pub fn reborrow(&mut self) -> ListBuilder<'_> { ListBuilder { arena: self.arena, @@ -4005,6 +4054,23 @@ impl<'a> ListBuilder<'a> { } } + #[inline] + pub fn get_struct_element_mut(&mut self, index: ElementCount32) -> StructBuilder<'_> { + let index_byte = ((u64::from(index) * u64::from(self.step)) / BITS_PER_BYTE as u64) as u32; + let struct_data = unsafe { self.ptr.offset(index_byte as isize) }; + let struct_pointers = + unsafe { struct_data.add((self.struct_data_size as usize) / BITS_PER_BYTE) as *mut _ }; + StructBuilder { + arena: self.arena, + segment_id: self.segment_id, + cap_table: self.cap_table, + data: struct_data, + pointers: struct_pointers, + data_size: self.struct_data_size, + pointer_count: self.struct_pointer_count, + } + } + pub(crate) fn get_element_size(&self) -> ElementSize { self.element_size } @@ -4020,7 +4086,18 @@ impl<'a> ListBuilder<'a> { } } - pub(crate) fn into_raw_bytes(self) -> &'a mut [u8] { + #[inline] + pub fn get_pointer_element_mut(&mut self, index: ElementCount32) -> PointerBuilder<'_> { + let offset = (u64::from(index) * u64::from(self.step) / BITS_PER_BYTE as u64) as u32; + PointerBuilder { + arena: self.arena, + segment_id: self.segment_id, + cap_table: self.cap_table, + pointer: unsafe { self.ptr.offset(offset as isize) } as *mut _, + } + } + + pub(crate) fn as_raw_bytes(&self) -> &'_ [u8] { if self.element_count == 0 { // Explictly handle this case to avoid forming a slice to a null pointer, // which would be undefined behavior. @@ -4029,7 +4106,7 @@ impl<'a> ListBuilder<'a> { let num_bytes = wire_helpers::round_bits_up_to_bytes( u64::from(self.step) * u64::from(self.element_count), ) as usize; - unsafe { ::core::slice::from_raw_parts_mut(self.ptr, num_bytes) } + unsafe { ::core::slice::from_raw_parts(self.ptr, num_bytes) } } } } diff --git a/capnp/src/struct_list.rs b/capnp/src/struct_list.rs index f421f98c2..4995ef210 100644 --- a/capnp/src/struct_list.rs +++ b/capnp/src/struct_list.rs @@ -184,13 +184,13 @@ where /// struct list are allocated inline: if the source struct is larger than the target struct /// (as can happen if it was created with a newer version of the schema), then it will be /// truncated, losing fields. - pub fn set_with_caveats<'b>(&self, index: u32, value: T::Reader<'b>) -> Result<()> + pub fn set_with_caveats<'b>(&mut self, index: u32, value: T::Reader<'b>) -> Result<()> where T::Reader<'b>: crate::traits::IntoInternalStructReader<'b>, { use crate::traits::IntoInternalStructReader; self.builder - .get_struct_element(index) + .get_struct_element_mut(index) .copy_content_from(&value.into_internal_struct_reader()) } } @@ -201,7 +201,7 @@ where { pub fn reborrow(&mut self) -> Builder<'_, T> { Builder { - builder: self.builder, + builder: self.builder.reborrow(), marker: PhantomData, } } @@ -257,7 +257,7 @@ where T: crate::traits::OwnedStruct, { fn set_pointer_builder<'b>( - pointer: crate::private::layout::PointerBuilder<'b>, + mut pointer: crate::private::layout::PointerBuilder<'b>, value: Reader<'a, T>, canonicalize: bool, ) -> Result<()> { diff --git a/capnp/src/text.rs b/capnp/src/text.rs index b75f398df..c0248ce2f 100644 --- a/capnp/src/text.rs +++ b/capnp/src/text.rs @@ -125,7 +125,7 @@ impl<'a> crate::traits::FromPointerBuilder<'a> for Builder<'a> { impl<'a> crate::traits::SetPointerBuilder for Reader<'a> { fn set_pointer_builder<'b>( - pointer: crate::private::layout::PointerBuilder<'b>, + mut pointer: crate::private::layout::PointerBuilder<'b>, value: Reader<'a>, _canonicalize: bool, ) -> Result<()> { diff --git a/capnp/src/text_list.rs b/capnp/src/text_list.rs index 78a52e814..6c6dec862 100644 --- a/capnp/src/text_list.rs +++ b/capnp/src/text_list.rs @@ -174,7 +174,7 @@ impl<'a> Builder<'a> { impl<'a> crate::traits::SetPointerBuilder for Reader<'a> { fn set_pointer_builder<'b>( - pointer: crate::private::layout::PointerBuilder<'b>, + mut pointer: crate::private::layout::PointerBuilder<'b>, value: Reader<'a>, canonicalize: bool, ) -> Result<()> { diff --git a/capnpc/src/codegen.rs b/capnpc/src/codegen.rs index c79a6591d..4bcd7b403 100644 --- a/capnpc/src/codegen.rs +++ b/capnpc/src/codegen.rs @@ -739,7 +739,11 @@ pub fn getter_text( } } -fn zero_fields_of_group(gen: &GeneratorContext, node_id: u64) -> ::capnp::Result { +fn zero_fields_of_group( + gen: &GeneratorContext, + node_id: u64, + clear: &mut bool, +) -> ::capnp::Result { use crate::schema_capnp::{field, node, type_}; match gen.node_map[&node_id].which()? { node::Struct(st) => { @@ -754,7 +758,7 @@ fn zero_fields_of_group(gen: &GeneratorContext, node_id: u64) -> ::capnp::Result for field in fields.iter() { match field.which()? { field::Group(group) => { - result.push(zero_fields_of_group(gen, group.get_type_id())?); + result.push(zero_fields_of_group(gen, group.get_type_id(), clear)?); } field::Slot(slot) => { let typ = slot.get_type()?.which()?; @@ -787,8 +791,9 @@ fn zero_fields_of_group(gen: &GeneratorContext, node_id: u64) -> ::capnp::Result type_::AnyPointer(_) | type_::Interface(_) // Is this the right thing to do for interfaces? => { - let line = Line(format!("self.builder.get_pointer_field({}).clear();", + let line = Line(format!("self.builder.get_pointer_field_mut({}).clear();", slot.get_offset())); + *clear = true; // PERF could dedup more efficiently if !result.contains(&line) { result.push(line) } } @@ -815,6 +820,7 @@ fn generate_setter( let mut setter_interior = Vec::new(); let mut setter_param = "value".to_string(); let mut initter_interior = Vec::new(); + let mut initter_mut = false; let mut initn_interior = Vec::new(); let mut initter_params = Vec::new(); @@ -849,7 +855,11 @@ fn generate_setter( let scope = &gen.scope_map[&group.get_type_id()]; let the_mod = scope.join("::"); - initter_interior.push(zero_fields_of_group(gen, group.get_type_id())?); + initter_interior.push(zero_fields_of_group( + gen, + group.get_type_id(), + &mut initter_mut, + )?); initter_interior.push(Line( "::capnp::traits::FromStructBuilder::new(self.builder)".to_string(), @@ -898,7 +908,7 @@ fn generate_setter( } type_::Text(()) => { setter_interior.push(Line(format!( - "self.builder.get_pointer_field({offset}).set_text(value);" + "self.builder.get_pointer_field_mut({offset}).set_text(value);" ))); initter_interior.push(Line(format!( "self.builder.get_pointer_field({offset}).init_text(size)" @@ -911,7 +921,7 @@ fn generate_setter( } type_::Data(()) => { setter_interior.push(Line(format!( - "self.builder.get_pointer_field({offset}).set_data(value);" + "self.builder.get_pointer_field_mut({offset}).set_data(value);" ))); initter_interior.push(Line(format!( "self.builder.get_pointer_field({offset}).init_data(size)" @@ -925,7 +935,7 @@ fn generate_setter( type_::List(ot1) => { return_result = true; setter_interior.push( - Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field({offset}), value, false)"))); + Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut({offset}), value, false)"))); initter_params.push("size: u32"); initter_interior.push( @@ -965,7 +975,7 @@ fn generate_setter( if typ.is_branded()? { setter_interior.push( Line(format!( - "<{} as ::capnp::traits::SetPointerBuilder>::set_pointer_builder(self.builder.get_pointer_field({}), value, false)", + "<{} as ::capnp::traits::SetPointerBuilder>::set_pointer_builder(self.builder.get_pointer_field_mut({}), value, false)", typ.type_string(gen, Leaf::Reader("'_"))?, offset))); ( @@ -974,7 +984,7 @@ fn generate_setter( ) } else { setter_interior.push( - Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field({offset}), value, false)"))); + Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut({offset}), value, false)"))); ( Some(reg_field.get_type()?.type_string(gen, Leaf::Reader("'_"))?), Some( @@ -987,14 +997,14 @@ fn generate_setter( } type_::Interface(_) => { setter_interior.push(Line(format!( - "self.builder.get_pointer_field({offset}).set_capability(value.client.hook);" + "self.builder.get_pointer_field_mut({offset}).set_capability(value.client.hook);" ))); (Some(typ.type_string(gen, Leaf::Client)?), None) } type_::AnyPointer(_) => { if typ.is_parameter()? { initter_interior.push(Line(format!("::capnp::any_pointer::Builder::new(self.builder.get_pointer_field({offset})).init_as()"))); - setter_interior.push(Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field({offset}), value, false)"))); + setter_interior.push(Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut({offset}), value, false)"))); return_result = true; let builder_type = typ.type_string(gen, Leaf::Builder("'a"))?; @@ -1039,8 +1049,9 @@ fn generate_setter( if let Some(builder_type) = maybe_builder_type { result.push(Line("#[inline]".to_string())); let args = initter_params.join(", "); + let mutable = if initter_mut { "mut " } else { "" }; result.push(Line(format!( - "pub fn init_{styled_name}(self, {args}) -> {builder_type} {{" + "pub fn init_{styled_name}({mutable}self, {args}) -> {builder_type} {{" ))); result.push(Indent(Box::new(Branch(initter_interior)))); result.push(Line("}".to_string())); @@ -1340,10 +1351,17 @@ fn generate_haser( | type_::List(_) | type_::Struct(_) | type_::AnyPointer(_) => { - interior.push(Line(format!( - "!self.{member}.get_pointer_field({}).is_null()", - reg_field.get_offset() - ))); + if is_reader { + interior.push(Line(format!( + "!self.{member}.get_pointer_field({}).is_null()", + reg_field.get_offset() + ))); + } else { + interior.push(Line(format!( + "!self.{member}.is_pointer_field_null({})", + reg_field.get_offset() + ))); + } result.push(Line("#[inline]".to_string())); result.push(Line(format!("pub fn has_{styled_name}(&self) -> bool {{"))); result.push(Indent(Box::new(Branch(interior)))); @@ -1822,7 +1840,7 @@ fn generate_node( Line(format!( "impl <'a,{0}> ::capnp::traits::SetPointerBuilder for Reader<'a,{0}> {1} {{", params.params, params.where_clause)), - Indent(Box::new(Line("fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }".to_string()))), + Indent(Box::new(Line("fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }".to_string()))), Line("}".to_string()), BlankLine, Line(format!("impl <'a,{0}> Builder<'a,{0}> {1} {{", params.params, params.where_clause)), @@ -1832,15 +1850,15 @@ fn generate_node( Indent(Box::new(Line("::capnp::traits::FromStructReader::new(self.builder.into_reader())".to_string()))), Line("}".to_string()), Line(format!("pub fn reborrow(&mut self) -> Builder<'_,{}> {{", params.params)), - Indent(Box::new(Line("Builder { .. *self }".to_string()))), + Indent(Box::new(Line("Builder { builder: self.builder.reborrow(), ..*self }".to_string()))), Line("}".to_string()), Line(format!("pub fn reborrow_as_reader(&self) -> Reader<'_,{}> {{", params.params)), - Indent(Box::new(Line("::capnp::traits::FromStructReader::new(self.builder.into_reader())".to_string()))), + Indent(Box::new(Line("::capnp::traits::FromStructReader::new(self.builder.as_reader())".to_string()))), Line("}".to_string()), BlankLine, Line("pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {".to_string()), - Indent(Box::new(Line("self.builder.into_reader().total_size()".to_string()))), + Indent(Box::new(Line("self.builder.as_reader().total_size()".to_string()))), Line("}".to_string()) ]))), Indent(Box::new(Branch(builder_members))), diff --git a/capnpc/src/schema_capnp.rs b/capnpc/src/schema_capnp.rs index f5c7f6fa8..56cd4b746 100644 --- a/capnpc/src/schema_capnp.rs +++ b/capnpc/src/schema_capnp.rs @@ -165,7 +165,7 @@ pub mod node { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -173,14 +173,14 @@ pub mod node { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_id(self) -> u64 { @@ -196,7 +196,7 @@ pub mod node { } #[inline] pub fn set_display_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_display_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -204,7 +204,7 @@ pub mod node { } #[inline] pub fn has_display_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_display_name_prefix_length(self) -> u32 { @@ -228,7 +228,7 @@ pub mod node { } #[inline] pub fn set_nested_nodes(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::nested_node::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) } #[inline] pub fn init_nested_nodes(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::nested_node::Owned> { @@ -236,7 +236,7 @@ pub mod node { } #[inline] pub fn has_nested_nodes(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_annotations(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::annotation::Owned>> { @@ -244,7 +244,7 @@ pub mod node { } #[inline] pub fn set_annotations(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::annotation::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(2), value, false) } #[inline] pub fn init_annotations(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::annotation::Owned> { @@ -252,14 +252,14 @@ pub mod node { } #[inline] pub fn has_annotations(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn set_file(&mut self, _value: ()) { self.builder.set_data_field::(6, 0); } #[inline] - pub fn init_struct(self, ) -> crate::schema_capnp::node::struct_::Builder<'a> { + pub fn init_struct(mut self, ) -> crate::schema_capnp::node::struct_::Builder<'a> { self.builder.set_data_field::(6, 1); self.builder.set_data_field::(7, 0u16); self.builder.set_data_field::(12, 0u16); @@ -267,33 +267,33 @@ pub mod node { self.builder.set_bool_field(224, false); self.builder.set_data_field::(15, 0u16); self.builder.set_data_field::(8, 0u32); - self.builder.get_pointer_field(3).clear(); + self.builder.get_pointer_field_mut(3).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] - pub fn init_enum(self, ) -> crate::schema_capnp::node::enum_::Builder<'a> { + pub fn init_enum(mut self, ) -> crate::schema_capnp::node::enum_::Builder<'a> { self.builder.set_data_field::(6, 2); - self.builder.get_pointer_field(3).clear(); + self.builder.get_pointer_field_mut(3).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] - pub fn init_interface(self, ) -> crate::schema_capnp::node::interface::Builder<'a> { + pub fn init_interface(mut self, ) -> crate::schema_capnp::node::interface::Builder<'a> { self.builder.set_data_field::(6, 3); - self.builder.get_pointer_field(3).clear(); - self.builder.get_pointer_field(4).clear(); + self.builder.get_pointer_field_mut(3).clear(); + self.builder.get_pointer_field_mut(4).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] - pub fn init_const(self, ) -> crate::schema_capnp::node::const_::Builder<'a> { + pub fn init_const(mut self, ) -> crate::schema_capnp::node::const_::Builder<'a> { self.builder.set_data_field::(6, 4); - self.builder.get_pointer_field(3).clear(); - self.builder.get_pointer_field(4).clear(); + self.builder.get_pointer_field_mut(3).clear(); + self.builder.get_pointer_field_mut(4).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] - pub fn init_annotation(self, ) -> crate::schema_capnp::node::annotation::Builder<'a> { + pub fn init_annotation(mut self, ) -> crate::schema_capnp::node::annotation::Builder<'a> { self.builder.set_data_field::(6, 5); - self.builder.get_pointer_field(3).clear(); + self.builder.get_pointer_field_mut(3).clear(); self.builder.set_bool_field(112, false); self.builder.set_bool_field(113, false); self.builder.set_bool_field(114, false); @@ -314,7 +314,7 @@ pub mod node { } #[inline] pub fn set_parameters(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::parameter::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(5), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(5), value, false) } #[inline] pub fn init_parameters(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::parameter::Owned> { @@ -322,7 +322,7 @@ pub mod node { } #[inline] pub fn has_parameters(&self) -> bool { - !self.builder.get_pointer_field(5).is_null() + !self.builder.is_pointer_field_null(5) } #[inline] pub fn get_is_generic(self) -> bool { @@ -476,7 +476,7 @@ pub mod node { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -484,14 +484,14 @@ pub mod node { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { @@ -499,7 +499,7 @@ pub mod node { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -507,7 +507,7 @@ pub mod node { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } @@ -612,7 +612,7 @@ pub mod node { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -620,14 +620,14 @@ pub mod node { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { @@ -635,7 +635,7 @@ pub mod node { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -643,7 +643,7 @@ pub mod node { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_id(self) -> u64 { @@ -764,7 +764,7 @@ pub mod node { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -772,14 +772,14 @@ pub mod node { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_id(self) -> u64 { @@ -795,7 +795,7 @@ pub mod node { } #[inline] pub fn set_doc_comment(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_doc_comment(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -803,7 +803,7 @@ pub mod node { } #[inline] pub fn has_doc_comment(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_members(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::node::source_info::member::Owned>> { @@ -811,7 +811,7 @@ pub mod node { } #[inline] pub fn set_members(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::source_info::member::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) } #[inline] pub fn init_members(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::source_info::member::Owned> { @@ -819,7 +819,7 @@ pub mod node { } #[inline] pub fn has_members(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } @@ -919,7 +919,7 @@ pub mod node { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -927,14 +927,14 @@ pub mod node { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_doc_comment(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { @@ -942,7 +942,7 @@ pub mod node { } #[inline] pub fn set_doc_comment(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_doc_comment(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -950,7 +950,7 @@ pub mod node { } #[inline] pub fn has_doc_comment(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } @@ -1076,7 +1076,7 @@ pub mod node { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1084,14 +1084,14 @@ pub mod node { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_data_word_count(self) -> u16 { @@ -1147,7 +1147,7 @@ pub mod node { } #[inline] pub fn set_fields(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::field::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) } #[inline] pub fn init_fields(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::field::Owned> { @@ -1155,7 +1155,7 @@ pub mod node { } #[inline] pub fn has_fields(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } } @@ -1256,7 +1256,7 @@ pub mod node { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1264,14 +1264,14 @@ pub mod node { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_enumerants(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::enumerant::Owned>> { @@ -1279,7 +1279,7 @@ pub mod node { } #[inline] pub fn set_enumerants(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::enumerant::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) } #[inline] pub fn init_enumerants(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::enumerant::Owned> { @@ -1287,7 +1287,7 @@ pub mod node { } #[inline] pub fn has_enumerants(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } } @@ -1396,7 +1396,7 @@ pub mod node { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1404,14 +1404,14 @@ pub mod node { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_methods(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::method::Owned>> { @@ -1419,7 +1419,7 @@ pub mod node { } #[inline] pub fn set_methods(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::method::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) } #[inline] pub fn init_methods(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::method::Owned> { @@ -1427,7 +1427,7 @@ pub mod node { } #[inline] pub fn has_methods(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } #[inline] pub fn get_superclasses(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::superclass::Owned>> { @@ -1435,7 +1435,7 @@ pub mod node { } #[inline] pub fn set_superclasses(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::superclass::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(4), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(4), value, false) } #[inline] pub fn init_superclasses(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::superclass::Owned> { @@ -1443,7 +1443,7 @@ pub mod node { } #[inline] pub fn has_superclasses(&self) -> bool { - !self.builder.get_pointer_field(4).is_null() + !self.builder.is_pointer_field_null(4) } } @@ -1552,7 +1552,7 @@ pub mod node { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1560,14 +1560,14 @@ pub mod node { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -1575,7 +1575,7 @@ pub mod node { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -1583,7 +1583,7 @@ pub mod node { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } #[inline] pub fn get_value(self) -> ::capnp::Result> { @@ -1591,7 +1591,7 @@ pub mod node { } #[inline] pub fn set_value(&mut self, value: crate::schema_capnp::value::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(4), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(4), value, false) } #[inline] pub fn init_value(self, ) -> crate::schema_capnp::value::Builder<'a> { @@ -1599,7 +1599,7 @@ pub mod node { } #[inline] pub fn has_value(&self) -> bool { - !self.builder.get_pointer_field(4).is_null() + !self.builder.is_pointer_field_null(4) } } @@ -1754,7 +1754,7 @@ pub mod node { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -1762,14 +1762,14 @@ pub mod node { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -1777,7 +1777,7 @@ pub mod node { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -1785,7 +1785,7 @@ pub mod node { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } #[inline] pub fn get_targets_file(self) -> bool { @@ -2024,7 +2024,7 @@ pub mod field { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2032,14 +2032,14 @@ pub mod field { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { @@ -2047,7 +2047,7 @@ pub mod field { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -2055,7 +2055,7 @@ pub mod field { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_code_order(self) -> u16 { @@ -2071,7 +2071,7 @@ pub mod field { } #[inline] pub fn set_annotations(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::annotation::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) } #[inline] pub fn init_annotations(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::annotation::Owned> { @@ -2079,7 +2079,7 @@ pub mod field { } #[inline] pub fn has_annotations(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_discriminant_value(self) -> u16 { @@ -2090,11 +2090,11 @@ pub mod field { self.builder.set_data_field_mask::(1, value, 65535); } #[inline] - pub fn init_slot(self, ) -> crate::schema_capnp::field::slot::Builder<'a> { + pub fn init_slot(mut self, ) -> crate::schema_capnp::field::slot::Builder<'a> { self.builder.set_data_field::(4, 0); self.builder.set_data_field::(1, 0u32); - self.builder.get_pointer_field(2).clear(); - self.builder.get_pointer_field(3).clear(); + self.builder.get_pointer_field_mut(2).clear(); + self.builder.get_pointer_field_mut(3).clear(); self.builder.set_bool_field(128, false); ::capnp::traits::FromStructBuilder::new(self.builder) } @@ -2254,7 +2254,7 @@ pub mod field { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2262,14 +2262,14 @@ pub mod field { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_offset(self) -> u32 { @@ -2285,7 +2285,7 @@ pub mod field { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(2), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -2293,7 +2293,7 @@ pub mod field { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_default_value(self) -> ::capnp::Result> { @@ -2301,7 +2301,7 @@ pub mod field { } #[inline] pub fn set_default_value(&mut self, value: crate::schema_capnp::value::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) } #[inline] pub fn init_default_value(self, ) -> crate::schema_capnp::value::Builder<'a> { @@ -2309,7 +2309,7 @@ pub mod field { } #[inline] pub fn has_default_value(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } #[inline] pub fn get_had_explicit_default(self) -> bool { @@ -2420,7 +2420,7 @@ pub mod field { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2428,14 +2428,14 @@ pub mod field { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type_id(self) -> u64 { @@ -2554,7 +2554,7 @@ pub mod field { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2562,14 +2562,14 @@ pub mod field { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_implicit(&mut self, _value: ()) { @@ -2714,7 +2714,7 @@ pub mod enumerant { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2722,14 +2722,14 @@ pub mod enumerant { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { @@ -2737,7 +2737,7 @@ pub mod enumerant { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -2745,7 +2745,7 @@ pub mod enumerant { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_code_order(self) -> u16 { @@ -2761,7 +2761,7 @@ pub mod enumerant { } #[inline] pub fn set_annotations(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::annotation::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) } #[inline] pub fn init_annotations(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::annotation::Owned> { @@ -2769,7 +2769,7 @@ pub mod enumerant { } #[inline] pub fn has_annotations(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } @@ -2874,7 +2874,7 @@ pub mod superclass { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -2882,14 +2882,14 @@ pub mod superclass { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_id(self) -> u64 { @@ -2905,7 +2905,7 @@ pub mod superclass { } #[inline] pub fn set_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -2913,7 +2913,7 @@ pub mod superclass { } #[inline] pub fn has_brand(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } @@ -3061,7 +3061,7 @@ pub mod method { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -3069,14 +3069,14 @@ pub mod method { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { @@ -3084,7 +3084,7 @@ pub mod method { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -3092,7 +3092,7 @@ pub mod method { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_code_order(self) -> u16 { @@ -3124,7 +3124,7 @@ pub mod method { } #[inline] pub fn set_annotations(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::annotation::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) } #[inline] pub fn init_annotations(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::annotation::Owned> { @@ -3132,7 +3132,7 @@ pub mod method { } #[inline] pub fn has_annotations(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_param_brand(self) -> ::capnp::Result> { @@ -3140,7 +3140,7 @@ pub mod method { } #[inline] pub fn set_param_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(2), value, false) } #[inline] pub fn init_param_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -3148,7 +3148,7 @@ pub mod method { } #[inline] pub fn has_param_brand(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_result_brand(self) -> ::capnp::Result> { @@ -3156,7 +3156,7 @@ pub mod method { } #[inline] pub fn set_result_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) } #[inline] pub fn init_result_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -3164,7 +3164,7 @@ pub mod method { } #[inline] pub fn has_result_brand(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } #[inline] pub fn get_implicit_parameters(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::node::parameter::Owned>> { @@ -3172,7 +3172,7 @@ pub mod method { } #[inline] pub fn set_implicit_parameters(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::parameter::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(4), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(4), value, false) } #[inline] pub fn init_implicit_parameters(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::parameter::Owned> { @@ -3180,7 +3180,7 @@ pub mod method { } #[inline] pub fn has_implicit_parameters(&self) -> bool { - !self.builder.get_pointer_field(4).is_null() + !self.builder.is_pointer_field_null(4) } } @@ -3382,7 +3382,7 @@ pub mod type_ { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -3390,14 +3390,14 @@ pub mod type_ { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_void(&mut self, _value: ()) { @@ -3456,30 +3456,30 @@ pub mod type_ { self.builder.set_data_field::(0, 13); } #[inline] - pub fn init_list(self, ) -> crate::schema_capnp::type_::list::Builder<'a> { + pub fn init_list(mut self, ) -> crate::schema_capnp::type_::list::Builder<'a> { self.builder.set_data_field::(0, 14); - self.builder.get_pointer_field(0).clear(); + self.builder.get_pointer_field_mut(0).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] - pub fn init_enum(self, ) -> crate::schema_capnp::type_::enum_::Builder<'a> { + pub fn init_enum(mut self, ) -> crate::schema_capnp::type_::enum_::Builder<'a> { self.builder.set_data_field::(0, 15); self.builder.set_data_field::(1, 0u64); - self.builder.get_pointer_field(0).clear(); + self.builder.get_pointer_field_mut(0).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] - pub fn init_struct(self, ) -> crate::schema_capnp::type_::struct_::Builder<'a> { + pub fn init_struct(mut self, ) -> crate::schema_capnp::type_::struct_::Builder<'a> { self.builder.set_data_field::(0, 16); self.builder.set_data_field::(1, 0u64); - self.builder.get_pointer_field(0).clear(); + self.builder.get_pointer_field_mut(0).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] - pub fn init_interface(self, ) -> crate::schema_capnp::type_::interface::Builder<'a> { + pub fn init_interface(mut self, ) -> crate::schema_capnp::type_::interface::Builder<'a> { self.builder.set_data_field::(0, 17); self.builder.set_data_field::(1, 0u64); - self.builder.get_pointer_field(0).clear(); + self.builder.get_pointer_field_mut(0).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] @@ -3714,7 +3714,7 @@ pub mod type_ { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -3722,14 +3722,14 @@ pub mod type_ { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_element_type(self) -> ::capnp::Result> { @@ -3737,7 +3737,7 @@ pub mod type_ { } #[inline] pub fn set_element_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_element_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -3745,7 +3745,7 @@ pub mod type_ { } #[inline] pub fn has_element_type(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } @@ -3853,7 +3853,7 @@ pub mod type_ { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -3861,14 +3861,14 @@ pub mod type_ { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type_id(self) -> u64 { @@ -3884,7 +3884,7 @@ pub mod type_ { } #[inline] pub fn set_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -3892,7 +3892,7 @@ pub mod type_ { } #[inline] pub fn has_brand(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } @@ -4000,7 +4000,7 @@ pub mod type_ { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -4008,14 +4008,14 @@ pub mod type_ { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type_id(self) -> u64 { @@ -4031,7 +4031,7 @@ pub mod type_ { } #[inline] pub fn set_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -4039,7 +4039,7 @@ pub mod type_ { } #[inline] pub fn has_brand(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } @@ -4147,7 +4147,7 @@ pub mod type_ { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -4155,14 +4155,14 @@ pub mod type_ { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type_id(self) -> u64 { @@ -4178,7 +4178,7 @@ pub mod type_ { } #[inline] pub fn set_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -4186,7 +4186,7 @@ pub mod type_ { } #[inline] pub fn has_brand(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } @@ -4305,7 +4305,7 @@ pub mod type_ { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -4313,14 +4313,14 @@ pub mod type_ { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn init_unconstrained(self, ) -> crate::schema_capnp::type_::any_pointer::unconstrained::Builder<'a> { @@ -4487,7 +4487,7 @@ pub mod type_ { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -4495,14 +4495,14 @@ pub mod type_ { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_any_kind(&mut self, _value: ()) { @@ -4653,7 +4653,7 @@ pub mod type_ { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -4661,14 +4661,14 @@ pub mod type_ { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_scope_id(self) -> u64 { @@ -4781,7 +4781,7 @@ pub mod type_ { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -4789,14 +4789,14 @@ pub mod type_ { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_parameter_index(self) -> u16 { @@ -4907,7 +4907,7 @@ pub mod brand { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -4915,14 +4915,14 @@ pub mod brand { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_scopes(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::brand::scope::Owned>> { @@ -4930,7 +4930,7 @@ pub mod brand { } #[inline] pub fn set_scopes(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::brand::scope::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_scopes(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::brand::scope::Owned> { @@ -4938,7 +4938,7 @@ pub mod brand { } #[inline] pub fn has_scopes(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } @@ -5057,7 +5057,7 @@ pub mod brand { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -5065,14 +5065,14 @@ pub mod brand { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_scope_id(self) -> u64 { @@ -5085,7 +5085,7 @@ pub mod brand { #[inline] pub fn set_bind(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::brand::binding::Owned>) -> ::capnp::Result<()> { self.builder.set_data_field::(4, 0); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_bind(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::brand::binding::Owned> { @@ -5095,7 +5095,7 @@ pub mod brand { #[inline] pub fn has_bind(&self) -> bool { if self.builder.get_data_field::(4) != 0 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_inherit(&mut self, _value: ()) { @@ -5237,7 +5237,7 @@ pub mod brand { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -5245,14 +5245,14 @@ pub mod brand { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_unbound(&mut self, _value: ()) { @@ -5261,7 +5261,7 @@ pub mod brand { #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -5271,7 +5271,7 @@ pub mod brand { #[inline] pub fn has_type(&self) -> bool { if self.builder.get_data_field::(0) != 1 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -5515,7 +5515,7 @@ pub mod value { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -5523,14 +5523,14 @@ pub mod value { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_void(&mut self, _value: ()) { @@ -5594,7 +5594,7 @@ pub mod value { #[inline] pub fn set_text(&mut self, value: ::capnp::text::Reader<'_>) { self.builder.set_data_field::(0, 12); - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_text(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -5604,12 +5604,12 @@ pub mod value { #[inline] pub fn has_text(&self) -> bool { if self.builder.get_data_field::(0) != 12 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_data(&mut self, value: ::capnp::data::Reader<'_>) { self.builder.set_data_field::(0, 13); - self.builder.get_pointer_field(0).set_data(value); + self.builder.get_pointer_field_mut(0).set_data(value); } #[inline] pub fn init_data(self, size: u32) -> ::capnp::data::Builder<'a> { @@ -5619,7 +5619,7 @@ pub mod value { #[inline] pub fn has_data(&self) -> bool { if self.builder.get_data_field::(0) != 13 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn init_list(self, ) -> ::capnp::any_pointer::Builder<'a> { @@ -5631,7 +5631,7 @@ pub mod value { #[inline] pub fn has_list(&self) -> bool { if self.builder.get_data_field::(0) != 14 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_enum(&mut self, value: u16) { @@ -5648,7 +5648,7 @@ pub mod value { #[inline] pub fn has_struct(&self) -> bool { if self.builder.get_data_field::(0) != 16 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn set_interface(&mut self, _value: ()) { @@ -5664,7 +5664,7 @@ pub mod value { #[inline] pub fn has_any_pointer(&self) -> bool { if self.builder.get_data_field::(0) != 18 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -5901,7 +5901,7 @@ pub mod annotation { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -5909,14 +5909,14 @@ pub mod annotation { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_id(self) -> u64 { @@ -5932,7 +5932,7 @@ pub mod annotation { } #[inline] pub fn set_value(&mut self, value: crate::schema_capnp::value::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_value(self, ) -> crate::schema_capnp::value::Builder<'a> { @@ -5940,7 +5940,7 @@ pub mod annotation { } #[inline] pub fn has_value(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_brand(self) -> ::capnp::Result> { @@ -5948,7 +5948,7 @@ pub mod annotation { } #[inline] pub fn set_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) } #[inline] pub fn init_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -5956,7 +5956,7 @@ pub mod annotation { } #[inline] pub fn has_brand(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } @@ -6103,7 +6103,7 @@ pub mod capnp_version { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -6111,14 +6111,14 @@ pub mod capnp_version { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_major(self) -> u16 { @@ -6267,7 +6267,7 @@ pub mod code_generator_request { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -6275,14 +6275,14 @@ pub mod code_generator_request { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_nodes(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::node::Owned>> { @@ -6290,7 +6290,7 @@ pub mod code_generator_request { } #[inline] pub fn set_nodes(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) } #[inline] pub fn init_nodes(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::Owned> { @@ -6298,7 +6298,7 @@ pub mod code_generator_request { } #[inline] pub fn has_nodes(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_requested_files(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::code_generator_request::requested_file::Owned>> { @@ -6306,7 +6306,7 @@ pub mod code_generator_request { } #[inline] pub fn set_requested_files(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::code_generator_request::requested_file::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) } #[inline] pub fn init_requested_files(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::code_generator_request::requested_file::Owned> { @@ -6314,7 +6314,7 @@ pub mod code_generator_request { } #[inline] pub fn has_requested_files(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_capnp_version(self) -> ::capnp::Result> { @@ -6322,7 +6322,7 @@ pub mod code_generator_request { } #[inline] pub fn set_capnp_version(&mut self, value: crate::schema_capnp::capnp_version::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(2), value, false) } #[inline] pub fn init_capnp_version(self, ) -> crate::schema_capnp::capnp_version::Builder<'a> { @@ -6330,7 +6330,7 @@ pub mod code_generator_request { } #[inline] pub fn has_capnp_version(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_source_info(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::node::source_info::Owned>> { @@ -6338,7 +6338,7 @@ pub mod code_generator_request { } #[inline] pub fn set_source_info(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::source_info::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) } #[inline] pub fn init_source_info(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::source_info::Owned> { @@ -6346,7 +6346,7 @@ pub mod code_generator_request { } #[inline] pub fn has_source_info(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } } @@ -6461,7 +6461,7 @@ pub mod code_generator_request { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -6469,14 +6469,14 @@ pub mod code_generator_request { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_id(self) -> u64 { @@ -6492,7 +6492,7 @@ pub mod code_generator_request { } #[inline] pub fn set_filename(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_filename(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -6500,7 +6500,7 @@ pub mod code_generator_request { } #[inline] pub fn has_filename(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_imports(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::code_generator_request::requested_file::import::Owned>> { @@ -6508,7 +6508,7 @@ pub mod code_generator_request { } #[inline] pub fn set_imports(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::code_generator_request::requested_file::import::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) } #[inline] pub fn init_imports(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::code_generator_request::requested_file::import::Owned> { @@ -6516,7 +6516,7 @@ pub mod code_generator_request { } #[inline] pub fn has_imports(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } @@ -6620,7 +6620,7 @@ pub mod code_generator_request { } impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { @@ -6628,14 +6628,14 @@ pub mod code_generator_request { ::capnp::traits::FromStructReader::new(self.builder.into_reader()) } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + ::capnp::traits::FromStructReader::new(self.builder.as_reader()) } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_id(self) -> u64 { @@ -6651,7 +6651,7 @@ pub mod code_generator_request { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + self.builder.get_pointer_field_mut(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -6659,7 +6659,7 @@ pub mod code_generator_request { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } diff --git a/capnpc/test/test.rs b/capnpc/test/test.rs index b3d3c05dc..419e0ddd7 100644 --- a/capnpc/test/test.rs +++ b/capnpc/test/test.rs @@ -466,7 +466,7 @@ mod tests { { let mut prim_list_list1 = test_complex_list1.reborrow().init_prim_list_list(1); - let prim_list_list2 = test_complex_list2.reborrow().init_prim_list_list(1); + let mut prim_list_list2 = test_complex_list2.reborrow().init_prim_list_list(1); { let mut prim_list1 = prim_list_list1.reborrow().init(0, 3); prim_list1.set(0, 7); @@ -1819,7 +1819,7 @@ mod tests { use crate::test_capnp::test_all_types; let mut message = message::Builder::new_default(); let root: test_all_types::Builder<'_> = message.init_root(); - let list = root.init_struct_list(2); + let mut list = root.init_struct_list(2); { let mut message1 = message::Builder::new_default(); let mut root1: test_all_types::Builder<'_> = message1.init_root(); From e4839ac03767ba5648d882fe7a07104ee5096517 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Mon, 16 Jan 2023 15:19:42 -0500 Subject: [PATCH 2/7] fix up some more mutability --- capnp/src/any_pointer.rs | 4 ++-- capnp/src/message.rs | 2 +- capnp/src/private/layout.rs | 4 ++-- capnpc/src/codegen.rs | 2 +- capnpc/test/test.rs | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/capnp/src/any_pointer.rs b/capnp/src/any_pointer.rs index 53c26b7f5..2ce9a0df2 100644 --- a/capnp/src/any_pointer.rs +++ b/capnp/src/any_pointer.rs @@ -154,8 +154,8 @@ impl<'a> Builder<'a> { FromPointerBuilder::init_pointer(self.builder, size) } - pub fn set_as(self, value: From) -> Result<()> { - SetPointerBuilder::set_pointer_builder(self.builder, value, false) + pub fn set_as(&mut self, value: From) -> Result<()> { + SetPointerBuilder::set_pointer_builder(self.builder.reborrow(), value, false) } // XXX value should be a user client. diff --git a/capnp/src/message.rs b/capnp/src/message.rs index eb98203f1..e4bd4b613 100644 --- a/capnp/src/message.rs +++ b/capnp/src/message.rs @@ -467,7 +467,7 @@ where /// Sets the root to a deep copy of the given value. pub fn set_root(&mut self, value: From) -> Result<()> { - let root = self.get_root_internal(); + let mut root = self.get_root_internal(); root.set_as(value) } diff --git a/capnp/src/private/layout.rs b/capnp/src/private/layout.rs index 58cf81f96..69bcb621d 100644 --- a/capnp/src/private/layout.rs +++ b/capnp/src/private/layout.rs @@ -1974,7 +1974,7 @@ mod wire_helpers { } pub fn set_capability_pointer( - _arena: &dyn BuilderArena, + _arena: &mut dyn BuilderArena, _segment_id: u32, mut cap_table: CapTableBuilder, reff: *mut WirePointer, @@ -3284,7 +3284,7 @@ impl<'a> PointerBuilder<'a> { } } - pub fn set_capability(&self, cap: Box) { + pub fn set_capability(&mut self, cap: Box) { wire_helpers::set_capability_pointer( self.arena, self.segment_id, diff --git a/capnpc/src/codegen.rs b/capnpc/src/codegen.rs index 4bcd7b403..f4cdad911 100644 --- a/capnpc/src/codegen.rs +++ b/capnpc/src/codegen.rs @@ -2201,7 +2201,7 @@ fn generate_node( Indent( Box::new( Branch(vec![ - Line("fn set_pointer_builder(pointer: ::capnp::private::layout::PointerBuilder<'_>, from: Self, _canonicalize: bool) -> ::capnp::Result<()> {".to_string()), + Line("fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, from: Self, _canonicalize: bool) -> ::capnp::Result<()> {".to_string()), Indent(Box::new(Line( "pointer.set_capability(from.client.hook);".to_string()))), Indent(Box::new(Line( diff --git a/capnpc/test/test.rs b/capnpc/test/test.rs index 419e0ddd7..25b61e798 100644 --- a/capnpc/test/test.rs +++ b/capnpc/test/test.rs @@ -1294,7 +1294,7 @@ mod tests { { let root_builder: test_any_pointer::Builder<'_> = message_builder.init_root(); - let any_builder = root_builder.get_any_pointer_field(); + let mut any_builder = root_builder.get_any_pointer_field(); any_builder.set_as(list_reader).unwrap(); } let out_seg = message_builder.get_segments_for_output()[0]; From 9759b113a47ad46b3ca34aa04c9b994e9552abf0 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Mon, 16 Jan 2023 17:19:17 -0500 Subject: [PATCH 3/7] remove no-longer userd `impl BuilderArena for NullArena` --- capnp/src/private/arena.rs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/capnp/src/private/arena.rs b/capnp/src/private/arena.rs index 1d3872fef..af8fc2b77 100644 --- a/capnp/src/private/arena.rs +++ b/capnp/src/private/arena.rs @@ -403,21 +403,3 @@ impl ReaderArena for NullArena { 0x7fffffff } } - -impl BuilderArena for NullArena { - fn allocate(&mut self, _segment_id: u32, _amount: WordCount32) -> Option { - None - } - - fn allocate_anywhere(&mut self, _amount: u32) -> (SegmentId, u32) { - panic!("tried to allocate from a null arena") - } - - fn get_segment_mut(&mut self, _id: u32) -> (*mut u8, u32) { - (core::ptr::null_mut(), 0) - } - - fn as_reader(&self) -> &dyn ReaderArena { - self - } -} From 62072723b112228bd52d91d43695839ffd41da10 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Mon, 16 Jan 2023 17:24:35 -0500 Subject: [PATCH 4/7] elide lifetimes --- capnp/src/private/layout.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/capnp/src/private/layout.rs b/capnp/src/private/layout.rs index 69bcb621d..679bf6884 100644 --- a/capnp/src/private/layout.rs +++ b/capnp/src/private/layout.rs @@ -3987,7 +3987,7 @@ pub struct ListBuilder<'a> { impl<'a> ListBuilder<'a> { #[inline] - pub fn new_default<'b>(arena: &'b mut dyn BuilderArena) -> ListBuilder<'b> { + pub fn new_default(arena: &mut dyn BuilderArena) -> ListBuilder<'_> { ListBuilder { arena, segment_id: 0, From 625a3f5f2664f7649844d365ecfee6adbada3f20 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Mon, 16 Jan 2023 17:26:34 -0500 Subject: [PATCH 5/7] add missing `mut` --- capnp/fuzz/fuzzers/test_all_types.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/capnp/fuzz/fuzzers/test_all_types.rs b/capnp/fuzz/fuzzers/test_all_types.rs index d6a29d870..ac2090579 100644 --- a/capnp/fuzz/fuzzers/test_all_types.rs +++ b/capnp/fuzz/fuzzers/test_all_types.rs @@ -162,7 +162,7 @@ fn try_go(mut data: &[u8]) -> ::capnp::Result<()> { root_builder.set_struct_field(root)?; { - let list = root_builder.reborrow().init_struct_list(2); + let mut list = root_builder.reborrow().init_struct_list(2); list.set_with_caveats(0, root)?; list.set_with_caveats(1, root)?; } From 7f3c9b440b15621219b824d796fd6b3a843da57c Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Mon, 16 Jan 2023 17:54:36 -0500 Subject: [PATCH 6/7] remove get_struct_element_mut and get_pointer_element_mut --- capnp-rpc/src/rpc_capnp.rs | 94 +++++++++++++++++++--------- capnp/src/list_list.rs | 3 +- capnp/src/private/layout.rs | 28 --------- capnp/src/struct_list.rs | 3 +- capnpc/src/codegen.rs | 16 ++--- capnpc/src/schema_capnp.rs | 118 ++++++++++++++++++------------------ 6 files changed, 136 insertions(+), 126 deletions(-) diff --git a/capnp-rpc/src/rpc_capnp.rs b/capnp-rpc/src/rpc_capnp.rs index 380af86f9..020b6de54 100644 --- a/capnp-rpc/src/rpc_capnp.rs +++ b/capnp-rpc/src/rpc_capnp.rs @@ -247,7 +247,7 @@ pub mod message { #[inline] pub fn set_unimplemented(&mut self, value: crate::rpc_capnp::message::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 0); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_unimplemented(self, ) -> crate::rpc_capnp::message::Builder<'a> { @@ -262,7 +262,7 @@ pub mod message { #[inline] pub fn set_abort(&mut self, value: crate::rpc_capnp::exception::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_abort(self, ) -> crate::rpc_capnp::exception::Builder<'a> { @@ -277,7 +277,7 @@ pub mod message { #[inline] pub fn set_call(&mut self, value: crate::rpc_capnp::call::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 2); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_call(self, ) -> crate::rpc_capnp::call::Builder<'a> { @@ -292,7 +292,7 @@ pub mod message { #[inline] pub fn set_return(&mut self, value: crate::rpc_capnp::return_::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 3); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_return(self, ) -> crate::rpc_capnp::return_::Builder<'a> { @@ -307,7 +307,7 @@ pub mod message { #[inline] pub fn set_finish(&mut self, value: crate::rpc_capnp::finish::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 4); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_finish(self, ) -> crate::rpc_capnp::finish::Builder<'a> { @@ -322,7 +322,7 @@ pub mod message { #[inline] pub fn set_resolve(&mut self, value: crate::rpc_capnp::resolve::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 5); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_resolve(self, ) -> crate::rpc_capnp::resolve::Builder<'a> { @@ -337,7 +337,7 @@ pub mod message { #[inline] pub fn set_release(&mut self, value: crate::rpc_capnp::release::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 6); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_release(self, ) -> crate::rpc_capnp::release::Builder<'a> { @@ -364,7 +364,7 @@ pub mod message { #[inline] pub fn set_bootstrap(&mut self, value: crate::rpc_capnp::bootstrap::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 8); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_bootstrap(self, ) -> crate::rpc_capnp::bootstrap::Builder<'a> { @@ -391,7 +391,7 @@ pub mod message { #[inline] pub fn set_provide(&mut self, value: crate::rpc_capnp::provide::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 10); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_provide(self, ) -> crate::rpc_capnp::provide::Builder<'a> { @@ -406,7 +406,7 @@ pub mod message { #[inline] pub fn set_accept(&mut self, value: crate::rpc_capnp::accept::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 11); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_accept(self, ) -> crate::rpc_capnp::accept::Builder<'a> { @@ -421,7 +421,7 @@ pub mod message { #[inline] pub fn set_join(&mut self, value: crate::rpc_capnp::join::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 12); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_join(self, ) -> crate::rpc_capnp::join::Builder<'a> { @@ -436,7 +436,7 @@ pub mod message { #[inline] pub fn set_disembargo(&mut self, value: crate::rpc_capnp::disembargo::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 13); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_disembargo(self, ) -> crate::rpc_capnp::disembargo::Builder<'a> { @@ -783,6 +783,14 @@ pub mod call { pub fn get_allow_third_party_tail_call(self) -> bool { self.reader.get_bool_field(128) } + #[inline] + pub fn get_no_promise_pipelining(self) -> bool { + self.reader.get_bool_field(129) + } + #[inline] + pub fn get_only_promise_pipeline(self) -> bool { + self.reader.get_bool_field(130) + } } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } @@ -845,7 +853,7 @@ pub mod call { } #[inline] pub fn set_target(&mut self, value: crate::rpc_capnp::message_target::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_target(self, ) -> crate::rpc_capnp::message_target::Builder<'a> { @@ -877,7 +885,7 @@ pub mod call { } #[inline] pub fn set_params(&mut self, value: crate::rpc_capnp::payload::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_params(self, ) -> crate::rpc_capnp::payload::Builder<'a> { @@ -894,7 +902,7 @@ pub mod call { #[inline] pub fn init_send_results_to(mut self, ) -> crate::rpc_capnp::call::send_results_to::Builder<'a> { self.builder.set_data_field::(3, 0); - self.builder.get_pointer_field_mut(2).clear(); + self.builder.reborrow().get_pointer_field(2).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] @@ -905,6 +913,22 @@ pub mod call { pub fn set_allow_third_party_tail_call(&mut self, value: bool) { self.builder.set_bool_field(128, value); } + #[inline] + pub fn get_no_promise_pipelining(self) -> bool { + self.builder.get_bool_field(129) + } + #[inline] + pub fn set_no_promise_pipelining(&mut self, value: bool) { + self.builder.set_bool_field(129, value); + } + #[inline] + pub fn get_only_promise_pipeline(self) -> bool { + self.builder.get_bool_field(130) + } + #[inline] + pub fn set_only_promise_pipeline(&mut self, value: bool) { + self.builder.set_bool_field(130, value); + } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } @@ -1184,6 +1208,10 @@ pub mod return_ { !self.reader.get_pointer_field(0).is_null() } #[inline] + pub fn get_no_finish_needed(self) -> bool { + self.reader.get_bool_field(33) + } + #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { match self.reader.get_data_field::(3) { 0 => { @@ -1286,7 +1314,7 @@ pub mod return_ { #[inline] pub fn set_results(&mut self, value: crate::rpc_capnp::payload::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(3, 0); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_results(self, ) -> crate::rpc_capnp::payload::Builder<'a> { @@ -1301,7 +1329,7 @@ pub mod return_ { #[inline] pub fn set_exception(&mut self, value: crate::rpc_capnp::exception::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(3, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_exception(self, ) -> crate::rpc_capnp::exception::Builder<'a> { @@ -1339,6 +1367,14 @@ pub mod return_ { !self.builder.is_pointer_field_null(0) } #[inline] + pub fn get_no_finish_needed(self) -> bool { + self.builder.get_bool_field(33) + } + #[inline] + pub fn set_no_finish_needed(&mut self, value: bool) { + self.builder.set_bool_field(33, value); + } + #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { match self.builder.get_data_field::(3) { 0 => { @@ -1667,7 +1703,7 @@ pub mod resolve { #[inline] pub fn set_cap(&mut self, value: crate::rpc_capnp::cap_descriptor::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(2, 0); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_cap(self, ) -> crate::rpc_capnp::cap_descriptor::Builder<'a> { @@ -1682,7 +1718,7 @@ pub mod resolve { #[inline] pub fn set_exception(&mut self, value: crate::rpc_capnp::exception::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(2, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_exception(self, ) -> crate::rpc_capnp::exception::Builder<'a> { @@ -1974,7 +2010,7 @@ pub mod disembargo { } #[inline] pub fn set_target(&mut self, value: crate::rpc_capnp::message_target::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_target(self, ) -> crate::rpc_capnp::message_target::Builder<'a> { @@ -2331,7 +2367,7 @@ pub mod provide { } #[inline] pub fn set_target(&mut self, value: crate::rpc_capnp::message_target::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_target(self, ) -> crate::rpc_capnp::message_target::Builder<'a> { @@ -2660,7 +2696,7 @@ pub mod join { } #[inline] pub fn set_target(&mut self, value: crate::rpc_capnp::message_target::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_target(self, ) -> crate::rpc_capnp::message_target::Builder<'a> { @@ -2829,7 +2865,7 @@ pub mod message_target { #[inline] pub fn set_promised_answer(&mut self, value: crate::rpc_capnp::promised_answer::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(2, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_promised_answer(self, ) -> crate::rpc_capnp::promised_answer::Builder<'a> { @@ -3007,7 +3043,7 @@ pub mod payload { } #[inline] pub fn set_cap_table(&mut self, value: ::capnp::struct_list::Reader<'a,crate::rpc_capnp::cap_descriptor::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_cap_table(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::rpc_capnp::cap_descriptor::Owned> { @@ -3202,7 +3238,7 @@ pub mod cap_descriptor { #[inline] pub fn set_receiver_answer(&mut self, value: crate::rpc_capnp::promised_answer::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 4); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_receiver_answer(self, ) -> crate::rpc_capnp::promised_answer::Builder<'a> { @@ -3217,7 +3253,7 @@ pub mod cap_descriptor { #[inline] pub fn set_third_party_hosted(&mut self, value: crate::rpc_capnp::third_party_cap_descriptor::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 5); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_third_party_hosted(self, ) -> crate::rpc_capnp::third_party_cap_descriptor::Builder<'a> { @@ -3417,7 +3453,7 @@ pub mod promised_answer { } #[inline] pub fn set_transform(&mut self, value: ::capnp::struct_list::Reader<'a,crate::rpc_capnp::promised_answer::op::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_transform(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::rpc_capnp::promised_answer::op::Owned> { @@ -3871,7 +3907,7 @@ pub mod exception { } #[inline] pub fn set_reason(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_reason(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -3911,7 +3947,7 @@ pub mod exception { } #[inline] pub fn set_trace(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(1).set_text(value); + self.builder.reborrow().get_pointer_field(1).set_text(value); } #[inline] pub fn init_trace(self, size: u32) -> ::capnp::text::Builder<'a> { diff --git a/capnp/src/list_list.rs b/capnp/src/list_list.rs index 48c8e0ce6..c264d059e 100644 --- a/capnp/src/list_list.rs +++ b/capnp/src/list_list.rs @@ -239,7 +239,8 @@ where use crate::traits::IntoInternalListReader; assert!(index < self.len()); self.builder - .get_pointer_element_mut(index) + .reborrow() + .get_pointer_element(index) .set_list(&value.into_internal_list_reader(), false) } } diff --git a/capnp/src/private/layout.rs b/capnp/src/private/layout.rs index 679bf6884..af2f052a5 100644 --- a/capnp/src/private/layout.rs +++ b/capnp/src/private/layout.rs @@ -4054,23 +4054,6 @@ impl<'a> ListBuilder<'a> { } } - #[inline] - pub fn get_struct_element_mut(&mut self, index: ElementCount32) -> StructBuilder<'_> { - let index_byte = ((u64::from(index) * u64::from(self.step)) / BITS_PER_BYTE as u64) as u32; - let struct_data = unsafe { self.ptr.offset(index_byte as isize) }; - let struct_pointers = - unsafe { struct_data.add((self.struct_data_size as usize) / BITS_PER_BYTE) as *mut _ }; - StructBuilder { - arena: self.arena, - segment_id: self.segment_id, - cap_table: self.cap_table, - data: struct_data, - pointers: struct_pointers, - data_size: self.struct_data_size, - pointer_count: self.struct_pointer_count, - } - } - pub(crate) fn get_element_size(&self) -> ElementSize { self.element_size } @@ -4086,17 +4069,6 @@ impl<'a> ListBuilder<'a> { } } - #[inline] - pub fn get_pointer_element_mut(&mut self, index: ElementCount32) -> PointerBuilder<'_> { - let offset = (u64::from(index) * u64::from(self.step) / BITS_PER_BYTE as u64) as u32; - PointerBuilder { - arena: self.arena, - segment_id: self.segment_id, - cap_table: self.cap_table, - pointer: unsafe { self.ptr.offset(offset as isize) } as *mut _, - } - } - pub(crate) fn as_raw_bytes(&self) -> &'_ [u8] { if self.element_count == 0 { // Explictly handle this case to avoid forming a slice to a null pointer, diff --git a/capnp/src/struct_list.rs b/capnp/src/struct_list.rs index 4995ef210..b5b936801 100644 --- a/capnp/src/struct_list.rs +++ b/capnp/src/struct_list.rs @@ -190,7 +190,8 @@ where { use crate::traits::IntoInternalStructReader; self.builder - .get_struct_element_mut(index) + .reborrow() + .get_struct_element(index) .copy_content_from(&value.into_internal_struct_reader()) } } diff --git a/capnpc/src/codegen.rs b/capnpc/src/codegen.rs index f4cdad911..316633c97 100644 --- a/capnpc/src/codegen.rs +++ b/capnpc/src/codegen.rs @@ -791,7 +791,7 @@ fn zero_fields_of_group( type_::AnyPointer(_) | type_::Interface(_) // Is this the right thing to do for interfaces? => { - let line = Line(format!("self.builder.get_pointer_field_mut({}).clear();", + let line = Line(format!("self.builder.reborrow().get_pointer_field({}).clear();", slot.get_offset())); *clear = true; // PERF could dedup more efficiently @@ -908,7 +908,7 @@ fn generate_setter( } type_::Text(()) => { setter_interior.push(Line(format!( - "self.builder.get_pointer_field_mut({offset}).set_text(value);" + "self.builder.reborrow().get_pointer_field({offset}).set_text(value);" ))); initter_interior.push(Line(format!( "self.builder.get_pointer_field({offset}).init_text(size)" @@ -921,7 +921,7 @@ fn generate_setter( } type_::Data(()) => { setter_interior.push(Line(format!( - "self.builder.get_pointer_field_mut({offset}).set_data(value);" + "self.builder.reborrow().get_pointer_field({offset}).set_data(value);" ))); initter_interior.push(Line(format!( "self.builder.get_pointer_field({offset}).init_data(size)" @@ -935,7 +935,7 @@ fn generate_setter( type_::List(ot1) => { return_result = true; setter_interior.push( - Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut({offset}), value, false)"))); + Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field({offset}), value, false)"))); initter_params.push("size: u32"); initter_interior.push( @@ -975,7 +975,7 @@ fn generate_setter( if typ.is_branded()? { setter_interior.push( Line(format!( - "<{} as ::capnp::traits::SetPointerBuilder>::set_pointer_builder(self.builder.get_pointer_field_mut({}), value, false)", + "<{} as ::capnp::traits::SetPointerBuilder>::set_pointer_builder(self.builder.reborrow().get_pointer_field({}), value, false)", typ.type_string(gen, Leaf::Reader("'_"))?, offset))); ( @@ -984,7 +984,7 @@ fn generate_setter( ) } else { setter_interior.push( - Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut({offset}), value, false)"))); + Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field({offset}), value, false)"))); ( Some(reg_field.get_type()?.type_string(gen, Leaf::Reader("'_"))?), Some( @@ -997,14 +997,14 @@ fn generate_setter( } type_::Interface(_) => { setter_interior.push(Line(format!( - "self.builder.get_pointer_field_mut({offset}).set_capability(value.client.hook);" + "self.builder.reborrow().get_pointer_field({offset}).set_capability(value.client.hook);" ))); (Some(typ.type_string(gen, Leaf::Client)?), None) } type_::AnyPointer(_) => { if typ.is_parameter()? { initter_interior.push(Line(format!("::capnp::any_pointer::Builder::new(self.builder.get_pointer_field({offset})).init_as()"))); - setter_interior.push(Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut({offset}), value, false)"))); + setter_interior.push(Line(format!("::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field({offset}), value, false)"))); return_result = true; let builder_type = typ.type_string(gen, Leaf::Builder("'a"))?; diff --git a/capnpc/src/schema_capnp.rs b/capnpc/src/schema_capnp.rs index 56cd4b746..ec5807908 100644 --- a/capnpc/src/schema_capnp.rs +++ b/capnpc/src/schema_capnp.rs @@ -196,7 +196,7 @@ pub mod node { } #[inline] pub fn set_display_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_display_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -228,7 +228,7 @@ pub mod node { } #[inline] pub fn set_nested_nodes(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::nested_node::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_nested_nodes(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::nested_node::Owned> { @@ -244,7 +244,7 @@ pub mod node { } #[inline] pub fn set_annotations(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::annotation::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(2), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_annotations(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::annotation::Owned> { @@ -267,33 +267,33 @@ pub mod node { self.builder.set_bool_field(224, false); self.builder.set_data_field::(15, 0u16); self.builder.set_data_field::(8, 0u32); - self.builder.get_pointer_field_mut(3).clear(); + self.builder.reborrow().get_pointer_field(3).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] pub fn init_enum(mut self, ) -> crate::schema_capnp::node::enum_::Builder<'a> { self.builder.set_data_field::(6, 2); - self.builder.get_pointer_field_mut(3).clear(); + self.builder.reborrow().get_pointer_field(3).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] pub fn init_interface(mut self, ) -> crate::schema_capnp::node::interface::Builder<'a> { self.builder.set_data_field::(6, 3); - self.builder.get_pointer_field_mut(3).clear(); - self.builder.get_pointer_field_mut(4).clear(); + self.builder.reborrow().get_pointer_field(3).clear(); + self.builder.reborrow().get_pointer_field(4).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] pub fn init_const(mut self, ) -> crate::schema_capnp::node::const_::Builder<'a> { self.builder.set_data_field::(6, 4); - self.builder.get_pointer_field_mut(3).clear(); - self.builder.get_pointer_field_mut(4).clear(); + self.builder.reborrow().get_pointer_field(3).clear(); + self.builder.reborrow().get_pointer_field(4).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] pub fn init_annotation(mut self, ) -> crate::schema_capnp::node::annotation::Builder<'a> { self.builder.set_data_field::(6, 5); - self.builder.get_pointer_field_mut(3).clear(); + self.builder.reborrow().get_pointer_field(3).clear(); self.builder.set_bool_field(112, false); self.builder.set_bool_field(113, false); self.builder.set_bool_field(114, false); @@ -314,7 +314,7 @@ pub mod node { } #[inline] pub fn set_parameters(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::parameter::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(5), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(5), value, false) } #[inline] pub fn init_parameters(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::parameter::Owned> { @@ -499,7 +499,7 @@ pub mod node { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -635,7 +635,7 @@ pub mod node { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -795,7 +795,7 @@ pub mod node { } #[inline] pub fn set_doc_comment(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_doc_comment(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -811,7 +811,7 @@ pub mod node { } #[inline] pub fn set_members(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::source_info::member::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_members(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::source_info::member::Owned> { @@ -942,7 +942,7 @@ pub mod node { } #[inline] pub fn set_doc_comment(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_doc_comment(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -1147,7 +1147,7 @@ pub mod node { } #[inline] pub fn set_fields(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::field::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_fields(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::field::Owned> { @@ -1279,7 +1279,7 @@ pub mod node { } #[inline] pub fn set_enumerants(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::enumerant::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_enumerants(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::enumerant::Owned> { @@ -1419,7 +1419,7 @@ pub mod node { } #[inline] pub fn set_methods(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::method::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_methods(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::method::Owned> { @@ -1435,7 +1435,7 @@ pub mod node { } #[inline] pub fn set_superclasses(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::superclass::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(4), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false) } #[inline] pub fn init_superclasses(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::superclass::Owned> { @@ -1575,7 +1575,7 @@ pub mod node { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -1591,7 +1591,7 @@ pub mod node { } #[inline] pub fn set_value(&mut self, value: crate::schema_capnp::value::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(4), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false) } #[inline] pub fn init_value(self, ) -> crate::schema_capnp::value::Builder<'a> { @@ -1777,7 +1777,7 @@ pub mod node { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -2047,7 +2047,7 @@ pub mod field { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -2071,7 +2071,7 @@ pub mod field { } #[inline] pub fn set_annotations(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::annotation::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_annotations(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::annotation::Owned> { @@ -2093,8 +2093,8 @@ pub mod field { pub fn init_slot(mut self, ) -> crate::schema_capnp::field::slot::Builder<'a> { self.builder.set_data_field::(4, 0); self.builder.set_data_field::(1, 0u32); - self.builder.get_pointer_field_mut(2).clear(); - self.builder.get_pointer_field_mut(3).clear(); + self.builder.reborrow().get_pointer_field(2).clear(); + self.builder.reborrow().get_pointer_field(3).clear(); self.builder.set_bool_field(128, false); ::capnp::traits::FromStructBuilder::new(self.builder) } @@ -2285,7 +2285,7 @@ pub mod field { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(2), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -2301,7 +2301,7 @@ pub mod field { } #[inline] pub fn set_default_value(&mut self, value: crate::schema_capnp::value::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_default_value(self, ) -> crate::schema_capnp::value::Builder<'a> { @@ -2737,7 +2737,7 @@ pub mod enumerant { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -2761,7 +2761,7 @@ pub mod enumerant { } #[inline] pub fn set_annotations(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::annotation::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_annotations(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::annotation::Owned> { @@ -2905,7 +2905,7 @@ pub mod superclass { } #[inline] pub fn set_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -3084,7 +3084,7 @@ pub mod method { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -3124,7 +3124,7 @@ pub mod method { } #[inline] pub fn set_annotations(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::annotation::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_annotations(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::annotation::Owned> { @@ -3140,7 +3140,7 @@ pub mod method { } #[inline] pub fn set_param_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(2), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_param_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -3156,7 +3156,7 @@ pub mod method { } #[inline] pub fn set_result_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_result_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -3172,7 +3172,7 @@ pub mod method { } #[inline] pub fn set_implicit_parameters(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::parameter::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(4), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false) } #[inline] pub fn init_implicit_parameters(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::parameter::Owned> { @@ -3458,28 +3458,28 @@ pub mod type_ { #[inline] pub fn init_list(mut self, ) -> crate::schema_capnp::type_::list::Builder<'a> { self.builder.set_data_field::(0, 14); - self.builder.get_pointer_field_mut(0).clear(); + self.builder.reborrow().get_pointer_field(0).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] pub fn init_enum(mut self, ) -> crate::schema_capnp::type_::enum_::Builder<'a> { self.builder.set_data_field::(0, 15); self.builder.set_data_field::(1, 0u64); - self.builder.get_pointer_field_mut(0).clear(); + self.builder.reborrow().get_pointer_field(0).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] pub fn init_struct(mut self, ) -> crate::schema_capnp::type_::struct_::Builder<'a> { self.builder.set_data_field::(0, 16); self.builder.set_data_field::(1, 0u64); - self.builder.get_pointer_field_mut(0).clear(); + self.builder.reborrow().get_pointer_field(0).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] pub fn init_interface(mut self, ) -> crate::schema_capnp::type_::interface::Builder<'a> { self.builder.set_data_field::(0, 17); self.builder.set_data_field::(1, 0u64); - self.builder.get_pointer_field_mut(0).clear(); + self.builder.reborrow().get_pointer_field(0).clear(); ::capnp::traits::FromStructBuilder::new(self.builder) } #[inline] @@ -3737,7 +3737,7 @@ pub mod type_ { } #[inline] pub fn set_element_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_element_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -3884,7 +3884,7 @@ pub mod type_ { } #[inline] pub fn set_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -4031,7 +4031,7 @@ pub mod type_ { } #[inline] pub fn set_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -4178,7 +4178,7 @@ pub mod type_ { } #[inline] pub fn set_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -4930,7 +4930,7 @@ pub mod brand { } #[inline] pub fn set_scopes(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::brand::scope::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_scopes(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::brand::scope::Owned> { @@ -5085,7 +5085,7 @@ pub mod brand { #[inline] pub fn set_bind(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::brand::binding::Owned>) -> ::capnp::Result<()> { self.builder.set_data_field::(4, 0); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_bind(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::brand::binding::Owned> { @@ -5261,7 +5261,7 @@ pub mod brand { #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -5594,7 +5594,7 @@ pub mod value { #[inline] pub fn set_text(&mut self, value: ::capnp::text::Reader<'_>) { self.builder.set_data_field::(0, 12); - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_text(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -5609,7 +5609,7 @@ pub mod value { #[inline] pub fn set_data(&mut self, value: ::capnp::data::Reader<'_>) { self.builder.set_data_field::(0, 13); - self.builder.get_pointer_field_mut(0).set_data(value); + self.builder.reborrow().get_pointer_field(0).set_data(value); } #[inline] pub fn init_data(self, size: u32) -> ::capnp::data::Builder<'a> { @@ -5932,7 +5932,7 @@ pub mod annotation { } #[inline] pub fn set_value(&mut self, value: crate::schema_capnp::value::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_value(self, ) -> crate::schema_capnp::value::Builder<'a> { @@ -5948,7 +5948,7 @@ pub mod annotation { } #[inline] pub fn set_brand(&mut self, value: crate::schema_capnp::brand::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_brand(self, ) -> crate::schema_capnp::brand::Builder<'a> { @@ -6290,7 +6290,7 @@ pub mod code_generator_request { } #[inline] pub fn set_nodes(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(0), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_nodes(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::Owned> { @@ -6306,7 +6306,7 @@ pub mod code_generator_request { } #[inline] pub fn set_requested_files(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::code_generator_request::requested_file::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_requested_files(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::code_generator_request::requested_file::Owned> { @@ -6322,7 +6322,7 @@ pub mod code_generator_request { } #[inline] pub fn set_capnp_version(&mut self, value: crate::schema_capnp::capnp_version::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(2), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_capnp_version(self, ) -> crate::schema_capnp::capnp_version::Builder<'a> { @@ -6338,7 +6338,7 @@ pub mod code_generator_request { } #[inline] pub fn set_source_info(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::node::source_info::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(3), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_source_info(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::node::source_info::Owned> { @@ -6492,7 +6492,7 @@ pub mod code_generator_request { } #[inline] pub fn set_filename(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_filename(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -6508,7 +6508,7 @@ pub mod code_generator_request { } #[inline] pub fn set_imports(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::code_generator_request::requested_file::import::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field_mut(1), value, false) + ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_imports(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::code_generator_request::requested_file::import::Owned> { @@ -6651,7 +6651,7 @@ pub mod code_generator_request { } #[inline] pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field_mut(0).set_text(value); + self.builder.reborrow().get_pointer_field(0).set_text(value); } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { From 5c9e6d2809bd5db165e0ced0c24e8ab315eab947 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Mon, 16 Jan 2023 18:44:34 -0500 Subject: [PATCH 7/7] fix mutability on primitive_list::Builder::as_slice() --- capnp/src/primitive_list.rs | 9 ++++----- capnp/src/private/layout.rs | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/capnp/src/primitive_list.rs b/capnp/src/primitive_list.rs index e67a3b8c5..9fb11be33 100644 --- a/capnp/src/primitive_list.rs +++ b/capnp/src/primitive_list.rs @@ -161,13 +161,12 @@ where } #[cfg(all(target_endian = "little"))] - pub fn as_slice(&self) -> Option<&[T]> { + pub fn as_slice(&mut self) -> Option<&mut [T]> { if self.builder.get_element_size() == T::element_size() { - let bytes = self.builder.as_raw_bytes(); + let bytes = self.builder.into_raw_bytes(); Some(unsafe { - use core::slice; - slice::from_raw_parts( - bytes.as_ptr() as *const T, + core::slice::from_raw_parts_mut( + bytes.as_mut_ptr() as *mut T, 8 * bytes.len() / (data_bits_per_element(T::element_size())) as usize, ) }) diff --git a/capnp/src/private/layout.rs b/capnp/src/private/layout.rs index af2f052a5..3baebc2ac 100644 --- a/capnp/src/private/layout.rs +++ b/capnp/src/private/layout.rs @@ -4069,7 +4069,7 @@ impl<'a> ListBuilder<'a> { } } - pub(crate) fn as_raw_bytes(&self) -> &'_ [u8] { + pub(crate) fn into_raw_bytes(&self) -> &'a mut [u8] { if self.element_count == 0 { // Explictly handle this case to avoid forming a slice to a null pointer, // which would be undefined behavior. @@ -4078,7 +4078,7 @@ impl<'a> ListBuilder<'a> { let num_bytes = wire_helpers::round_bits_up_to_bytes( u64::from(self.step) * u64::from(self.element_count), ) as usize; - unsafe { ::core::slice::from_raw_parts(self.ptr, num_bytes) } + unsafe { ::core::slice::from_raw_parts_mut(self.ptr, num_bytes) } } } }