diff --git a/.lock b/.lock new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/conmon_common/all.html b/conmon_common/all.html new file mode 100644 index 0000000000..3c0af40242 --- /dev/null +++ b/conmon_common/all.html @@ -0,0 +1 @@ +List of all items in this crate

List of all items

Structs

Enums

Traits

Type Aliases

Constants

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/_private/constant.TYPE_ID.html b/conmon_common/conmon_capnp/conmon/_private/constant.TYPE_ID.html new file mode 100644 index 0000000000..954e9eb0f6 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/_private/constant.TYPE_ID.html @@ -0,0 +1 @@ +TYPE_ID in conmon_common::conmon_capnp::conmon::_private - Rust
conmon_common::conmon_capnp::conmon::_private

Constant TYPE_ID

Source
pub const TYPE_ID: u64 = 0xb737_e899_dd66_33f1;
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/_private/index.html b/conmon_common/conmon_capnp/conmon/_private/index.html new file mode 100644 index 0000000000..69bdff71be --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/_private/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::_private - Rust
conmon_common::conmon_capnp::conmon

Module _private

Source

Constants§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/_private/sidebar-items.js b/conmon_common/conmon_capnp/conmon/_private/sidebar-items.js new file mode 100644 index 0000000000..b6b1d0f3b5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/_private/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"constant":["TYPE_ID"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_params/index.html b/conmon_common/conmon_capnp/conmon/attach_container_params/index.html new file mode 100644 index 0000000000..902b2befaf --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_params/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::attach_container_params - Rust
conmon_common::conmon_capnp::conmon

Module attach_container_params

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_params/sidebar-items.js b/conmon_common/conmon_capnp/conmon/attach_container_params/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_params/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Builder.html b/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Builder.html new file mode 100644 index 0000000000..6de10c049c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::attach_container_params - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Builder<'a>>

Source

pub fn set_request(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_request(self) -> Builder<'a>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 12_263_086_877_275_565_860u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Owned.html b/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Owned.html new file mode 100644 index 0000000000..aa111a1489 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::attach_container_params - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Pipeline.html new file mode 100644 index 0000000000..d7b5f8ff3d --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::attach_container_params - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Reader.html b/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Reader.html new file mode 100644 index 0000000000..a056f16a04 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_params/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::attach_container_params - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Reader<'a>>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 12_263_086_877_275_565_860u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_results/index.html b/conmon_common/conmon_capnp/conmon/attach_container_results/index.html new file mode 100644 index 0000000000..0e7f0717e7 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_results/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::attach_container_results - Rust
conmon_common::conmon_capnp::conmon

Module attach_container_results

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_results/sidebar-items.js b/conmon_common/conmon_capnp/conmon/attach_container_results/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_results/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Builder.html b/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Builder.html new file mode 100644 index 0000000000..ba39b250b7 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::attach_container_results - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Builder<'a>>

Source

pub fn set_response(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_response(self) -> Builder<'a>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 14_260_189_638_857_546_512u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Owned.html b/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Owned.html new file mode 100644 index 0000000000..9c83de3284 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::attach_container_results - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Pipeline.html new file mode 100644 index 0000000000..4e7b83c4ed --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::attach_container_results - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Reader.html b/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Reader.html new file mode 100644 index 0000000000..d8faf530a0 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_container_results/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::attach_container_results - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Reader<'a>>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 14_260_189_638_857_546_512u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_request/index.html b/conmon_common/conmon_capnp/conmon/attach_request/index.html new file mode 100644 index 0000000000..7c5e8b9226 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_request/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::attach_request - Rust
conmon_common::conmon_capnp::conmon

Module attach_request

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_request/sidebar-items.js b/conmon_common/conmon_capnp/conmon/attach_request/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_request/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_request/struct.Builder.html b/conmon_common/conmon_capnp/conmon/attach_request/struct.Builder.html new file mode 100644 index 0000000000..1a89e33eff --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_request/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::attach_request - Rust
conmon_common::conmon_capnp::conmon::attach_request

Struct Builder

Source
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_id(self) -> Result<Builder<'a>>

Source

pub fn set_id(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_id(self, size: u32) -> Builder<'a>

Source

pub fn has_id(&self) -> bool

Source

pub fn get_socket_path(self) -> Result<Builder<'a>>

Source

pub fn set_socket_path(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_socket_path(self, size: u32) -> Builder<'a>

Source

pub fn has_socket_path(&self) -> bool

Source

pub fn get_exec_session_id(self) -> Result<Builder<'a>>

Source

pub fn set_exec_session_id(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_exec_session_id(self, size: u32) -> Builder<'a>

Source

pub fn has_exec_session_id(&self) -> bool

Source

pub fn get_stop_after_stdin_eof(self) -> bool

Source

pub fn set_stop_after_stdin_eof(&mut self, value: bool)

Source

pub fn get_metadata_old(self) -> Result<Builder<'a>>

Source

pub fn set_metadata_old(&mut self, value: Reader<'_>)

Source

pub fn init_metadata_old(self, size: u32) -> Builder<'a>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_metadata(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_metadata(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 16_100_435_328_946_158_332u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_request/struct.Owned.html b/conmon_common/conmon_capnp/conmon/attach_request/struct.Owned.html new file mode 100644 index 0000000000..81e0042655 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_request/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::attach_request - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_request/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/attach_request/struct.Pipeline.html new file mode 100644 index 0000000000..7b9c2d2a13 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_request/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::attach_request - Rust
conmon_common::conmon_capnp::conmon::attach_request

Struct Pipeline

Source
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_request/struct.Reader.html b/conmon_common/conmon_capnp/conmon/attach_request/struct.Reader.html new file mode 100644 index 0000000000..64ab9568d5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_request/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::attach_request - Rust
conmon_common::conmon_capnp::conmon::attach_request

Struct Reader

Source
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_id(self) -> Result<Reader<'a>>

Source

pub fn has_id(&self) -> bool

Source

pub fn get_socket_path(self) -> Result<Reader<'a>>

Source

pub fn has_socket_path(&self) -> bool

Source

pub fn get_exec_session_id(self) -> Result<Reader<'a>>

Source

pub fn has_exec_session_id(&self) -> bool

Source

pub fn get_stop_after_stdin_eof(self) -> bool

Source

pub fn get_metadata_old(self) -> Result<Reader<'a>>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 16_100_435_328_946_158_332u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_response/index.html b/conmon_common/conmon_capnp/conmon/attach_response/index.html new file mode 100644 index 0000000000..e20db4a221 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_response/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::attach_response - Rust
conmon_common::conmon_capnp::conmon

Module attach_response

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_response/sidebar-items.js b/conmon_common/conmon_capnp/conmon/attach_response/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_response/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_response/struct.Builder.html b/conmon_common/conmon_capnp/conmon/attach_response/struct.Builder.html new file mode 100644 index 0000000000..f81565f31d --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_response/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::attach_response - Rust
conmon_common::conmon_capnp::conmon::attach_response

Struct Builder

Source
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 12_458_453_531_567_349_879u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_response/struct.Owned.html b/conmon_common/conmon_capnp/conmon/attach_response/struct.Owned.html new file mode 100644 index 0000000000..bcd9e2bc8b --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_response/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::attach_response - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_response/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/attach_response/struct.Pipeline.html new file mode 100644 index 0000000000..ea1c9ef512 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_response/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::attach_response - Rust
conmon_common::conmon_capnp::conmon::attach_response

Struct Pipeline

Source
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/attach_response/struct.Reader.html b/conmon_common/conmon_capnp/conmon/attach_response/struct.Reader.html new file mode 100644 index 0000000000..b1dd5bf19e --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/attach_response/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::attach_response - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 12_458_453_531_567_349_879u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_params/index.html b/conmon_common/conmon_capnp/conmon/create_container_params/index.html new file mode 100644 index 0000000000..488e136a91 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_params/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::create_container_params - Rust
conmon_common::conmon_capnp::conmon

Module create_container_params

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_params/sidebar-items.js b/conmon_common/conmon_capnp/conmon/create_container_params/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_params/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_params/struct.Builder.html b/conmon_common/conmon_capnp/conmon/create_container_params/struct.Builder.html new file mode 100644 index 0000000000..c0c06af5a0 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_params/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::create_container_params - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Builder<'a>>

Source

pub fn set_request(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_request(self) -> Builder<'a>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 17_602_093_488_404_732_600u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_params/struct.Owned.html b/conmon_common/conmon_capnp/conmon/create_container_params/struct.Owned.html new file mode 100644 index 0000000000..6478c2f1b3 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_params/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::create_container_params - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_params/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/create_container_params/struct.Pipeline.html new file mode 100644 index 0000000000..cc58a3f0de --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_params/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::create_container_params - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_params/struct.Reader.html b/conmon_common/conmon_capnp/conmon/create_container_params/struct.Reader.html new file mode 100644 index 0000000000..b1fe1d2e1b --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_params/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::create_container_params - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Reader<'a>>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 17_602_093_488_404_732_600u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_request/index.html b/conmon_common/conmon_capnp/conmon/create_container_request/index.html new file mode 100644 index 0000000000..fb100a95fd --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_request/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::create_container_request - Rust
conmon_common::conmon_capnp::conmon

Module create_container_request

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_request/sidebar-items.js b/conmon_common/conmon_capnp/conmon/create_container_request/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_request/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_request/struct.Builder.html b/conmon_common/conmon_capnp/conmon/create_container_request/struct.Builder.html new file mode 100644 index 0000000000..56475f68c2 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_request/struct.Builder.html @@ -0,0 +1,23 @@ +Builder in conmon_common::conmon_capnp::conmon::create_container_request - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_id(self) -> Result<Builder<'a>>

Source

pub fn set_id(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_id(self, size: u32) -> Builder<'a>

Source

pub fn has_id(&self) -> bool

Source

pub fn get_bundle_path(self) -> Result<Builder<'a>>

Source

pub fn set_bundle_path(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_bundle_path(self, size: u32) -> Builder<'a>

Source

pub fn has_bundle_path(&self) -> bool

Source

pub fn get_terminal(self) -> bool

Source

pub fn set_terminal(&mut self, value: bool)

Source

pub fn get_stdin(self) -> bool

Source

pub fn set_stdin(&mut self, value: bool)

Source

pub fn get_exit_paths(self) -> Result<Builder<'a>>

Source

pub fn set_exit_paths(&mut self, value: impl SetterInput<Owned>) -> Result<()>

Source

pub fn init_exit_paths(self, size: u32) -> Builder<'a>

Source

pub fn has_exit_paths(&self) -> bool

Source

pub fn get_oom_exit_paths(self) -> Result<Builder<'a>>

Source

pub fn set_oom_exit_paths( + &mut self, + value: impl SetterInput<Owned>, +) -> Result<()>

Source

pub fn init_oom_exit_paths(self, size: u32) -> Builder<'a>

Source

pub fn has_oom_exit_paths(&self) -> bool

Source

pub fn get_log_drivers(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_log_drivers(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_log_drivers(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_log_drivers(&self) -> bool

Source

pub fn get_cleanup_cmd(self) -> Result<Builder<'a>>

Source

pub fn set_cleanup_cmd(&mut self, value: impl SetterInput<Owned>) -> Result<()>

Source

pub fn init_cleanup_cmd(self, size: u32) -> Builder<'a>

Source

pub fn has_cleanup_cmd(&self) -> bool

Source

pub fn get_global_args(self) -> Result<Builder<'a>>

Source

pub fn set_global_args(&mut self, value: impl SetterInput<Owned>) -> Result<()>

Source

pub fn init_global_args(self, size: u32) -> Builder<'a>

Source

pub fn has_global_args(&self) -> bool

Source

pub fn get_command_args(self) -> Result<Builder<'a>>

Source

pub fn set_command_args(&mut self, value: impl SetterInput<Owned>) -> Result<()>

Source

pub fn init_command_args(self, size: u32) -> Builder<'a>

Source

pub fn has_command_args(&self) -> bool

Source

pub fn get_metadata_old(self) -> Result<Builder<'a>>

Source

pub fn set_metadata_old(&mut self, value: Reader<'_>)

Source

pub fn init_metadata_old(self, size: u32) -> Builder<'a>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_metadata(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_metadata(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_metadata(&self) -> bool

Source

pub fn get_env_vars(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_env_vars(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_env_vars(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_env_vars(&self) -> bool

Source

pub fn get_cgroup_manager(self) -> Result<CgroupManager, NotInSchema>

Source

pub fn set_cgroup_manager(&mut self, value: CgroupManager)

Source

pub fn get_additional_fds(self) -> Result<Builder<'a, u64>>

Source

pub fn set_additional_fds( + &mut self, + value: impl SetterInput<Owned<u64>>, +) -> Result<()>

Source

pub fn init_additional_fds(self, size: u32) -> Builder<'a, u64>

Source

pub fn has_additional_fds(&self) -> bool

Source

pub fn get_leak_fds(self) -> Result<Builder<'a, u64>>

Source

pub fn set_leak_fds( + &mut self, + value: impl SetterInput<Owned<u64>>, +) -> Result<()>

Source

pub fn init_leak_fds(self, size: u32) -> Builder<'a, u64>

Source

pub fn has_leak_fds(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 13_436_458_677_148_694_218u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_request/struct.Owned.html b/conmon_common/conmon_capnp/conmon/create_container_request/struct.Owned.html new file mode 100644 index 0000000000..44a580b7df --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_request/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::create_container_request - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_request/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/create_container_request/struct.Pipeline.html new file mode 100644 index 0000000000..df359830c6 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_request/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::create_container_request - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_request/struct.Reader.html b/conmon_common/conmon_capnp/conmon/create_container_request/struct.Reader.html new file mode 100644 index 0000000000..3759b948f0 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_request/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::create_container_request - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_id(self) -> Result<Reader<'a>>

Source

pub fn has_id(&self) -> bool

Source

pub fn get_bundle_path(self) -> Result<Reader<'a>>

Source

pub fn has_bundle_path(&self) -> bool

Source

pub fn get_terminal(self) -> bool

Source

pub fn get_stdin(self) -> bool

Source

pub fn get_exit_paths(self) -> Result<Reader<'a>>

Source

pub fn has_exit_paths(&self) -> bool

Source

pub fn get_oom_exit_paths(self) -> Result<Reader<'a>>

Source

pub fn has_oom_exit_paths(&self) -> bool

Source

pub fn get_log_drivers(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_log_drivers(&self) -> bool

Source

pub fn get_cleanup_cmd(self) -> Result<Reader<'a>>

Source

pub fn has_cleanup_cmd(&self) -> bool

Source

pub fn get_global_args(self) -> Result<Reader<'a>>

Source

pub fn has_global_args(&self) -> bool

Source

pub fn get_command_args(self) -> Result<Reader<'a>>

Source

pub fn has_command_args(&self) -> bool

Source

pub fn get_metadata_old(self) -> Result<Reader<'a>>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_metadata(&self) -> bool

Source

pub fn get_env_vars(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_env_vars(&self) -> bool

Source

pub fn get_cgroup_manager(self) -> Result<CgroupManager, NotInSchema>

Source

pub fn get_additional_fds(self) -> Result<Reader<'a, u64>>

Source

pub fn has_additional_fds(&self) -> bool

Source

pub fn get_leak_fds(self) -> Result<Reader<'a, u64>>

Source

pub fn has_leak_fds(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 13_436_458_677_148_694_218u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_response/index.html b/conmon_common/conmon_capnp/conmon/create_container_response/index.html new file mode 100644 index 0000000000..133f9d90e8 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_response/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::create_container_response - Rust
conmon_common::conmon_capnp::conmon

Module create_container_response

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_response/sidebar-items.js b/conmon_common/conmon_capnp/conmon/create_container_response/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_response/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_response/struct.Builder.html b/conmon_common/conmon_capnp/conmon/create_container_response/struct.Builder.html new file mode 100644 index 0000000000..3837e1f54b --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_response/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::create_container_response - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_container_pid(self) -> u32

Source

pub fn set_container_pid(&mut self, value: u32)

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 16_013_219_582_822_525_850u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_response/struct.Owned.html b/conmon_common/conmon_capnp/conmon/create_container_response/struct.Owned.html new file mode 100644 index 0000000000..823c4bba66 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_response/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::create_container_response - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_response/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/create_container_response/struct.Pipeline.html new file mode 100644 index 0000000000..b67f019ebe --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_response/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::create_container_response - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_response/struct.Reader.html b/conmon_common/conmon_capnp/conmon/create_container_response/struct.Reader.html new file mode 100644 index 0000000000..eab8dbf9bc --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_response/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::create_container_response - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_container_pid(self) -> u32

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 16_013_219_582_822_525_850u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_results/index.html b/conmon_common/conmon_capnp/conmon/create_container_results/index.html new file mode 100644 index 0000000000..8ed2c1f579 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_results/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::create_container_results - Rust
conmon_common::conmon_capnp::conmon

Module create_container_results

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_results/sidebar-items.js b/conmon_common/conmon_capnp/conmon/create_container_results/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_results/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_results/struct.Builder.html b/conmon_common/conmon_capnp/conmon/create_container_results/struct.Builder.html new file mode 100644 index 0000000000..13827efdad --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_results/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::create_container_results - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Builder<'a>>

Source

pub fn set_response(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_response(self) -> Builder<'a>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 14_896_284_802_393_970_168u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_results/struct.Owned.html b/conmon_common/conmon_capnp/conmon/create_container_results/struct.Owned.html new file mode 100644 index 0000000000..10dda59220 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_results/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::create_container_results - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_results/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/create_container_results/struct.Pipeline.html new file mode 100644 index 0000000000..5813464b6c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_results/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::create_container_results - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_container_results/struct.Reader.html b/conmon_common/conmon_capnp/conmon/create_container_results/struct.Reader.html new file mode 100644 index 0000000000..dffe194d70 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_container_results/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::create_container_results - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Reader<'a>>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 14_896_284_802_393_970_168u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_params/index.html b/conmon_common/conmon_capnp/conmon/create_namespaces_params/index.html new file mode 100644 index 0000000000..d33e4a4450 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_params/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::create_namespaces_params - Rust
conmon_common::conmon_capnp::conmon

Module create_namespaces_params

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_params/sidebar-items.js b/conmon_common/conmon_capnp/conmon/create_namespaces_params/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_params/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Builder.html b/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Builder.html new file mode 100644 index 0000000000..745a46aba7 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::create_namespaces_params - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Builder<'a>>

Source

pub fn set_request(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_request(self) -> Builder<'a>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 10_037_401_656_945_686_748u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Owned.html b/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Owned.html new file mode 100644 index 0000000000..8be5929085 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::create_namespaces_params - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Pipeline.html new file mode 100644 index 0000000000..31ec9d08bf --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::create_namespaces_params - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Reader.html b/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Reader.html new file mode 100644 index 0000000000..429cca9b9d --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_params/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::create_namespaces_params - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Reader<'a>>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 10_037_401_656_945_686_748u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_request/index.html b/conmon_common/conmon_capnp/conmon/create_namespaces_request/index.html new file mode 100644 index 0000000000..a94103364c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_request/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::create_namespaces_request - Rust
conmon_common::conmon_capnp::conmon

Module create_namespaces_request

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_request/sidebar-items.js b/conmon_common/conmon_capnp/conmon/create_namespaces_request/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_request/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Builder.html b/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Builder.html new file mode 100644 index 0000000000..8fb83c534c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Builder.html @@ -0,0 +1,17 @@ +Builder in conmon_common::conmon_capnp::conmon::create_namespaces_request - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_metadata_old(self) -> Result<Builder<'a>>

Source

pub fn set_metadata_old(&mut self, value: Reader<'_>)

Source

pub fn init_metadata_old(self, size: u32) -> Builder<'a>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_namespaces(self) -> Result<Builder<'a, Namespace>>

Source

pub fn set_namespaces( + &mut self, + value: impl SetterInput<Owned<Namespace>>, +) -> Result<()>

Source

pub fn init_namespaces(self, size: u32) -> Builder<'a, Namespace>

Source

pub fn has_namespaces(&self) -> bool

Source

pub fn get_uid_mappings(self) -> Result<Builder<'a>>

Source

pub fn set_uid_mappings(&mut self, value: impl SetterInput<Owned>) -> Result<()>

Source

pub fn init_uid_mappings(self, size: u32) -> Builder<'a>

Source

pub fn has_uid_mappings(&self) -> bool

Source

pub fn get_gid_mappings(self) -> Result<Builder<'a>>

Source

pub fn set_gid_mappings(&mut self, value: impl SetterInput<Owned>) -> Result<()>

Source

pub fn init_gid_mappings(self, size: u32) -> Builder<'a>

Source

pub fn has_gid_mappings(&self) -> bool

Source

pub fn get_base_path(self) -> Result<Builder<'a>>

Source

pub fn set_base_path(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_base_path(self, size: u32) -> Builder<'a>

Source

pub fn has_base_path(&self) -> bool

Source

pub fn get_pod_id(self) -> Result<Builder<'a>>

Source

pub fn set_pod_id(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_pod_id(self, size: u32) -> Builder<'a>

Source

pub fn has_pod_id(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_metadata(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_metadata(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 10_041_644_617_252_692_094u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Owned.html b/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Owned.html new file mode 100644 index 0000000000..88585c406b --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::create_namespaces_request - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Pipeline.html new file mode 100644 index 0000000000..b746b46051 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::create_namespaces_request - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Reader.html b/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Reader.html new file mode 100644 index 0000000000..3be56349a3 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_request/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::create_namespaces_request - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_metadata_old(self) -> Result<Reader<'a>>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_namespaces(self) -> Result<Reader<'a, Namespace>>

Source

pub fn has_namespaces(&self) -> bool

Source

pub fn get_uid_mappings(self) -> Result<Reader<'a>>

Source

pub fn has_uid_mappings(&self) -> bool

Source

pub fn get_gid_mappings(self) -> Result<Reader<'a>>

Source

pub fn has_gid_mappings(&self) -> bool

Source

pub fn get_base_path(self) -> Result<Reader<'a>>

Source

pub fn has_base_path(&self) -> bool

Source

pub fn get_pod_id(self) -> Result<Reader<'a>>

Source

pub fn has_pod_id(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 10_041_644_617_252_692_094u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_response/index.html b/conmon_common/conmon_capnp/conmon/create_namespaces_response/index.html new file mode 100644 index 0000000000..41515efb72 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_response/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::create_namespaces_response - Rust
conmon_common::conmon_capnp::conmon

Module create_namespaces_response

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_response/sidebar-items.js b/conmon_common/conmon_capnp/conmon/create_namespaces_response/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_response/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Builder.html b/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Builder.html new file mode 100644 index 0000000000..24d2bc874a --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::create_namespaces_response - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_namespaces(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_namespaces(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_namespaces(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_namespaces(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 10_990_936_000_443_326_155u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Owned.html b/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Owned.html new file mode 100644 index 0000000000..6391c042a9 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::create_namespaces_response - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Pipeline.html new file mode 100644 index 0000000000..c61d619e7c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::create_namespaces_response - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Reader.html b/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Reader.html new file mode 100644 index 0000000000..1231b7efaf --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_response/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::create_namespaces_response - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_namespaces(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_namespaces(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 10_990_936_000_443_326_155u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_results/index.html b/conmon_common/conmon_capnp/conmon/create_namespaces_results/index.html new file mode 100644 index 0000000000..8e09f3761a --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_results/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::create_namespaces_results - Rust
conmon_common::conmon_capnp::conmon

Module create_namespaces_results

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_results/sidebar-items.js b/conmon_common/conmon_capnp/conmon/create_namespaces_results/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_results/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Builder.html b/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Builder.html new file mode 100644 index 0000000000..42f02278bc --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::create_namespaces_results - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Builder<'a>>

Source

pub fn set_response(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_response(self) -> Builder<'a>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 10_011_380_575_430_550_773u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Owned.html b/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Owned.html new file mode 100644 index 0000000000..61f9e61f7a --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::create_namespaces_results - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Pipeline.html new file mode 100644 index 0000000000..0ee5238c71 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::create_namespaces_results - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Reader.html b/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Reader.html new file mode 100644 index 0000000000..7e140e9db7 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/create_namespaces_results/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::create_namespaces_results - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Reader<'a>>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 10_011_380_575_430_550_773u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/enum.CgroupManager.html b/conmon_common/conmon_capnp/conmon/enum.CgroupManager.html new file mode 100644 index 0000000000..2cd53c47cf --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/enum.CgroupManager.html @@ -0,0 +1,17 @@ +CgroupManager in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Enum CgroupManager

Source
#[repr(u16)]
pub enum CgroupManager { + Systemd = 0, + Cgroupfs = 1, +}

Variants§

§

Systemd = 0

§

Cgroupfs = 1

Trait Implementations§

Source§

impl Clone for CgroupManager

Source§

fn clone(&self) -> CgroupManager

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CgroupManager

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> From<CgroupManager> for Reader<'a>

Source§

fn from(e: CgroupManager) -> Self

Converts to this type from the input type.
Source§

impl From<CgroupManager> for u16

Source§

fn from(x: CgroupManager) -> u16

Converts to this type from the input type.
Source§

impl HasTypeId for CgroupManager

Source§

const TYPE_ID: u64 = 12_271_106_948_453_476_234u64

Source§

impl Introspect for CgroupManager

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl PartialEq for CgroupManager

Source§

fn eq(&self, other: &CgroupManager) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
Source§

impl TryFrom<u16> for CgroupManager

Source§

type Error = NotInSchema

The type returned in the event of a conversion error.
Source§

fn try_from(value: u16) -> Result<Self, <CgroupManager as TryFrom<u16>>::Error>

Performs the conversion.
Source§

impl Copy for CgroupManager

Source§

impl Eq for CgroupManager

Source§

impl StructuralPartialEq for CgroupManager

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/enum.Namespace.html b/conmon_common/conmon_capnp/conmon/enum.Namespace.html new file mode 100644 index 0000000000..be8001ecba --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/enum.Namespace.html @@ -0,0 +1,20 @@ +Namespace in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Enum Namespace

Source
#[repr(u16)]
pub enum Namespace { + Ipc = 0, + Net = 1, + Pid = 2, + User = 3, + Uts = 4, +}

Variants§

§

Ipc = 0

§

Net = 1

§

Pid = 2

§

User = 3

§

Uts = 4

Trait Implementations§

Source§

impl Clone for Namespace

Source§

fn clone(&self) -> Namespace

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Namespace

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Namespace> for Reader<'a>

Source§

fn from(e: Namespace) -> Self

Converts to this type from the input type.
Source§

impl From<Namespace> for u16

Source§

fn from(x: Namespace) -> u16

Converts to this type from the input type.
Source§

impl HasTypeId for Namespace

Source§

const TYPE_ID: u64 = 15_426_114_831_847_584_675u64

Source§

impl Introspect for Namespace

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl PartialEq for Namespace

Source§

fn eq(&self, other: &Namespace) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
Source§

impl TryFrom<u16> for Namespace

Source§

type Error = NotInSchema

The type returned in the event of a conversion error.
Source§

fn try_from(value: u16) -> Result<Self, <Namespace as TryFrom<u16>>::Error>

Performs the conversion.
Source§

impl Copy for Namespace

Source§

impl Eq for Namespace

Source§

impl StructuralPartialEq for Namespace

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_params/index.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/index.html new file mode 100644 index 0000000000..1d58187ff2 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::exec_sync_container_params - Rust
conmon_common::conmon_capnp::conmon

Module exec_sync_container_params

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_params/sidebar-items.js b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Builder.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Builder.html new file mode 100644 index 0000000000..17a43e8ae4 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::exec_sync_container_params - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Builder<'a>>

Source

pub fn set_request(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_request(self) -> Builder<'a>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 9_459_702_880_525_738_355u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Owned.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Owned.html new file mode 100644 index 0000000000..8f23af9068 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::exec_sync_container_params - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Pipeline.html new file mode 100644 index 0000000000..e6527945bb --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::exec_sync_container_params - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Reader.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Reader.html new file mode 100644 index 0000000000..993c6c62a7 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_params/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::exec_sync_container_params - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Reader<'a>>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 9_459_702_880_525_738_355u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_request/index.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/index.html new file mode 100644 index 0000000000..78a2d04c9c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::exec_sync_container_request - Rust
conmon_common::conmon_capnp::conmon

Module exec_sync_container_request

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_request/sidebar-items.js b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Builder.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Builder.html new file mode 100644 index 0000000000..794370fde6 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::exec_sync_container_request - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_id(self) -> Result<Builder<'a>>

Source

pub fn set_id(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_id(self, size: u32) -> Builder<'a>

Source

pub fn has_id(&self) -> bool

Source

pub fn get_timeout_sec(self) -> u64

Source

pub fn set_timeout_sec(&mut self, value: u64)

Source

pub fn get_command(self) -> Result<Builder<'a>>

Source

pub fn set_command(&mut self, value: impl SetterInput<Owned>) -> Result<()>

Source

pub fn init_command(self, size: u32) -> Builder<'a>

Source

pub fn has_command(&self) -> bool

Source

pub fn get_terminal(self) -> bool

Source

pub fn set_terminal(&mut self, value: bool)

Source

pub fn get_metadata_old(self) -> Result<Builder<'a>>

Source

pub fn set_metadata_old(&mut self, value: Reader<'_>)

Source

pub fn init_metadata_old(self, size: u32) -> Builder<'a>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_metadata(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_metadata(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_metadata(&self) -> bool

Source

pub fn get_env_vars(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_env_vars(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_env_vars(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_env_vars(&self) -> bool

Source

pub fn get_cgroup_manager(self) -> Result<CgroupManager, NotInSchema>

Source

pub fn set_cgroup_manager(&mut self, value: CgroupManager)

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 17_586_876_470_832_361_894u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Owned.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Owned.html new file mode 100644 index 0000000000..2f53d789a7 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::exec_sync_container_request - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Pipeline.html new file mode 100644 index 0000000000..74aa72e4f2 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::exec_sync_container_request - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Reader.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Reader.html new file mode 100644 index 0000000000..aa094582a9 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_request/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::exec_sync_container_request - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_id(self) -> Result<Reader<'a>>

Source

pub fn has_id(&self) -> bool

Source

pub fn get_timeout_sec(self) -> u64

Source

pub fn get_command(self) -> Result<Reader<'a>>

Source

pub fn has_command(&self) -> bool

Source

pub fn get_terminal(self) -> bool

Source

pub fn get_metadata_old(self) -> Result<Reader<'a>>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_metadata(&self) -> bool

Source

pub fn get_env_vars(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_env_vars(&self) -> bool

Source

pub fn get_cgroup_manager(self) -> Result<CgroupManager, NotInSchema>

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 17_586_876_470_832_361_894u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_response/index.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/index.html new file mode 100644 index 0000000000..2de2406d48 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::exec_sync_container_response - Rust
conmon_common::conmon_capnp::conmon

Module exec_sync_container_response

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_response/sidebar-items.js b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Builder.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Builder.html new file mode 100644 index 0000000000..23307aac86 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::exec_sync_container_response - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_exit_code(self) -> i32

Source

pub fn set_exit_code(&mut self, value: i32)

Source

pub fn get_stdout(self) -> Result<Builder<'a>>

Source

pub fn set_stdout(&mut self, value: Reader<'_>)

Source

pub fn init_stdout(self, size: u32) -> Builder<'a>

Source

pub fn has_stdout(&self) -> bool

Source

pub fn get_stderr(self) -> Result<Builder<'a>>

Source

pub fn set_stderr(&mut self, value: Reader<'_>)

Source

pub fn init_stderr(self, size: u32) -> Builder<'a>

Source

pub fn has_stderr(&self) -> bool

Source

pub fn get_timed_out(self) -> bool

Source

pub fn set_timed_out(&mut self, value: bool)

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 15_696_765_563_789_149_692u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Owned.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Owned.html new file mode 100644 index 0000000000..3e2ece44ce --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::exec_sync_container_response - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Pipeline.html new file mode 100644 index 0000000000..946776b9f6 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::exec_sync_container_response - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Reader.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Reader.html new file mode 100644 index 0000000000..cc28b5db2d --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_response/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::exec_sync_container_response - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_exit_code(self) -> i32

Source

pub fn get_stdout(self) -> Result<Reader<'a>>

Source

pub fn has_stdout(&self) -> bool

Source

pub fn get_stderr(self) -> Result<Reader<'a>>

Source

pub fn has_stderr(&self) -> bool

Source

pub fn get_timed_out(self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 15_696_765_563_789_149_692u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_results/index.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/index.html new file mode 100644 index 0000000000..fddd32bc62 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::exec_sync_container_results - Rust
conmon_common::conmon_capnp::conmon

Module exec_sync_container_results

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_results/sidebar-items.js b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Builder.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Builder.html new file mode 100644 index 0000000000..3a950cbb6b --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::exec_sync_container_results - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Builder<'a>>

Source

pub fn set_response(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_response(self) -> Builder<'a>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 17_935_702_459_568_226_748u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Owned.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Owned.html new file mode 100644 index 0000000000..e5cf458665 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::exec_sync_container_results - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Pipeline.html new file mode 100644 index 0000000000..45117f1c8e --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::exec_sync_container_results - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Reader.html b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Reader.html new file mode 100644 index 0000000000..5e22bac1f0 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/exec_sync_container_results/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::exec_sync_container_results - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Reader<'a>>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 17_935_702_459_568_226_748u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/index.html b/conmon_common/conmon_capnp/conmon/index.html new file mode 100644 index 0000000000..bceb087b26 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp

Module conmon

Source

Modules§

Structs§

Enums§

Traits§

Type Aliases§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/log_driver/enum.Type.html b/conmon_common/conmon_capnp/conmon/log_driver/enum.Type.html new file mode 100644 index 0000000000..89b8ebb190 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/log_driver/enum.Type.html @@ -0,0 +1,18 @@ +Type in conmon_common::conmon_capnp::conmon::log_driver - Rust
#[repr(u16)]
pub enum Type { + ContainerRuntimeInterface = 0, + Json = 1, + Journald = 2, +}

Variants§

§

ContainerRuntimeInterface = 0

§

Json = 1

§

Journald = 2

Trait Implementations§

Source§

impl Clone for Type

Source§

fn clone(&self) -> Type

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Type

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Type> for Reader<'a>

Source§

fn from(e: Type) -> Self

Converts to this type from the input type.
Source§

impl From<Type> for u16

Source§

fn from(x: Type) -> u16

Converts to this type from the input type.
Source§

impl HasTypeId for Type

Source§

const TYPE_ID: u64 = 17_304_769_132_120_726_465u64

Source§

impl Introspect for Type

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl PartialEq for Type

Source§

fn eq(&self, other: &Type) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
Source§

impl TryFrom<u16> for Type

Source§

type Error = NotInSchema

The type returned in the event of a conversion error.
Source§

fn try_from(value: u16) -> Result<Self, <Type as TryFrom<u16>>::Error>

Performs the conversion.
Source§

impl Copy for Type

Source§

impl Eq for Type

Source§

impl StructuralPartialEq for Type

Auto Trait Implementations§

§

impl Freeze for Type

§

impl RefUnwindSafe for Type

§

impl Send for Type

§

impl Sync for Type

§

impl Unpin for Type

§

impl UnwindSafe for Type

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/log_driver/index.html b/conmon_common/conmon_capnp/conmon/log_driver/index.html new file mode 100644 index 0000000000..19f99d9e70 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/log_driver/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::log_driver - Rust
conmon_common::conmon_capnp::conmon

Module log_driver

Source

Structs§

Enums§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/log_driver/sidebar-items.js b/conmon_common/conmon_capnp/conmon/log_driver/sidebar-items.js new file mode 100644 index 0000000000..34a8354369 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/log_driver/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["Type"],"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/log_driver/struct.Builder.html b/conmon_common/conmon_capnp/conmon/log_driver/struct.Builder.html new file mode 100644 index 0000000000..4df316a050 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/log_driver/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::log_driver - Rust
conmon_common::conmon_capnp::conmon::log_driver

Struct Builder

Source
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_type(self) -> Result<Type, NotInSchema>

Source

pub fn set_type(&mut self, value: Type)

Source

pub fn get_path(self) -> Result<Builder<'a>>

Source

pub fn set_path(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_path(self, size: u32) -> Builder<'a>

Source

pub fn has_path(&self) -> bool

Source

pub fn get_max_size(self) -> u64

Source

pub fn set_max_size(&mut self, value: u64)

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 12_572_060_656_522_731_828u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/log_driver/struct.Owned.html b/conmon_common/conmon_capnp/conmon/log_driver/struct.Owned.html new file mode 100644 index 0000000000..74a4a8c7b4 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/log_driver/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::log_driver - Rust
conmon_common::conmon_capnp::conmon::log_driver

Struct Owned

Source
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/log_driver/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/log_driver/struct.Pipeline.html new file mode 100644 index 0000000000..081fd1e282 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/log_driver/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::log_driver - Rust
conmon_common::conmon_capnp::conmon::log_driver

Struct Pipeline

Source
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/log_driver/struct.Reader.html b/conmon_common/conmon_capnp/conmon/log_driver/struct.Reader.html new file mode 100644 index 0000000000..af5f8642bd --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/log_driver/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::log_driver - Rust
conmon_common::conmon_capnp::conmon::log_driver

Struct Reader

Source
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_type(self) -> Result<Type, NotInSchema>

Source

pub fn get_path(self) -> Result<Reader<'a>>

Source

pub fn has_path(&self) -> bool

Source

pub fn get_max_size(self) -> u64

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 12_572_060_656_522_731_828u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/namespace_response/index.html b/conmon_common/conmon_capnp/conmon/namespace_response/index.html new file mode 100644 index 0000000000..78dc62f5fe --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/namespace_response/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::namespace_response - Rust
conmon_common::conmon_capnp::conmon

Module namespace_response

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/namespace_response/sidebar-items.js b/conmon_common/conmon_capnp/conmon/namespace_response/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/namespace_response/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/namespace_response/struct.Builder.html b/conmon_common/conmon_capnp/conmon/namespace_response/struct.Builder.html new file mode 100644 index 0000000000..13110cca40 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/namespace_response/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::namespace_response - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_type(self) -> Result<Namespace, NotInSchema>

Source

pub fn set_type(&mut self, value: Namespace)

Source

pub fn get_path(self) -> Result<Builder<'a>>

Source

pub fn set_path(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_path(self, size: u32) -> Builder<'a>

Source

pub fn has_path(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 12_193_588_172_460_128_790u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/namespace_response/struct.Owned.html b/conmon_common/conmon_capnp/conmon/namespace_response/struct.Owned.html new file mode 100644 index 0000000000..76100e6e70 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/namespace_response/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::namespace_response - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/namespace_response/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/namespace_response/struct.Pipeline.html new file mode 100644 index 0000000000..72ae5a7b14 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/namespace_response/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::namespace_response - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/namespace_response/struct.Reader.html b/conmon_common/conmon_capnp/conmon/namespace_response/struct.Reader.html new file mode 100644 index 0000000000..c7e37bc22d --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/namespace_response/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::namespace_response - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_type(self) -> Result<Namespace, NotInSchema>

Source

pub fn get_path(self) -> Result<Reader<'a>>

Source

pub fn has_path(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 12_193_588_172_460_128_790u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_params/index.html b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/index.html new file mode 100644 index 0000000000..645be33495 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::reopen_log_container_params - Rust
conmon_common::conmon_capnp::conmon

Module reopen_log_container_params

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_params/sidebar-items.js b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Builder.html b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Builder.html new file mode 100644 index 0000000000..a15df02489 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::reopen_log_container_params - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Builder<'a>>

Source

pub fn set_request(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_request(self) -> Builder<'a>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 16_567_214_083_833_795_382u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Owned.html b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Owned.html new file mode 100644 index 0000000000..7ab75185e1 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::reopen_log_container_params - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Pipeline.html new file mode 100644 index 0000000000..4de6a4499c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::reopen_log_container_params - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Reader.html b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Reader.html new file mode 100644 index 0000000000..41e53b0f1a --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_params/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::reopen_log_container_params - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Reader<'a>>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 16_567_214_083_833_795_382u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_results/index.html b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/index.html new file mode 100644 index 0000000000..d870282ca2 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::reopen_log_container_results - Rust
conmon_common::conmon_capnp::conmon

Module reopen_log_container_results

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_results/sidebar-items.js b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Builder.html b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Builder.html new file mode 100644 index 0000000000..00921d381b --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::reopen_log_container_results - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Builder<'a>>

Source

pub fn set_response(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_response(self) -> Builder<'a>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 11_596_631_969_656_400_261u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Owned.html b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Owned.html new file mode 100644 index 0000000000..5decb46e44 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::reopen_log_container_results - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Pipeline.html new file mode 100644 index 0000000000..9ec3513d72 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::reopen_log_container_results - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Reader.html b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Reader.html new file mode 100644 index 0000000000..71eb6c67e5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_container_results/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::reopen_log_container_results - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Reader<'a>>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 11_596_631_969_656_400_261u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_request/index.html b/conmon_common/conmon_capnp/conmon/reopen_log_request/index.html new file mode 100644 index 0000000000..c4b0991809 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_request/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::reopen_log_request - Rust
conmon_common::conmon_capnp::conmon

Module reopen_log_request

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_request/sidebar-items.js b/conmon_common/conmon_capnp/conmon/reopen_log_request/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_request/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Builder.html b/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Builder.html new file mode 100644 index 0000000000..be2348415b --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::reopen_log_request - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_id(self) -> Result<Builder<'a>>

Source

pub fn set_id(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_id(self, size: u32) -> Builder<'a>

Source

pub fn has_id(&self) -> bool

Source

pub fn get_metadata_old(self) -> Result<Builder<'a>>

Source

pub fn set_metadata_old(&mut self, value: Reader<'_>)

Source

pub fn init_metadata_old(self, size: u32) -> Builder<'a>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_metadata(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_metadata(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 15_008_085_294_825_160_986u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Owned.html b/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Owned.html new file mode 100644 index 0000000000..15c459a1cc --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::reopen_log_request - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Pipeline.html new file mode 100644 index 0000000000..7b2e5ab4ab --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::reopen_log_request - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Reader.html b/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Reader.html new file mode 100644 index 0000000000..7765a9482d --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_request/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::reopen_log_request - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_id(self) -> Result<Reader<'a>>

Source

pub fn has_id(&self) -> bool

Source

pub fn get_metadata_old(self) -> Result<Reader<'a>>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 15_008_085_294_825_160_986u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_response/index.html b/conmon_common/conmon_capnp/conmon/reopen_log_response/index.html new file mode 100644 index 0000000000..df4629528f --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_response/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::reopen_log_response - Rust
conmon_common::conmon_capnp::conmon

Module reopen_log_response

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_response/sidebar-items.js b/conmon_common/conmon_capnp/conmon/reopen_log_response/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_response/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Builder.html b/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Builder.html new file mode 100644 index 0000000000..2dedb5c7c8 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::reopen_log_response - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 11_677_632_921_306_946_457u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Owned.html b/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Owned.html new file mode 100644 index 0000000000..d065fefb3f --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::reopen_log_response - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Pipeline.html new file mode 100644 index 0000000000..0adb3381d5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::reopen_log_response - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Reader.html b/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Reader.html new file mode 100644 index 0000000000..596221f353 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/reopen_log_response/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::reopen_log_response - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 11_677_632_921_306_946_457u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_params/index.html b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/index.html new file mode 100644 index 0000000000..fd24f55b57 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::set_window_size_container_params - Rust
conmon_common::conmon_capnp::conmon

Module set_window_size_container_params

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_params/sidebar-items.js b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Builder.html b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Builder.html new file mode 100644 index 0000000000..db339ea09b --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::set_window_size_container_params - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Builder<'a>>

Source

pub fn set_request(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_request(self) -> Builder<'a>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 14_370_086_207_314_682_343u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Owned.html b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Owned.html new file mode 100644 index 0000000000..db043a3497 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::set_window_size_container_params - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Pipeline.html new file mode 100644 index 0000000000..140a56ed4e --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::set_window_size_container_params - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Reader.html b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Reader.html new file mode 100644 index 0000000000..1adb7643a8 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_params/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::set_window_size_container_params - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Reader<'a>>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 14_370_086_207_314_682_343u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_results/index.html b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/index.html new file mode 100644 index 0000000000..a663cb216a --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::set_window_size_container_results - Rust
conmon_common::conmon_capnp::conmon

Module set_window_size_container_results

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_results/sidebar-items.js b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Builder.html b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Builder.html new file mode 100644 index 0000000000..851eadb058 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::set_window_size_container_results - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Builder<'a>>

Source

pub fn set_response(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_response(self) -> Builder<'a>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 16_144_932_037_621_936_213u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Owned.html b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Owned.html new file mode 100644 index 0000000000..88d58ecaec --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::set_window_size_container_results - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Pipeline.html new file mode 100644 index 0000000000..03fe4fdd95 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::set_window_size_container_results - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Reader.html b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Reader.html new file mode 100644 index 0000000000..47c6a43b23 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_container_results/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::set_window_size_container_results - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Reader<'a>>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 16_144_932_037_621_936_213u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_request/index.html b/conmon_common/conmon_capnp/conmon/set_window_size_request/index.html new file mode 100644 index 0000000000..bf69d40a6e --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_request/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::set_window_size_request - Rust
conmon_common::conmon_capnp::conmon

Module set_window_size_request

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_request/sidebar-items.js b/conmon_common/conmon_capnp/conmon/set_window_size_request/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_request/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Builder.html b/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Builder.html new file mode 100644 index 0000000000..1c19952383 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::set_window_size_request - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_id(self) -> Result<Builder<'a>>

Source

pub fn set_id(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_id(self, size: u32) -> Builder<'a>

Source

pub fn has_id(&self) -> bool

Source

pub fn get_width(self) -> u16

Source

pub fn set_width(&mut self, value: u16)

Source

pub fn get_height(self) -> u16

Source

pub fn set_height(&mut self, value: u16)

Source

pub fn get_metadata_old(self) -> Result<Builder<'a>>

Source

pub fn set_metadata_old(&mut self, value: Reader<'_>)

Source

pub fn init_metadata_old(self, size: u32) -> Builder<'a>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_metadata(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_metadata(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 13_060_873_839_186_727_291u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Owned.html b/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Owned.html new file mode 100644 index 0000000000..1f6efe5df9 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::set_window_size_request - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Pipeline.html new file mode 100644 index 0000000000..6efdffe8c8 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::set_window_size_request - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Reader.html b/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Reader.html new file mode 100644 index 0000000000..2c2d89d8aa --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_request/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::set_window_size_request - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_id(self) -> Result<Reader<'a>>

Source

pub fn has_id(&self) -> bool

Source

pub fn get_width(self) -> u16

Source

pub fn get_height(self) -> u16

Source

pub fn get_metadata_old(self) -> Result<Reader<'a>>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 13_060_873_839_186_727_291u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_response/index.html b/conmon_common/conmon_capnp/conmon/set_window_size_response/index.html new file mode 100644 index 0000000000..46c4dd44ad --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_response/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::set_window_size_response - Rust
conmon_common::conmon_capnp::conmon

Module set_window_size_response

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_response/sidebar-items.js b/conmon_common/conmon_capnp/conmon/set_window_size_response/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_response/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Builder.html b/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Builder.html new file mode 100644 index 0000000000..fcea65ce4f --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::set_window_size_response - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 17_992_950_886_781_657_592u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Owned.html b/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Owned.html new file mode 100644 index 0000000000..a68adf1c22 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::set_window_size_response - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Pipeline.html new file mode 100644 index 0000000000..bcea01b2b0 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::set_window_size_response - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Reader.html b/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Reader.html new file mode 100644 index 0000000000..03bee53d67 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/set_window_size_response/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::set_window_size_response - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 17_992_950_886_781_657_592u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/sidebar-items.js b/conmon_common/conmon_capnp/conmon/sidebar-items.js new file mode 100644 index 0000000000..8d0fe83a5f --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["CgroupManager","Namespace"],"mod":["_private","attach_container_params","attach_container_results","attach_request","attach_response","create_container_params","create_container_request","create_container_response","create_container_results","create_namespaces_params","create_namespaces_request","create_namespaces_response","create_namespaces_results","exec_sync_container_params","exec_sync_container_request","exec_sync_container_response","exec_sync_container_results","log_driver","namespace_response","reopen_log_container_params","reopen_log_container_results","reopen_log_request","reopen_log_response","set_window_size_container_params","set_window_size_container_results","set_window_size_request","set_window_size_response","start_fd_socket_params","start_fd_socket_request","start_fd_socket_response","start_fd_socket_results","text_text_map_entry","version_params","version_request","version_response","version_results"],"struct":["Client","Owned","ServerDispatch"],"trait":["Server"],"type":["AttachContainerParams","AttachContainerResults","CreateContainerParams","CreateContainerResults","CreateNamespacesParams","CreateNamespacesResults","ExecSyncContainerParams","ExecSyncContainerResults","ReopenLogContainerParams","ReopenLogContainerResults","SetWindowSizeContainerParams","SetWindowSizeContainerResults","StartFdSocketParams","StartFdSocketResults","VersionParams","VersionResults"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_params/index.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/index.html new file mode 100644 index 0000000000..fa11d78e5c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::start_fd_socket_params - Rust
conmon_common::conmon_capnp::conmon

Module start_fd_socket_params

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_params/sidebar-items.js b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Builder.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Builder.html new file mode 100644 index 0000000000..6581d47f92 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::start_fd_socket_params - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Builder<'a>>

Source

pub fn set_request(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_request(self) -> Builder<'a>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 14_876_303_302_370_790_251u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Owned.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Owned.html new file mode 100644 index 0000000000..1dbf87cc67 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::start_fd_socket_params - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Pipeline.html new file mode 100644 index 0000000000..b7c8bbb5af --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::start_fd_socket_params - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Reader.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Reader.html new file mode 100644 index 0000000000..c04526dacb --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_params/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::start_fd_socket_params - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Reader<'a>>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 14_876_303_302_370_790_251u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_request/index.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/index.html new file mode 100644 index 0000000000..7842a0e546 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::start_fd_socket_request - Rust
conmon_common::conmon_capnp::conmon

Module start_fd_socket_request

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_request/sidebar-items.js b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Builder.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Builder.html new file mode 100644 index 0000000000..a99af090c9 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::start_fd_socket_request - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_metadata(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_metadata(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_metadata(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 13_426_263_513_224_506_409u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Owned.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Owned.html new file mode 100644 index 0000000000..5da148b141 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::start_fd_socket_request - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Pipeline.html new file mode 100644 index 0000000000..34f812b3e1 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::start_fd_socket_request - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Reader.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Reader.html new file mode 100644 index 0000000000..a1b519fe0d --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_request/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::start_fd_socket_request - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_metadata(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 13_426_263_513_224_506_409u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_response/index.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/index.html new file mode 100644 index 0000000000..6e42070da0 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::start_fd_socket_response - Rust
conmon_common::conmon_capnp::conmon

Module start_fd_socket_response

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_response/sidebar-items.js b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Builder.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Builder.html new file mode 100644 index 0000000000..05143f48cf --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::start_fd_socket_response - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_path(self) -> Result<Builder<'a>>

Source

pub fn set_path(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_path(self, size: u32) -> Builder<'a>

Source

pub fn has_path(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 13_127_783_517_132_218_371u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Owned.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Owned.html new file mode 100644 index 0000000000..b4fab73bcf --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::start_fd_socket_response - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Pipeline.html new file mode 100644 index 0000000000..f48cc39a86 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::start_fd_socket_response - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Reader.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Reader.html new file mode 100644 index 0000000000..75c818db51 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_response/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::start_fd_socket_response - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_path(self) -> Result<Reader<'a>>

Source

pub fn has_path(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 13_127_783_517_132_218_371u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_results/index.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/index.html new file mode 100644 index 0000000000..b7ddfb12f2 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::start_fd_socket_results - Rust
conmon_common::conmon_capnp::conmon

Module start_fd_socket_results

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_results/sidebar-items.js b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Builder.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Builder.html new file mode 100644 index 0000000000..6613309c98 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::start_fd_socket_results - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Builder<'a>>

Source

pub fn set_response(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_response(self) -> Builder<'a>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 17_646_204_135_332_208_405u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Owned.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Owned.html new file mode 100644 index 0000000000..9cba3a65ce --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::start_fd_socket_results - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Pipeline.html new file mode 100644 index 0000000000..89e344bd13 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::start_fd_socket_results - Rust
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Reader.html b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Reader.html new file mode 100644 index 0000000000..6cba479f65 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/start_fd_socket_results/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::start_fd_socket_results - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Reader<'a>>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 17_646_204_135_332_208_405u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/struct.Client.html b/conmon_common/conmon_capnp/conmon/struct.Client.html new file mode 100644 index 0000000000..02516eed20 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/struct.Client.html @@ -0,0 +1,30 @@ +Client in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Struct Client

Source
pub struct Client {
+    pub client: Client,
+}

Fields§

§client: Client

Implementations§

Source§

impl Client

Source

pub fn version_request(&self) -> Request<Owned, Owned>

Source

pub fn create_container_request(&self) -> Request<Owned, Owned>

Source

pub fn exec_sync_container_request(&self) -> Request<Owned, Owned>

Source

pub fn attach_container_request(&self) -> Request<Owned, Owned>

Source

pub fn reopen_log_container_request(&self) -> Request<Owned, Owned>

Source

pub fn set_window_size_container_request(&self) -> Request<Owned, Owned>

Source

pub fn create_namespaces_request(&self) -> Request<Owned, Owned>

Source

pub fn start_fd_socket_request(&self) -> Request<Owned, Owned>

Trait Implementations§

Source§

impl Clone for Client

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl FromClientHook for Client

Source§

fn new(hook: Box<dyn ClientHook>) -> Self

Wraps a client hook to create a new client.
Source§

fn into_client_hook(self) -> Box<dyn ClientHook>

Unwraps client to get the underlying client hook.
Source§

fn as_client_hook(&self) -> &dyn ClientHook

Gets a reference to the underlying client hook.
§

fn cast_to<T>(self) -> T
where + T: FromClientHook, + Self: Sized,

Casts self to another instance of FromClientHook. This always succeeds, +but if the underlying capability does not actually implement T’s interface, +then method calls will fail with “unimplemented” errors.
Source§

impl<'a> FromPointerBuilder<'a> for Client

Source§

fn init_pointer(_builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + _default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> FromPointerReader<'a> for Client

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + _default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<_S: Server + 'static> FromServer<_S> for Client

Source§

impl HasTypeId for Client

Source§

const TYPE_ID: u64 = 13_202_276_580_202_001_393u64

Source§

impl SetterInput<Owned> for Client

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + from: Self, + _canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more

Auto Trait Implementations§

§

impl Freeze for Client

§

impl !RefUnwindSafe for Client

§

impl !Send for Client

§

impl !Sync for Client

§

impl Unpin for Client

§

impl !UnwindSafe for Client

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/struct.Owned.html b/conmon_common/conmon_capnp/conmon/struct.Owned.html new file mode 100644 index 0000000000..23a1c139e9 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Struct Owned

Source
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

impl Pipelined for Owned

Source§

impl SetterInput<Owned> for Client

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + from: Self, + _canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/struct.ServerDispatch.html b/conmon_common/conmon_capnp/conmon/struct.ServerDispatch.html new file mode 100644 index 0000000000..02b80b6b16 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/struct.ServerDispatch.html @@ -0,0 +1,32 @@ +ServerDispatch in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Struct ServerDispatch

Source
pub struct ServerDispatch<_T> {
+    pub server: _T,
+}

Fields§

§server: _T

Implementations§

Source§

impl<_T: Server> ServerDispatch<_T>

Source

pub fn dispatch_call_internal( + server: &mut _T, + method_id: u16, + params: Params<Owned>, + results: Results<Owned>, +) -> Promise<(), Error>

Trait Implementations§

Source§

impl<_T: Server> Deref for ServerDispatch<_T>

Source§

type Target = _T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &_T

Dereferences the value.
Source§

impl<_T: Server> DerefMut for ServerDispatch<_T>

Source§

fn deref_mut(&mut self) -> &mut _T

Mutably dereferences the value.
Source§

impl<_T: Server> Server for ServerDispatch<_T>

Source§

fn dispatch_call( + &mut self, + interface_id: u64, + method_id: u16, + params: Params<Owned>, + results: Results<Owned>, +) -> Promise<(), Error>

Auto Trait Implementations§

§

impl<_T> Freeze for ServerDispatch<_T>
where + _T: Freeze,

§

impl<_T> RefUnwindSafe for ServerDispatch<_T>
where + _T: RefUnwindSafe,

§

impl<_T> Send for ServerDispatch<_T>
where + _T: Send,

§

impl<_T> Sync for ServerDispatch<_T>
where + _T: Sync,

§

impl<_T> Unpin for ServerDispatch<_T>
where + _T: Unpin,

§

impl<_T> UnwindSafe for ServerDispatch<_T>
where + _T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<P, T> Receiver for P
where + P: Deref<Target = T> + ?Sized, + T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/text_text_map_entry/index.html b/conmon_common/conmon_capnp/conmon/text_text_map_entry/index.html new file mode 100644 index 0000000000..ba7e2c944a --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/text_text_map_entry/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::text_text_map_entry - Rust
conmon_common::conmon_capnp::conmon

Module text_text_map_entry

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/text_text_map_entry/sidebar-items.js b/conmon_common/conmon_capnp/conmon/text_text_map_entry/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/text_text_map_entry/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Builder.html b/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Builder.html new file mode 100644 index 0000000000..35964d4b37 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::text_text_map_entry - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_key(self) -> Result<Builder<'a>>

Source

pub fn set_key(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_key(self, size: u32) -> Builder<'a>

Source

pub fn has_key(&self) -> bool

Source

pub fn get_value(self) -> Result<Builder<'a>>

Source

pub fn set_value(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_value(self, size: u32) -> Builder<'a>

Source

pub fn has_value(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 18_067_313_461_885_064_082u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Owned.html b/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Owned.html new file mode 100644 index 0000000000..cd3bb2a571 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::text_text_map_entry - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Pipeline.html new file mode 100644 index 0000000000..4602da0498 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::text_text_map_entry - Rust
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Reader.html b/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Reader.html new file mode 100644 index 0000000000..9b84ef78d4 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/text_text_map_entry/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::text_text_map_entry - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_key(self) -> Result<Reader<'a>>

Source

pub fn has_key(&self) -> bool

Source

pub fn get_value(self) -> Result<Reader<'a>>

Source

pub fn has_value(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 18_067_313_461_885_064_082u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/trait.Server.html b/conmon_common/conmon_capnp/conmon/trait.Server.html new file mode 100644 index 0000000000..03509a2291 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/trait.Server.html @@ -0,0 +1,71 @@ +Server in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Trait Server

Source
pub trait Server {
+    // Provided methods
+    fn version(
+        &mut self,
+        _: VersionParams,
+        _: VersionResults,
+    ) -> Promise<(), Error> { ... }
+    fn create_container(
+        &mut self,
+        _: CreateContainerParams,
+        _: CreateContainerResults,
+    ) -> Promise<(), Error> { ... }
+    fn exec_sync_container(
+        &mut self,
+        _: ExecSyncContainerParams,
+        _: ExecSyncContainerResults,
+    ) -> Promise<(), Error> { ... }
+    fn attach_container(
+        &mut self,
+        _: AttachContainerParams,
+        _: AttachContainerResults,
+    ) -> Promise<(), Error> { ... }
+    fn reopen_log_container(
+        &mut self,
+        _: ReopenLogContainerParams,
+        _: ReopenLogContainerResults,
+    ) -> Promise<(), Error> { ... }
+    fn set_window_size_container(
+        &mut self,
+        _: SetWindowSizeContainerParams,
+        _: SetWindowSizeContainerResults,
+    ) -> Promise<(), Error> { ... }
+    fn create_namespaces(
+        &mut self,
+        _: CreateNamespacesParams,
+        _: CreateNamespacesResults,
+    ) -> Promise<(), Error> { ... }
+    fn start_fd_socket(
+        &mut self,
+        _: StartFdSocketParams,
+        _: StartFdSocketResults,
+    ) -> Promise<(), Error> { ... }
+}

Provided Methods§

Source

fn version(&mut self, _: VersionParams, _: VersionResults) -> Promise<(), Error>

Source

fn create_container( + &mut self, + _: CreateContainerParams, + _: CreateContainerResults, +) -> Promise<(), Error>

Source

fn exec_sync_container( + &mut self, + _: ExecSyncContainerParams, + _: ExecSyncContainerResults, +) -> Promise<(), Error>

Source

fn attach_container( + &mut self, + _: AttachContainerParams, + _: AttachContainerResults, +) -> Promise<(), Error>

Source

fn reopen_log_container( + &mut self, + _: ReopenLogContainerParams, + _: ReopenLogContainerResults, +) -> Promise<(), Error>

Source

fn set_window_size_container( + &mut self, + _: SetWindowSizeContainerParams, + _: SetWindowSizeContainerResults, +) -> Promise<(), Error>

Source

fn create_namespaces( + &mut self, + _: CreateNamespacesParams, + _: CreateNamespacesResults, +) -> Promise<(), Error>

Source

fn start_fd_socket( + &mut self, + _: StartFdSocketParams, + _: StartFdSocketResults, +) -> Promise<(), Error>

Implementors§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.AttachContainerParams.html b/conmon_common/conmon_capnp/conmon/type.AttachContainerParams.html new file mode 100644 index 0000000000..ea7a98353c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.AttachContainerParams.html @@ -0,0 +1,4 @@ +AttachContainerParams in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias AttachContainerParams

Source
pub type AttachContainerParams = Params<Owned>;

Aliased Type§

struct AttachContainerParams {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ParamsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ParamsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.AttachContainerResults.html b/conmon_common/conmon_capnp/conmon/type.AttachContainerResults.html new file mode 100644 index 0000000000..b07d204c35 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.AttachContainerResults.html @@ -0,0 +1,4 @@ +AttachContainerResults in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias AttachContainerResults

Source
pub type AttachContainerResults = Results<Owned>;

Aliased Type§

struct AttachContainerResults {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ResultsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ResultsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.CreateContainerParams.html b/conmon_common/conmon_capnp/conmon/type.CreateContainerParams.html new file mode 100644 index 0000000000..366806693c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.CreateContainerParams.html @@ -0,0 +1,4 @@ +CreateContainerParams in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias CreateContainerParams

Source
pub type CreateContainerParams = Params<Owned>;

Aliased Type§

struct CreateContainerParams {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ParamsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ParamsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.CreateContainerResults.html b/conmon_common/conmon_capnp/conmon/type.CreateContainerResults.html new file mode 100644 index 0000000000..3199801343 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.CreateContainerResults.html @@ -0,0 +1,4 @@ +CreateContainerResults in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias CreateContainerResults

Source
pub type CreateContainerResults = Results<Owned>;

Aliased Type§

struct CreateContainerResults {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ResultsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ResultsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.CreateNamespacesParams.html b/conmon_common/conmon_capnp/conmon/type.CreateNamespacesParams.html new file mode 100644 index 0000000000..82d30582b9 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.CreateNamespacesParams.html @@ -0,0 +1,4 @@ +CreateNamespacesParams in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias CreateNamespacesParams

Source
pub type CreateNamespacesParams = Params<Owned>;

Aliased Type§

struct CreateNamespacesParams {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ParamsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ParamsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.CreateNamespacesResults.html b/conmon_common/conmon_capnp/conmon/type.CreateNamespacesResults.html new file mode 100644 index 0000000000..8e011273e4 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.CreateNamespacesResults.html @@ -0,0 +1,4 @@ +CreateNamespacesResults in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias CreateNamespacesResults

Source
pub type CreateNamespacesResults = Results<Owned>;

Aliased Type§

struct CreateNamespacesResults {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ResultsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ResultsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.ExecSyncContainerParams.html b/conmon_common/conmon_capnp/conmon/type.ExecSyncContainerParams.html new file mode 100644 index 0000000000..5e2ee46570 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.ExecSyncContainerParams.html @@ -0,0 +1,4 @@ +ExecSyncContainerParams in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias ExecSyncContainerParams

Source
pub type ExecSyncContainerParams = Params<Owned>;

Aliased Type§

struct ExecSyncContainerParams {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ParamsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ParamsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.ExecSyncContainerResults.html b/conmon_common/conmon_capnp/conmon/type.ExecSyncContainerResults.html new file mode 100644 index 0000000000..3f97d8b1f2 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.ExecSyncContainerResults.html @@ -0,0 +1,4 @@ +ExecSyncContainerResults in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias ExecSyncContainerResults

Source
pub type ExecSyncContainerResults = Results<Owned>;

Aliased Type§

struct ExecSyncContainerResults {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ResultsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ResultsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.ReopenLogContainerParams.html b/conmon_common/conmon_capnp/conmon/type.ReopenLogContainerParams.html new file mode 100644 index 0000000000..698858270c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.ReopenLogContainerParams.html @@ -0,0 +1,4 @@ +ReopenLogContainerParams in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias ReopenLogContainerParams

Source
pub type ReopenLogContainerParams = Params<Owned>;

Aliased Type§

struct ReopenLogContainerParams {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ParamsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ParamsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.ReopenLogContainerResults.html b/conmon_common/conmon_capnp/conmon/type.ReopenLogContainerResults.html new file mode 100644 index 0000000000..7a4a154a7b --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.ReopenLogContainerResults.html @@ -0,0 +1,4 @@ +ReopenLogContainerResults in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias ReopenLogContainerResults

Source
pub type ReopenLogContainerResults = Results<Owned>;

Aliased Type§

struct ReopenLogContainerResults {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ResultsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ResultsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.SetWindowSizeContainerParams.html b/conmon_common/conmon_capnp/conmon/type.SetWindowSizeContainerParams.html new file mode 100644 index 0000000000..2f9c6c1d4d --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.SetWindowSizeContainerParams.html @@ -0,0 +1,4 @@ +SetWindowSizeContainerParams in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias SetWindowSizeContainerParams

Source
pub type SetWindowSizeContainerParams = Params<Owned>;

Aliased Type§

struct SetWindowSizeContainerParams {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ParamsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ParamsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.SetWindowSizeContainerResults.html b/conmon_common/conmon_capnp/conmon/type.SetWindowSizeContainerResults.html new file mode 100644 index 0000000000..5760462532 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.SetWindowSizeContainerResults.html @@ -0,0 +1,4 @@ +SetWindowSizeContainerResults in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias SetWindowSizeContainerResults

Source
pub type SetWindowSizeContainerResults = Results<Owned>;

Aliased Type§

struct SetWindowSizeContainerResults {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ResultsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ResultsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.StartFdSocketParams.html b/conmon_common/conmon_capnp/conmon/type.StartFdSocketParams.html new file mode 100644 index 0000000000..ea9593887f --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.StartFdSocketParams.html @@ -0,0 +1,4 @@ +StartFdSocketParams in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias StartFdSocketParams

Source
pub type StartFdSocketParams = Params<Owned>;

Aliased Type§

struct StartFdSocketParams {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ParamsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ParamsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.StartFdSocketResults.html b/conmon_common/conmon_capnp/conmon/type.StartFdSocketResults.html new file mode 100644 index 0000000000..b619baf028 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.StartFdSocketResults.html @@ -0,0 +1,4 @@ +StartFdSocketResults in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias StartFdSocketResults

Source
pub type StartFdSocketResults = Results<Owned>;

Aliased Type§

struct StartFdSocketResults {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ResultsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ResultsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.VersionParams.html b/conmon_common/conmon_capnp/conmon/type.VersionParams.html new file mode 100644 index 0000000000..08e0917ef2 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.VersionParams.html @@ -0,0 +1,4 @@ +VersionParams in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias VersionParams

Source
pub type VersionParams = Params<Owned>;

Aliased Type§

struct VersionParams {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ParamsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ParamsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/type.VersionResults.html b/conmon_common/conmon_capnp/conmon/type.VersionResults.html new file mode 100644 index 0000000000..1080cba11f --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/type.VersionResults.html @@ -0,0 +1,4 @@ +VersionResults in conmon_common::conmon_capnp::conmon - Rust
conmon_common::conmon_capnp::conmon

Type Alias VersionResults

Source
pub type VersionResults = Results<Owned>;

Aliased Type§

struct VersionResults {
+    pub marker: PhantomData<Owned>,
+    pub hook: Box<dyn ResultsHook>,
+}

Fields§

§marker: PhantomData<Owned>§hook: Box<dyn ResultsHook>
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_params/index.html b/conmon_common/conmon_capnp/conmon/version_params/index.html new file mode 100644 index 0000000000..1e82100370 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_params/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::version_params - Rust
conmon_common::conmon_capnp::conmon

Module version_params

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_params/sidebar-items.js b/conmon_common/conmon_capnp/conmon/version_params/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_params/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_params/struct.Builder.html b/conmon_common/conmon_capnp/conmon/version_params/struct.Builder.html new file mode 100644 index 0000000000..8b3a522b2d --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_params/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::version_params - Rust
conmon_common::conmon_capnp::conmon::version_params

Struct Builder

Source
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Builder<'a>>

Source

pub fn set_request(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_request(self) -> Builder<'a>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 14_713_102_097_121_731_815u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_params/struct.Owned.html b/conmon_common/conmon_capnp/conmon/version_params/struct.Owned.html new file mode 100644 index 0000000000..6cbc3dcb98 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_params/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::version_params - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_params/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/version_params/struct.Pipeline.html new file mode 100644 index 0000000000..e4dd14aea6 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_params/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::version_params - Rust
conmon_common::conmon_capnp::conmon::version_params

Struct Pipeline

Source
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_params/struct.Reader.html b/conmon_common/conmon_capnp/conmon/version_params/struct.Reader.html new file mode 100644 index 0000000000..835299647e --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_params/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::version_params - Rust
conmon_common::conmon_capnp::conmon::version_params

Struct Reader

Source
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_request(self) -> Result<Reader<'a>>

Source

pub fn has_request(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 14_713_102_097_121_731_815u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_request/index.html b/conmon_common/conmon_capnp/conmon/version_request/index.html new file mode 100644 index 0000000000..0225f11b30 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_request/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::version_request - Rust
conmon_common::conmon_capnp::conmon

Module version_request

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_request/sidebar-items.js b/conmon_common/conmon_capnp/conmon/version_request/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_request/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_request/struct.Builder.html b/conmon_common/conmon_capnp/conmon/version_request/struct.Builder.html new file mode 100644 index 0000000000..805f1c35e7 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_request/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::version_request - Rust
conmon_common::conmon_capnp::conmon::version_request

Struct Builder

Source
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_verbose(self) -> bool

Source

pub fn set_verbose(&mut self, value: bool)

Source

pub fn get_metadata_old(self) -> Result<Builder<'a>>

Source

pub fn set_metadata_old(&mut self, value: Reader<'_>)

Source

pub fn init_metadata_old(self, size: u32) -> Builder<'a>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Builder<'a, Owned>>

Source

pub fn set_metadata(&mut self, value: Reader<'_, Owned>) -> Result<()>

Source

pub fn init_metadata(self, size: u32) -> Builder<'a, Owned>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 12_477_842_714_906_346_515u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_request/struct.Owned.html b/conmon_common/conmon_capnp/conmon/version_request/struct.Owned.html new file mode 100644 index 0000000000..a63890db5c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_request/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::version_request - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_request/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/version_request/struct.Pipeline.html new file mode 100644 index 0000000000..4f7646d7b6 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_request/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::version_request - Rust
conmon_common::conmon_capnp::conmon::version_request

Struct Pipeline

Source
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_request/struct.Reader.html b/conmon_common/conmon_capnp/conmon/version_request/struct.Reader.html new file mode 100644 index 0000000000..06a614521e --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_request/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::version_request - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_verbose(self) -> bool

Source

pub fn get_metadata_old(self) -> Result<Reader<'a>>

Source

pub fn has_metadata_old(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Reader<'a, Owned>>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 12_477_842_714_906_346_515u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_response/index.html b/conmon_common/conmon_capnp/conmon/version_response/index.html new file mode 100644 index 0000000000..0fcdf366a0 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_response/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::version_response - Rust
conmon_common::conmon_capnp::conmon

Module version_response

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_response/sidebar-items.js b/conmon_common/conmon_capnp/conmon/version_response/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_response/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_response/struct.Builder.html b/conmon_common/conmon_capnp/conmon/version_response/struct.Builder.html new file mode 100644 index 0000000000..c78cc4800c --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_response/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::version_response - Rust
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_process_id(self) -> u32

Source

pub fn set_process_id(&mut self, value: u32)

Source

pub fn get_version(self) -> Result<Builder<'a>>

Source

pub fn set_version(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_version(self, size: u32) -> Builder<'a>

Source

pub fn has_version(&self) -> bool

Source

pub fn get_tag(self) -> Result<Builder<'a>>

Source

pub fn set_tag(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_tag(self, size: u32) -> Builder<'a>

Source

pub fn has_tag(&self) -> bool

Source

pub fn get_commit(self) -> Result<Builder<'a>>

Source

pub fn set_commit(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_commit(self, size: u32) -> Builder<'a>

Source

pub fn has_commit(&self) -> bool

Source

pub fn get_build_date(self) -> Result<Builder<'a>>

Source

pub fn set_build_date(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_build_date(self, size: u32) -> Builder<'a>

Source

pub fn has_build_date(&self) -> bool

Source

pub fn get_target(self) -> Result<Builder<'a>>

Source

pub fn set_target(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_target(self, size: u32) -> Builder<'a>

Source

pub fn has_target(&self) -> bool

Source

pub fn get_rust_version(self) -> Result<Builder<'a>>

Source

pub fn set_rust_version(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_rust_version(self, size: u32) -> Builder<'a>

Source

pub fn has_rust_version(&self) -> bool

Source

pub fn get_cargo_version(self) -> Result<Builder<'a>>

Source

pub fn set_cargo_version(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_cargo_version(self, size: u32) -> Builder<'a>

Source

pub fn has_cargo_version(&self) -> bool

Source

pub fn get_cargo_tree(self) -> Result<Builder<'a>>

Source

pub fn set_cargo_tree(&mut self, value: impl SetterInput<Owned>)

Source

pub fn init_cargo_tree(self, size: u32) -> Builder<'a>

Source

pub fn has_cargo_tree(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Builder<'a>>

Source

pub fn set_metadata(&mut self, value: Reader<'_>)

Source

pub fn init_metadata(self, size: u32) -> Builder<'a>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 17_531_358_637_398_683_345u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_response/struct.Owned.html b/conmon_common/conmon_capnp/conmon/version_response/struct.Owned.html new file mode 100644 index 0000000000..b8ff61314a --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_response/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::version_response - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_response/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/version_response/struct.Pipeline.html new file mode 100644 index 0000000000..31ec70b659 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_response/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::version_response - Rust
conmon_common::conmon_capnp::conmon::version_response

Struct Pipeline

Source
pub struct Pipeline { /* private fields */ }

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_response/struct.Reader.html b/conmon_common/conmon_capnp/conmon/version_response/struct.Reader.html new file mode 100644 index 0000000000..a36007f546 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_response/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::version_response - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_process_id(self) -> u32

Source

pub fn get_version(self) -> Result<Reader<'a>>

Source

pub fn has_version(&self) -> bool

Source

pub fn get_tag(self) -> Result<Reader<'a>>

Source

pub fn has_tag(&self) -> bool

Source

pub fn get_commit(self) -> Result<Reader<'a>>

Source

pub fn has_commit(&self) -> bool

Source

pub fn get_build_date(self) -> Result<Reader<'a>>

Source

pub fn has_build_date(&self) -> bool

Source

pub fn get_target(self) -> Result<Reader<'a>>

Source

pub fn has_target(&self) -> bool

Source

pub fn get_rust_version(self) -> Result<Reader<'a>>

Source

pub fn has_rust_version(&self) -> bool

Source

pub fn get_cargo_version(self) -> Result<Reader<'a>>

Source

pub fn has_cargo_version(&self) -> bool

Source

pub fn get_cargo_tree(self) -> Result<Reader<'a>>

Source

pub fn has_cargo_tree(&self) -> bool

Source

pub fn get_metadata(self) -> Result<Reader<'a>>

Source

pub fn has_metadata(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 17_531_358_637_398_683_345u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_results/index.html b/conmon_common/conmon_capnp/conmon/version_results/index.html new file mode 100644 index 0000000000..1f870ae50a --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_results/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp::conmon::version_results - Rust
conmon_common::conmon_capnp::conmon

Module version_results

Source

Structs§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_results/sidebar-items.js b/conmon_common/conmon_capnp/conmon/version_results/sidebar-items.js new file mode 100644 index 0000000000..c5f0926ca5 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_results/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Builder","Owned","Pipeline","Reader"]}; \ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_results/struct.Builder.html b/conmon_common/conmon_capnp/conmon/version_results/struct.Builder.html new file mode 100644 index 0000000000..9f34fc0df4 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_results/struct.Builder.html @@ -0,0 +1,14 @@ +Builder in conmon_common::conmon_capnp::conmon::version_results - Rust
conmon_common::conmon_capnp::conmon::version_results

Struct Builder

Source
pub struct Builder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Builder<'a>

Source

pub fn into_reader(self) -> Reader<'a>

Source

pub fn reborrow(&mut self) -> Builder<'_>

Source

pub fn reborrow_as_reader(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Builder<'a>>

Source

pub fn set_response(&mut self, value: Reader<'_>) -> Result<()>

Source

pub fn init_response(self) -> Builder<'a>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> From<Builder<'a>> for Builder<'a>

Source§

fn from(builder: Builder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructBuilder<'a>> for Builder<'a>

Source§

fn from(builder: StructBuilder<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerBuilder<'a> for Builder<'a>

Source§

fn init_pointer(builder: PointerBuilder<'a>, _size: u32) -> Self

Source§

fn get_from_pointer( + builder: PointerBuilder<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasStructSize for Builder<'a>

Source§

const STRUCT_SIZE: StructSize = _

Source§

impl<'a> HasTypeId for Builder<'a>

Source§

const TYPE_ID: u64 = 16_362_537_726_455_020_336u64

Source§

impl<'a> ImbueMut<'a> for Builder<'a>

Source§

fn imbue_mut(&mut self, cap_table: &'a mut CapTable)

Auto Trait Implementations§

§

impl<'a> Freeze for Builder<'a>

§

impl<'a> !RefUnwindSafe for Builder<'a>

§

impl<'a> !Send for Builder<'a>

§

impl<'a> !Sync for Builder<'a>

§

impl<'a> Unpin for Builder<'a>

§

impl<'a> !UnwindSafe for Builder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_results/struct.Owned.html b/conmon_common/conmon_capnp/conmon/version_results/struct.Owned.html new file mode 100644 index 0000000000..d636852861 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_results/struct.Owned.html @@ -0,0 +1,18 @@ +Owned in conmon_common::conmon_capnp::conmon::version_results - Rust
pub struct Owned(/* private fields */);

Trait Implementations§

Source§

impl Clone for Owned

Source§

fn clone(&self) -> Owned

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Introspect for Owned

Source§

fn introspect() -> Type

Retrieves a description of the type.
Source§

impl Owned for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl OwnedStruct for Owned

Source§

type Reader<'a> = Reader<'a>

Source§

type Builder<'a> = Builder<'a>

Source§

impl Pipelined for Owned

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl Copy for Owned

Auto Trait Implementations§

§

impl Freeze for Owned

§

impl RefUnwindSafe for Owned

§

impl Send for Owned

§

impl Sync for Owned

§

impl Unpin for Owned

§

impl UnwindSafe for Owned

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_results/struct.Pipeline.html b/conmon_common/conmon_capnp/conmon/version_results/struct.Pipeline.html new file mode 100644 index 0000000000..01dc8bff3e --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_results/struct.Pipeline.html @@ -0,0 +1,11 @@ +Pipeline in conmon_common::conmon_capnp::conmon::version_results - Rust
conmon_common::conmon_capnp::conmon::version_results

Struct Pipeline

Source
pub struct Pipeline { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl FromTypelessPipeline for Pipeline

Source§

fn new(typeless: Pipeline) -> Self

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/conmon/version_results/struct.Reader.html b/conmon_common/conmon_capnp/conmon/version_results/struct.Reader.html new file mode 100644 index 0000000000..40a89fdba3 --- /dev/null +++ b/conmon_common/conmon_capnp/conmon/version_results/struct.Reader.html @@ -0,0 +1,21 @@ +Reader in conmon_common::conmon_capnp::conmon::version_results - Rust
pub struct Reader<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Reader<'a>

Source

pub fn reborrow(&self) -> Reader<'_>

Source

pub fn total_size(&self) -> Result<MessageSize>

Source

pub fn get_response(self) -> Result<Reader<'a>>

Source

pub fn has_response(&self) -> bool

Trait Implementations§

Source§

impl<'a> Clone for Reader<'a>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Reader<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<Reader<'a>> for Reader<'a>

Source§

fn from(reader: Reader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<StructReader<'a>> for Reader<'a>

Source§

fn from(reader: StructReader<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> FromPointerReader<'a> for Reader<'a>

Source§

fn get_from_pointer( + reader: &PointerReader<'a>, + default: Option<&'a [Word]>, +) -> Result<Self>

Source§

impl<'a> HasTypeId for Reader<'a>

Source§

const TYPE_ID: u64 = 16_362_537_726_455_020_336u64

Source§

impl<'a> Imbue<'a> for Reader<'a>

Source§

fn imbue(&mut self, cap_table: &'a CapTable)

Source§

impl<'a> IntoInternalStructReader<'a> for Reader<'a>

Source§

fn into_internal_struct_reader(self) -> StructReader<'a>

Source§

impl<'a> SetterInput<Owned> for Reader<'a>

Source§

fn set_pointer_builder( + pointer: PointerBuilder<'_>, + value: Self, + canonicalize: bool, +) -> Result<()>

Copies the values from input into builder, where builder +represents the backing memory of a <Receiver as Owned>::Builder. Read more
Source§

impl<'a> Copy for Reader<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Reader<'a>

§

impl<'a> !RefUnwindSafe for Reader<'a>

§

impl<'a> !Send for Reader<'a>

§

impl<'a> !Sync for Reader<'a>

§

impl<'a> Unpin for Reader<'a>

§

impl<'a> !UnwindSafe for Reader<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> ToOwned for T
where + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/conmon_common/conmon_capnp/index.html b/conmon_common/conmon_capnp/index.html new file mode 100644 index 0000000000..217cbd54df --- /dev/null +++ b/conmon_common/conmon_capnp/index.html @@ -0,0 +1 @@ +conmon_common::conmon_capnp - Rust
conmon_common

Module conmon_capnp

Source

Modules§

\ No newline at end of file diff --git a/conmon_common/conmon_capnp/sidebar-items.js b/conmon_common/conmon_capnp/sidebar-items.js new file mode 100644 index 0000000000..e531572deb --- /dev/null +++ b/conmon_common/conmon_capnp/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"mod":["conmon"]}; \ No newline at end of file diff --git a/conmon_common/index.html b/conmon_common/index.html new file mode 100644 index 0000000000..70fea6a257 --- /dev/null +++ b/conmon_common/index.html @@ -0,0 +1 @@ +conmon_common - Rust

Crate conmon_common

Source

Modules§

\ No newline at end of file diff --git a/conmon_common/sidebar-items.js b/conmon_common/sidebar-items.js new file mode 100644 index 0000000000..006a3868d7 --- /dev/null +++ b/conmon_common/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"mod":["conmon_capnp"]}; \ No newline at end of file diff --git a/conmonrs/all.html b/conmonrs/all.html new file mode 100644 index 0000000000..763d9f384a --- /dev/null +++ b/conmonrs/all.html @@ -0,0 +1 @@ +List of all items in this crate

List of all items

Structs

\ No newline at end of file diff --git a/conmonrs/index.html b/conmonrs/index.html new file mode 100644 index 0000000000..a59d1aa4cf --- /dev/null +++ b/conmonrs/index.html @@ -0,0 +1,147 @@ +conmonrs - Rust

Crate conmonrs

Source
Expand description

+

ci +gh-pages +codecov +dependencies +builds +docs +go-docs

+

A pod level OCI container runtime monitor.

+

The goal of this project is to provide a container monitor in Rust. The scope of conmon-rs encompasses the scope of the c iteration of +conmon, including daemonizing, holding open container standard streams, writing the exit code.

+

However, the goal of conmon-rs also extends past that of conmon, attempting to become a monitor for a full pod (or a group of containers). +Instead of a container engine creating a conmon per container (as well as subsequent conmons per container exec), the engine +will spawn a conmon-rs instance when a pod is created. That instance will listen over an UNIX domain socket for new requests to +create containers, and exec processes within them.

+

§Obtain the latest version

+

We provide statically linked binaries for every successfully built commit on +main via our Google Cloud Storage Bucket. Our provided get +script can be used to download the latest version:

+
> curl https://raw.githubusercontent.com/containers/conmon-rs/main/scripts/get | bash
+

It is also possible to select a specific git SHA or the output binary path by:

+
> curl https://raw.githubusercontent.com/containers/conmon-rs/main/scripts/get | \
+    bash -s -- -t $GIT_SHA -o $OUTPUT_PATH
+

The script automatically verifies the created sigstore signatures if the local +system has cosign available in its +$PATH.

+

More information about how to use conmon-rs can be found in the +usage documentation.

+

If you want to create a new conmon-rs release, please refer to the release +documentation.

+

§Architecture

+

The whole application consists of two main components:

+
    +
  1. The Rust server: conmon-rs/server (docs)
  2. +
  3. A golang client: pkg/client (docs)
  4. +
+

The golang client should act as main interface while it takes care of creating +the server instance via the Command Line Interface (CLI) as well as +communicating to the server via Cap’n Proto. The client +itself hides the raw Cap’n Proto parts and exposes dedicated golang structures +to provide a clean API surface.

+

The following flow chart explains the client and container creation process:

+

+

§Goals

+
    +
  • +Single conmon per pod (post MVP/stretch)
  • +
  • +Keeping RSS under 3-4 MB
  • +
  • +Support exec without respawning a new conmon
  • +
  • +API with RPC to make it extensible (should support golang clients)
  • +
  • +Act as pid namespace init
  • +
  • +Join network namespace to solve running hooks inside the pod context
  • +
  • +Use pidfds (it doesn’t support getting exit code today, though)
  • +
  • +Use io_uring
  • +
  • +Plugin support for seccomp notification
  • +
  • +Logging rate limiting (double buffer?)
  • +
  • +Stats
  • +
  • +IPv6 port forwarding
  • +
+

§Future development

+

In the future, conmon-rs may:

+
    +
  • Be extended to mirror the functionality for each runtime operation. +
      +
    • Thus reducing the amount of exec calls that must happen in the container +engine, and reducing the amount of memory it uses.
    • +
    +
  • +
  • Be in charge of configuring the namespaces for the pod +
      +
    • Taking over functionality that +pinns has historically +done.
    • +
    +
  • +
+

§Usage

+

To use conmon-rs with CRI-O, please ensure +that you use at least:

+ +

Alternatively, use their latest main versions which are mostly guaranteed to +work together.

+

§Configure CRI-O

+

CRI-O needs to be configured to use conmon-rs. To do this, change the runtime +configurations runtime_type and optionally the monitor_path, for example:

+
> cat /etc/crio/crio.conf.d/99-runtimes.conf
[crio.runtime]
+default_runtime = "runc"
+
+[crio.runtime.runtimes.runc]
+runtime_type = "pod"
+monitor_path = "/path/to/conmonrs"  # Optional, lookup $PATH if not set
+

CRI-O should now use conmon-rs after a restart, which is being indicated by the +debug logs when creating a container:

+
…
+DEBU[…] Using conmonrs version: 0.4.0, tag: none, commit: 130bd1373835cdfef8ae066a87eb4becabbe440a, \
+            build: 2022-11-09 10:36:18 +01:00, \
+            target: x86_64-unknown-linux-gnu, \
+            rustc 1.65.0 (897e37553 2022-11-02), \
+            cargo 1.65.0 (4bc8f24d3 2022-10-20)  file="oci/runtime_pod.go:100"
+…

§Configuring to use with Red Hat OpenShift

+

OpenShift 4.12 ships the latest version of conmon-rs per default. To use it, +just apply the following MachineConfig (for runc):

+
apiVersion: machineconfiguration.openshift.io/v1
+kind: MachineConfig
+metadata:
+  labels:
+    machineconfiguration.openshift.io/role: worker
+  name: 99-worker-conmonrs
+spec:
+  config:
+    ignition:
+      version: 3.2.0
+    storage:
+      files:
+        - contents:
+            source: data:,%5Bcrio.runtime.runtimes.runc%5D%0Aruntime_type%20%3D%20%22pod%22%0A
+          mode: 420
+          overwrite: true
+          path: /etc/crio/crio.conf.d/99-conmonrs.conf
+

The same can be done for the master role or any other confiured runtime like +crun.

+

§Using a custom conmonrs version

+

All conmonrs commits on main are build via fedora +copr. +This means that it’s possible to install a custom version by running +rpm-ostree, for example for RHCOS 8:

+
> rpm-ostree override replace https://download.copr.fedorainfracloud.org/results/rhcontainerbot/podman-next/epel-8-x86_64/05025896-conmon-rs/conmon-rs-0.0.git.1551.130d137-1.el8.x86_64.rpm
+…
+Upgraded:
+  conmon-rs 0.4.0-2.rhaos4.12.git.el8 -> 101:0.0.git.1551.130bd137-1.el8
+Use "rpm-ostree override reset" to undo overrides
+Run "systemctl reboot" to start a reboot
+> systemctl reboot

Structs§

\ No newline at end of file diff --git a/conmonrs/server/struct.Server.html b/conmonrs/server/struct.Server.html new file mode 100644 index 0000000000..d857d3d224 --- /dev/null +++ b/conmonrs/server/struct.Server.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../conmonrs/struct.Server.html...

+ + + \ No newline at end of file diff --git a/conmonrs/sidebar-items.js b/conmonrs/sidebar-items.js new file mode 100644 index 0000000000..dc94dbce42 --- /dev/null +++ b/conmonrs/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["Server","Version"]}; \ No newline at end of file diff --git a/conmonrs/struct.Server.html b/conmonrs/struct.Server.html new file mode 100644 index 0000000000..54cf8fe7ad --- /dev/null +++ b/conmonrs/struct.Server.html @@ -0,0 +1,61 @@ +Server in conmonrs - Rust
conmonrs

Struct Server

Source
pub struct Server { /* private fields */ }
Expand description

The main server structure.

+

Implementations§

Source§

impl Server

Source

pub fn new() -> Result<Self>

Create a new Server instance.

+
Source

pub fn start(self) -> Result<()>

Start the Server instance and consume it.

+

Trait Implementations§

Source§

impl Debug for Server

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Server for Server

Source§

fn version( + &mut self, + params: VersionParams, + results: VersionResults, +) -> Promise<(), Error>

Retrieve version information from the server.

+
Source§

fn create_container( + &mut self, + params: CreateContainerParams, + results: CreateContainerResults, +) -> Promise<(), Error>

Create a new container for the provided parameters.

+
Source§

fn exec_sync_container( + &mut self, + params: ExecSyncContainerParams, + results: ExecSyncContainerResults, +) -> Promise<(), Error>

Execute a command in sync inside of a container.

+
Source§

fn attach_container( + &mut self, + params: AttachContainerParams, + _: AttachContainerResults, +) -> Promise<(), Error>

Attach to a running container.

+
Source§

fn reopen_log_container( + &mut self, + params: ReopenLogContainerParams, + _: ReopenLogContainerResults, +) -> Promise<(), Error>

Rotate all log drivers for a running container.

+
Source§

fn set_window_size_container( + &mut self, + params: SetWindowSizeContainerParams, + _: SetWindowSizeContainerResults, +) -> Promise<(), Error>

Adjust the window size of a container running inside of a terminal.

+
Source§

fn create_namespaces( + &mut self, + params: CreateNamespacesParams, + results: CreateNamespacesResults, +) -> Promise<(), Error>

Create a new set of namespaces.

+
Source§

fn start_fd_socket( + &mut self, + params: StartFdSocketParams, + results: StartFdSocketResults, +) -> Promise<(), Error>

Auto Trait Implementations§

§

impl Freeze for Server

§

impl !RefUnwindSafe for Server

§

impl Send for Server

§

impl Sync for Server

§

impl Unpin for Server

§

impl !UnwindSafe for Server

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext +wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext +wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/conmonrs/struct.Version.html b/conmonrs/struct.Version.html new file mode 100644 index 0000000000..3d1e1d3d98 --- /dev/null +++ b/conmonrs/struct.Version.html @@ -0,0 +1,38 @@ +Version in conmonrs - Rust
conmonrs

Struct Version

Source
pub struct Version { /* private fields */ }
Expand description

The version structure.

+

Implementations§

Source§

impl Version

Source

pub fn verbose(&self) -> bool

Specifies if the output should contain verbose debug information.

+
Source

pub fn version(&self) -> &'static str

The current crate version.

+
Source

pub fn tag(&self) -> &'static str

The tag of the build, empty if not available.

+
Source

pub fn commit(&self) -> &'static str

The git commit SHA of the build.

+
Source

pub fn build_date(&self) -> &'static str

The build date string.

+
Source

pub fn target(&self) -> &'static str

The target triple string.

+
Source

pub fn rust_version(&self) -> &'static str

The used Rust version.

+
Source

pub fn cargo_version(&self) -> &'static str

The used Cargo version.

+
Source

pub fn cargo_tree(&self) -> &'static str

The cargo dependency tree, only available in verbose output.

+
Source§

impl Version

Source

pub fn new(verbose: bool) -> Self

Create a new Version instance.

+
Source

pub fn print(&self)

Print the version information to stdout.

+

Trait Implementations§

Source§

impl Debug for Version

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Version

Source§

fn default() -> Version

Returns the “default value” for a type. Read more
Source§

impl PartialEq for Version

Source§

fn eq(&self, other: &Version) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
Source§

impl Eq for Version

Source§

impl StructuralPartialEq for Version

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where + T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext +wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext +wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where + U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/conmonrs/version/struct.Version.html b/conmonrs/version/struct.Version.html new file mode 100644 index 0000000000..102bb4fd2a --- /dev/null +++ b/conmonrs/version/struct.Version.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../conmonrs/struct.Version.html...

+ + + \ No newline at end of file diff --git a/conmonrs_cli/all.html b/conmonrs_cli/all.html new file mode 100644 index 0000000000..08c414ea5e --- /dev/null +++ b/conmonrs_cli/all.html @@ -0,0 +1 @@ +List of all items in this crate

List of all items

Functions

\ No newline at end of file diff --git a/conmonrs_cli/fn.main.html b/conmonrs_cli/fn.main.html new file mode 100644 index 0000000000..bef2670e7c --- /dev/null +++ b/conmonrs_cli/fn.main.html @@ -0,0 +1 @@ +main in conmonrs_cli - Rust
conmonrs_cli

Function main

Source
pub(crate) fn main() -> Result<(), Box<dyn Error>>
\ No newline at end of file diff --git a/conmonrs_cli/index.html b/conmonrs_cli/index.html new file mode 100644 index 0000000000..9f027f492f --- /dev/null +++ b/conmonrs_cli/index.html @@ -0,0 +1 @@ +conmonrs_cli - Rust

Crate conmonrs_cli

Source

Functions§

\ No newline at end of file diff --git a/conmonrs_cli/sidebar-items.js b/conmonrs_cli/sidebar-items.js new file mode 100644 index 0000000000..9b556a055c --- /dev/null +++ b/conmonrs_cli/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"fn":["main"]}; \ No newline at end of file diff --git a/crates.js b/crates.js new file mode 100644 index 0000000000..dcc3c0a69f --- /dev/null +++ b/crates.js @@ -0,0 +1,2 @@ +window.ALL_CRATES = ["conmon_common","conmonrs","conmonrs_cli"]; +//{"start":21,"fragment_lengths":[15,11,15]} \ No newline at end of file diff --git a/help.html b/help.html new file mode 100644 index 0000000000..29629fba55 --- /dev/null +++ b/help.html @@ -0,0 +1 @@ +Help

Rustdoc help

Back
\ No newline at end of file diff --git a/search-index.js b/search-index.js new file mode 100644 index 0000000000..2bf52410c5 --- /dev/null +++ b/search-index.js @@ -0,0 +1,4 @@ +var searchIndex = new Map(JSON.parse('[["conmon_common",{"t":"CCIIGPFIIIIIIPGPFPIIKFIIIIPPPIICNNCNCCCNNNNNNNNNNONNNNNNNNNNNNNCCNCCNCCNCCNNNNNNNCCNCCNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNCOOOOOOOOOOOOOOOOCNNCNCCCONNCNCCCNCCNCCCNNNNNNNNNNNNNNNNNNNNNNCCNCCSFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFPPPFFFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["conmon_capnp","conmon","AttachContainerParams","AttachContainerResults","CgroupManager","Cgroupfs","Client","CreateContainerParams","CreateContainerResults","CreateNamespacesParams","CreateNamespacesResults","ExecSyncContainerParams","ExecSyncContainerResults","Ipc","Namespace","Net","Owned","Pid","ReopenLogContainerParams","ReopenLogContainerResults","Server","ServerDispatch","SetWindowSizeContainerParams","SetWindowSizeContainerResults","StartFdSocketParams","StartFdSocketResults","Systemd","User","Uts","VersionParams","VersionResults","_private","as_client_hook","attach_container","attach_container_params","attach_container_request","attach_container_results","attach_request","attach_response","borrow","","","","","borrow_mut","","","","","client","clone","","","","clone_into","","","","clone_to_uninit","","","","create_container","create_container_params","create_container_request","","create_container_response","create_container_results","create_namespaces","create_namespaces_params","create_namespaces_request","","create_namespaces_response","create_namespaces_results","deref","deref_mut","dispatch_call","dispatch_call_internal","eq","","exec_sync_container","exec_sync_container_params","exec_sync_container_request","","exec_sync_container_response","exec_sync_container_results","fmt","","from","","","","","from_server","get_from_pointer","","hook","","","","","","","","","","","","","","","","init_pointer","into","","","","","into_client_hook","introspect","","","log_driver","marker","","","","","","","","","","","","","","","","namespace_response","new","reopen_log_container","reopen_log_container_params","reopen_log_container_request","reopen_log_container_results","reopen_log_request","reopen_log_response","server","set_pointer_builder","set_window_size_container","set_window_size_container_params","set_window_size_container_request","set_window_size_container_results","set_window_size_request","set_window_size_response","start_fd_socket","start_fd_socket_params","start_fd_socket_request","","start_fd_socket_response","start_fd_socket_results","text_text_map_entry","to_owned","","","","try_from","","","","","","","try_into","","","","","type_id","","","","","version","version_params","version_request","","version_response","version_results","TYPE_ID","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_request","","","has_request","","imbue","imbue_mut","init_pointer","init_request","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_request","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_response","","","has_response","","imbue","imbue_mut","init_pointer","init_response","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_response","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_exec_session_id","","get_from_pointer","","get_id","","get_metadata","","get_metadata_old","","get_socket_path","","get_stop_after_stdin_eof","","has_exec_session_id","","has_id","","has_metadata","","has_metadata_old","","has_socket_path","","imbue","imbue_mut","init_exec_session_id","init_id","init_metadata","init_metadata_old","init_pointer","init_socket_path","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_exec_session_id","set_id","set_metadata","set_metadata_old","set_pointer_builder","set_socket_path","set_stop_after_stdin_eof","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","imbue","imbue_mut","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_request","","","has_request","","imbue","imbue_mut","init_pointer","init_request","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_request","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_additional_fds","","get_bundle_path","","get_cgroup_manager","","get_cleanup_cmd","","get_command_args","","get_env_vars","","get_exit_paths","","get_from_pointer","","get_global_args","","get_id","","get_leak_fds","","get_log_drivers","","get_metadata","","get_metadata_old","","get_oom_exit_paths","","get_stdin","","get_terminal","","has_additional_fds","","has_bundle_path","","has_cleanup_cmd","","has_command_args","","has_env_vars","","has_exit_paths","","has_global_args","","has_id","","has_leak_fds","","has_log_drivers","","has_metadata","","has_metadata_old","","has_oom_exit_paths","","imbue","imbue_mut","init_additional_fds","init_bundle_path","init_cleanup_cmd","init_command_args","init_env_vars","init_exit_paths","init_global_args","init_id","init_leak_fds","init_log_drivers","init_metadata","init_metadata_old","init_oom_exit_paths","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_additional_fds","set_bundle_path","set_cgroup_manager","set_cleanup_cmd","set_command_args","set_env_vars","set_exit_paths","set_global_args","set_id","set_leak_fds","set_log_drivers","set_metadata","set_metadata_old","set_oom_exit_paths","set_pointer_builder","set_stdin","set_terminal","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_container_pid","","get_from_pointer","","imbue","imbue_mut","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_container_pid","set_pointer_builder","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_response","","","has_response","","imbue","imbue_mut","init_pointer","init_response","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_response","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_request","","","has_request","","imbue","imbue_mut","init_pointer","init_request","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_request","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_base_path","","get_from_pointer","","get_gid_mappings","","get_metadata","","get_metadata_old","","get_namespaces","","get_pod_id","","get_uid_mappings","","has_base_path","","has_gid_mappings","","has_metadata","","has_metadata_old","","has_namespaces","","has_pod_id","","has_uid_mappings","","imbue","imbue_mut","init_base_path","init_gid_mappings","init_metadata","init_metadata_old","init_namespaces","init_pod_id","init_pointer","init_uid_mappings","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_base_path","set_gid_mappings","set_metadata","set_metadata_old","set_namespaces","set_pod_id","set_pointer_builder","set_uid_mappings","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_namespaces","","has_namespaces","","imbue","imbue_mut","init_namespaces","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_namespaces","set_pointer_builder","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_response","","","has_response","","imbue","imbue_mut","init_pointer","init_response","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_response","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_request","","","has_request","","imbue","imbue_mut","init_pointer","init_request","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_request","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_cgroup_manager","","get_command","","get_env_vars","","get_from_pointer","","get_id","","get_metadata","","get_metadata_old","","get_terminal","","get_timeout_sec","","has_command","","has_env_vars","","has_id","","has_metadata","","has_metadata_old","","imbue","imbue_mut","init_command","init_env_vars","init_id","init_metadata","init_metadata_old","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_cgroup_manager","set_command","set_env_vars","set_id","set_metadata","set_metadata_old","set_pointer_builder","set_terminal","set_timeout_sec","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_exit_code","","get_from_pointer","","get_stderr","","get_stdout","","get_timed_out","","has_stderr","","has_stdout","","imbue","imbue_mut","init_pointer","init_stderr","init_stdout","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_exit_code","set_pointer_builder","set_stderr","set_stdout","set_timed_out","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_response","","","has_response","","imbue","imbue_mut","init_pointer","init_response","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_response","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","ContainerRuntimeInterface","Journald","Json","Owned","Pipeline","Reader","Type","borrow","","","","","borrow_mut","","","","","clone","","","clone_into","","","clone_to_uninit","","","eq","fmt","","from","","","","","","","get_from_pointer","","get_max_size","","get_path","","get_type","","has_path","","imbue","imbue_mut","init_path","init_pointer","into","","","","","into_internal_struct_reader","into_reader","introspect","","new","reborrow","","reborrow_as_reader","set_max_size","set_path","set_pointer_builder","set_type","to_owned","","","total_size","","try_from","","","","","","try_into","","","","","type_id","","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_path","","get_type","","has_path","","imbue","imbue_mut","init_path","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_path","set_pointer_builder","set_type","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_request","","","has_request","","imbue","imbue_mut","init_pointer","init_request","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_request","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_response","","","has_response","","imbue","imbue_mut","init_pointer","init_response","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_response","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_id","","get_metadata","","get_metadata_old","","has_id","","has_metadata","","has_metadata_old","","imbue","imbue_mut","init_id","init_metadata","init_metadata_old","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_id","set_metadata","set_metadata_old","set_pointer_builder","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","imbue","imbue_mut","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_request","","","has_request","","imbue","imbue_mut","init_pointer","init_request","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_request","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_response","","","has_response","","imbue","imbue_mut","init_pointer","init_response","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_response","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_height","","get_id","","get_metadata","","get_metadata_old","","get_width","","has_id","","has_metadata","","has_metadata_old","","imbue","imbue_mut","init_id","init_metadata","init_metadata_old","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_height","set_id","set_metadata","set_metadata_old","set_pointer_builder","set_width","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","imbue","imbue_mut","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_request","","","has_request","","imbue","imbue_mut","init_pointer","init_request","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_request","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_metadata","","has_metadata","","imbue","imbue_mut","init_metadata","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_metadata","set_pointer_builder","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_path","","has_path","","imbue","imbue_mut","init_path","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_path","set_pointer_builder","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_response","","","has_response","","imbue","imbue_mut","init_pointer","init_response","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_response","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_key","","get_value","","has_key","","has_value","","imbue","imbue_mut","init_key","init_pointer","init_value","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_key","set_pointer_builder","set_value","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_request","","","has_request","","imbue","imbue_mut","init_pointer","init_request","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_request","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_metadata","","get_metadata_old","","get_verbose","","has_metadata","","has_metadata_old","","imbue","imbue_mut","init_metadata","init_metadata_old","init_pointer","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_metadata","set_metadata_old","set_pointer_builder","set_verbose","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_build_date","","get_cargo_tree","","get_cargo_version","","get_commit","","get_from_pointer","","get_metadata","","get_process_id","","get_rust_version","","get_tag","","get_target","","get_version","","has_build_date","","has_cargo_tree","","has_cargo_version","","has_commit","","has_metadata","","has_rust_version","","has_tag","","has_target","","has_version","","imbue","imbue_mut","init_build_date","init_cargo_tree","init_cargo_version","init_commit","init_metadata","init_pointer","init_rust_version","init_tag","init_target","init_version","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_build_date","set_cargo_tree","set_cargo_version","set_commit","set_metadata","set_pointer_builder","set_process_id","set_rust_version","set_tag","set_target","set_version","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","","","Builder","Owned","Pipeline","Reader","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fmt","from","","","","","","get_from_pointer","","get_response","","","has_response","","imbue","imbue_mut","init_pointer","init_response","into","","","","into_internal_struct_reader","into_reader","introspect","new","reborrow","","reborrow_as_reader","set_pointer_builder","set_response","to_owned","","total_size","","try_from","","","","try_into","","","","type_id","","",""],"q":[[0,"conmon_common"],[1,"conmon_common::conmon_capnp"],[2,"conmon_common::conmon_capnp::conmon"],[189,"conmon_common::conmon_capnp::conmon::_private"],[190,"conmon_common::conmon_capnp::conmon::attach_container_params"],[255,"conmon_common::conmon_capnp::conmon::attach_container_results"],[320,"conmon_common::conmon_capnp::conmon::attach_request"],[411,"conmon_common::conmon_capnp::conmon::attach_response"],[469,"conmon_common::conmon_capnp::conmon::create_container_params"],[534,"conmon_common::conmon_capnp::conmon::create_container_request"],[679,"conmon_common::conmon_capnp::conmon::create_container_response"],[740,"conmon_common::conmon_capnp::conmon::create_container_results"],[805,"conmon_common::conmon_capnp::conmon::create_namespaces_params"],[870,"conmon_common::conmon_capnp::conmon::create_namespaces_request"],[970,"conmon_common::conmon_capnp::conmon::create_namespaces_response"],[1034,"conmon_common::conmon_capnp::conmon::create_namespaces_results"],[1099,"conmon_common::conmon_capnp::conmon::exec_sync_container_params"],[1164,"conmon_common::conmon_capnp::conmon::exec_sync_container_request"],[1261,"conmon_common::conmon_capnp::conmon::exec_sync_container_response"],[1337,"conmon_common::conmon_capnp::conmon::exec_sync_container_results"],[1402,"conmon_common::conmon_capnp::conmon::log_driver"],[1491,"conmon_common::conmon_capnp::conmon::namespace_response"],[1558,"conmon_common::conmon_capnp::conmon::reopen_log_container_params"],[1623,"conmon_common::conmon_capnp::conmon::reopen_log_container_results"],[1688,"conmon_common::conmon_capnp::conmon::reopen_log_request"],[1764,"conmon_common::conmon_capnp::conmon::reopen_log_response"],[1822,"conmon_common::conmon_capnp::conmon::set_window_size_container_params"],[1887,"conmon_common::conmon_capnp::conmon::set_window_size_container_results"],[1952,"conmon_common::conmon_capnp::conmon::set_window_size_request"],[2034,"conmon_common::conmon_capnp::conmon::set_window_size_response"],[2092,"conmon_common::conmon_capnp::conmon::start_fd_socket_params"],[2157,"conmon_common::conmon_capnp::conmon::start_fd_socket_request"],[2221,"conmon_common::conmon_capnp::conmon::start_fd_socket_response"],[2285,"conmon_common::conmon_capnp::conmon::start_fd_socket_results"],[2350,"conmon_common::conmon_capnp::conmon::text_text_map_entry"],[2420,"conmon_common::conmon_capnp::conmon::version_params"],[2485,"conmon_common::conmon_capnp::conmon::version_request"],[2558,"conmon_common::conmon_capnp::conmon::version_response"],[2673,"conmon_common::conmon_capnp::conmon::version_results"],[2738,"capnp::private::capability"],[2739,"capnp"],[2740,"capnp::capability"],[2741,"capnp::any_pointer"],[2742,"core::fmt"],[2743,"capnp::private::layout"],[2744,"core::option"],[2745,"alloc::boxed"],[2746,"capnp::introspect"],[2747,"core::result"],[2748,"core::any"],[2749,"capnp::text"],[2750,"capnp::struct_list"],[2751,"capnp::data"],[2752,"capnp::traits"],[2753,"capnp::primitive_list"],[2754,"capnp::text_list"],[2755,"capnp::enum_list"]],"i":"`````An```````B``0`0````````100```bj`1```1CdAl543105433054305430542``3``2``3``1111542``3``5431054333GlGnBdBfDbDdlnF`FbFhFjBlBnG`Gbb0CdAlAnB`4210`GlGnBdBfDbDdlnF`FbFhFjBlBnG`Gb`bj`1```Cd21`2```1``2```2AlAnB`532110053210532104``5```````HdHlIbAf321030303033322103232132322232103201322323032321032103210````IlInJdAh321030303033322103232132322232103201322323032321032103210````HnI`IdJh32103030303332210323232323232323232323232322222223210320132222223223032321032103210````J`JbJfKl32103030303332210323223210320132233032321032103210````KnL`LfBh321030303033322103232132322232103201322323032321032103210````LbLdLhLj32103030303332210323232323232323232323232323232323232323232323232323232323232322222222222222232103201322222222222222223223032321032103210````MlN`NbMn32103030303332210323232232103201322233032321032103210````NdNfNhBj321030303033322103232132322232103201322323032321032103210````NjNlObC`321030303033322103232132322232103201322323032321032103210````NnO`OdOf32103030303332210323232323232323232323232323232322222222232103201322222222323032321032103210````OnA@bA@fA@`32103030303332210323232322232103201322233032321032103210````A@hA@jA@lCb321030303033322103232132322232103201322323032321032103210````A@nAA`AAfDf321030303033322103232132322232103201322323032321032103210````AAbAAdAAhAAj32103030303332210323232323232323232323232323232222222321032013222222223223032321032103210````AAlAB`ABdAAn32103030303332210323232323232323222232103201322232223032321032103210````ABfABhABjDh321030303033322103232132322232103201322323032321032103210`ABn00````ABlAC`ACbMf43210430430430443433221043232323232322232104320413222232304323210443210432104````ACdACfAChA@d32103030303332210323232323222321032013222323032321032103210````ACjAClADbFd321030303033322103232132322232103201322323032321032103210````ADfADhADnFf321030303033322103232132322232103201322323032321032103210````ACnAD`ADdAEb32103030303332210323232323232323222223210320132222233032321032103210````ADjADlAE`AEd32103030303332210323223210320132233032321032103210````AEfAEhAEnFl321030303033322103232132322232103201322323032321032103210````AFbAFdAFjFn321030303033322103232132322232103201322323032321032103210````AEjAElAF`AFn32103030303332210323232323232323232322222321032013222222323032321032103210````AFfAFhAFlAG`32103030303332210323223210320132233032321032103210````AGbAGdAGjGd321030303033322103232132322232103201322323032321032103210````AGfAGhAGlAGn32103030303332210323232322232103201322233032321032103210````AH`AHdAHfAHb32103030303332210323232322232103201322233032321032103210````AHhAHjAHlGf321030303033322103232132322232103201322323032321032103210````AHnAI`AIbJn32103030303332210323232323232222321032013222323032321032103210````AIdAIfAIlH`321030303033322103232132322232103201322323032321032103210````AIhAIjAInAJ`32103030303332210323232323232322223210320132222323032321032103210````AJbAJfAJhAJd32103030303332210323232323232323232323232323232323232323232222222222232103201322222223222223032321032103210````AJjAJlAJnHb321030303033322103232132322232103201322323032321032103210","f":"````````````````````````````````{{{d{b}}}{{d{f}}}}{{{d{hj}}ln}{{Ad{A`Ab}}}}`{{{d{b}}}{{Aj{AfAh}}}}```{d{{d{c}}}{}}0000{{{d{h}}}{{d{hc}}}{}}0000`{{{d{b}}}b}{{{d{Al}}}Al}{{{d{An}}}An}{{{d{B`}}}B`}{{d{d{hc}}}A`{}}000{{dBb}A`}000{{{d{hj}}BdBf}{{Ad{A`Ab}}}}``{{{d{b}}}{{Aj{BhBj}}}}``{{{d{hj}}BlBn}{{Ad{A`Ab}}}}``{{{d{b}}}{{Aj{C`Cb}}}}``{{{d{{Cd{c}}}}}{{d{c}}}j}{{{d{h{Cd{c}}}}}{{d{hc}}}j}{{{d{h{Cd{c}}}}CfCh{Cl{Cj}}{Cn{Cj}}}{{Ad{A`Ab}}}j}{{{d{hc}}Ch{Cl{Cj}}{Cn{Cj}}}{{Ad{A`Ab}}}j}{{{d{An}}{d{An}}}D`}{{{d{B`}}{d{B`}}}D`}{{{d{hj}}DbDd}{{Ad{A`Ab}}}}``{{{d{b}}}{{Aj{DfDh}}}}``{{{d{An}}{d{hDj}}}Dl}{{{d{B`}}{d{hDj}}}Dl}{cc{}}0000{c{{Cd{c}}}j}{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{b}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{b}}}}````````````````{{EhEj}b}{{}c{}}0000{b{{El{f}}}}{{}En}00``````````````````{{{El{f}}}b}{{{d{hj}}F`Fb}{{Ad{A`Ab}}}}`{{{d{b}}}{{Aj{FdFf}}}}````{{EhbD`}{{Ef{A`}}}}{{{d{hj}}FhFj}{{Ad{A`Ab}}}}`{{{d{b}}}{{Aj{FlFn}}}}```{{{d{hj}}G`Gb}{{Ad{A`Ab}}}}``{{{d{b}}}{{Aj{GdGf}}}}```{dc{}}000{c{{Gh{e}}}{}{}}000{Ch{{Gh{An}}}}1{Ch{{Gh{B`}}}}{{}{{Gh{c}}}{}}0000{dGj}0000{{{d{hj}}GlGn}{{Ad{A`Ab}}}}``{{{d{b}}}{{Aj{H`Hb}}}}```````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{Hd}}}Hd}{{{d{Af}}}Af}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{Hd}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhHd}{HjHl}222{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{Hd}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{Hl}}}}{Hd{{Ef{Hn}}}}{Hl{{Ef{I`}}}}{{{d{Ib}}}Id}{{{d{Hd}}}D`}{{{d{Hl}}}D`}{{{d{hHd}}{d{If}}}A`}{{{d{hHl}}{d{hIf}}}A`}{{EhEj}Hl}{HlI`}{{}c{}}000{HdHh}{HlHd}{{}En}{IhIb}{{{d{Hd}}}Hd}{{{d{hHl}}}Hl}{{{d{Hl}}}Hd}{{EhHdD`}{{Ef{A`}}}}{{{d{hHl}}Hn}{{Ef{A`}}}}{dc{}}0{{{d{Hd}}}{{Ef{Ij}}}}{{{d{Hl}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{Il}}}Il}{{{d{Ah}}}Ah}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{Il}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhIl}{HjIn}222{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{Il}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{In}}}}{Il{{Ef{J`}}}}{In{{Ef{Jb}}}}{{{d{Jd}}}Jf}{{{d{Il}}}D`}{{{d{In}}}D`}{{{d{hIl}}{d{If}}}A`}{{{d{hIn}}{d{hIf}}}A`}{{EhEj}In}{InJb}{{}c{}}000{IlHh}{InIl}{{}En}{IhJd}{{{d{Il}}}Il}{{{d{hIn}}}In}{{{d{In}}}Il}{{EhIlD`}{{Ef{A`}}}}{{{d{hIn}}J`}{{Ef{A`}}}}{dc{}}0{{{d{Il}}}{{Ef{Ij}}}}{{{d{In}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{Hn}}}Hn}{{{d{Jh}}}Jh}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{Hn}}{d{hDj}}}{{Gh{A`Hf}}}}{HhHn}{cc{}}0{HjI`}11{Hn{{Ef{Jj}}}}{I`{{Ef{Jl}}}}{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{Hn}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{I`}}}}32{Hn{{Ef{{K`{Jn}}}}}}{I`{{Ef{{Kb{Jn}}}}}}{Hn{{Ef{Kd}}}}{I`{{Ef{Kf}}}}76{HnD`}{I`D`}{{{d{Hn}}}D`}{{{d{I`}}}D`}10101010{{{d{hHn}}{d{If}}}A`}{{{d{hI`}}{d{hIf}}}A`}{{I`Ej}Jl}0{{I`Ej}{{Kb{Jn}}}}{{I`Ej}Kf}{{EhEj}I`}3{{}c{}}000{HnHh}{I`Hn}{{}En}{IhId}{{{d{Hn}}}Hn}{{{d{hI`}}}I`}{{{d{I`}}}Hn}{{{d{hI`}}c}A`{{Kj{Kh}}}}0{{{d{hI`}}{K`{Jn}}}{{Ef{A`}}}}{{{d{hI`}}Kd}A`}{{EhHnD`}{{Ef{A`}}}}3{{{d{hI`}}D`}A`}{dc{}}0{{{d{Hn}}}{{Ef{Ij}}}}{{{d{I`}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{J`}}}J`}{{{d{Kl}}}Kl}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{J`}}{d{hDj}}}{{Gh{A`Hf}}}}{HhJ`}{cc{}}0{HjJb}11{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{J`}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{Jb}}}}{{{d{hJ`}}{d{If}}}A`}{{{d{hJb}}{d{hIf}}}A`}{{EhEj}Jb}{{}c{}}000{J`Hh}{JbJ`}{{}En}{IhJf}{{{d{J`}}}J`}{{{d{hJb}}}Jb}{{{d{Jb}}}J`}{{EhJ`D`}{{Ef{A`}}}}{dc{}}0{{{d{J`}}}{{Ef{Ij}}}}{{{d{Jb}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{Kn}}}Kn}{{{d{Bh}}}Bh}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{Kn}}{d{hDj}}}{{Gh{A`Hf}}}}{HhKn}{cc{}}0{HjL`}11{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{Kn}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{L`}}}}{Kn{{Ef{Lb}}}}{L`{{Ef{Ld}}}}{{{d{Lf}}}Lh}{{{d{Kn}}}D`}{{{d{L`}}}D`}{{{d{hKn}}{d{If}}}A`}{{{d{hL`}}{d{hIf}}}A`}{{EhEj}L`}{L`Ld}{{}c{}}000{KnHh}{L`Kn}{{}En}{IhLf}{{{d{Kn}}}Kn}{{{d{hL`}}}L`}{{{d{L`}}}Kn}{{EhKnD`}{{Ef{A`}}}}{{{d{hL`}}Lb}{{Ef{A`}}}}{dc{}}0{{{d{Kn}}}{{Ef{Ij}}}}{{{d{L`}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{Lb}}}Lb}{{{d{Lj}}}Lj}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{Lb}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhLb}{HjLd}222{Lb{{Ef{{Ll{Cf}}}}}}{Ld{{Ef{{Ln{Cf}}}}}}{Lb{{Ef{Jj}}}}{Ld{{Ef{Jl}}}}{Lb{{Gh{AnM`}}}}{Ld{{Gh{AnM`}}}}{Lb{{Ef{Mb}}}}{Ld{{Ef{Md}}}}10{Lb{{Ef{{K`{Jn}}}}}}{Ld{{Ef{{Kb{Jn}}}}}}32{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{Lb}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{Ld}}}}5498;:{Lb{{Ef{{K`{Mf}}}}}}{Ld{{Ef{{Kb{Mf}}}}}}54{Lb{{Ef{Kd}}}}{Ld{{Ef{Kf}}}}98{LbD`}{LdD`}10{{{d{Lb}}}D`}{{{d{Ld}}}D`}101010101010101010101010{{{d{hLb}}{d{If}}}A`}{{{d{hLd}}{d{hIf}}}A`}{{LdEj}{{Ln{Cf}}}}{{LdEj}Jl}{{LdEj}Md}0{{LdEj}{{Kb{Jn}}}}1123{{LdEj}{{Kb{Mf}}}}1{{LdEj}Kf}3{{EhEj}Ld}{{}c{}}000{LbHh}{LdLb}{{}En}{IhLh}{{{d{Lb}}}Lb}{{{d{hLd}}}Ld}{{{d{Ld}}}Lb}{{{d{hLd}}c}{{Ef{A`}}}{{Kj{{Mh{Cf}}}}}}{{{d{hLd}}c}A`{{Kj{Kh}}}}{{{d{hLd}}An}A`}{{{d{hLd}}c}{{Ef{A`}}}{{Kj{Mj}}}}0{{{d{hLd}}{K`{Jn}}}{{Ef{A`}}}}1134{{{d{hLd}}{K`{Mf}}}{{Ef{A`}}}}1{{{d{hLd}}Kd}A`}3{{EhLbD`}{{Ef{A`}}}}{{{d{hLd}}D`}A`}0{dc{}}0{{{d{Lb}}}{{Ef{Ij}}}}{{{d{Ld}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{Ml}}}Ml}{{{d{Mn}}}Mn}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{Ml}}{d{hDj}}}{{Gh{A`Hf}}}}{HhMl}{cc{}}0{HjN`}11{MlEj}{N`Ej}{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{Ml}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{N`}}}}{{{d{hMl}}{d{If}}}A`}{{{d{hN`}}{d{hIf}}}A`}{{EhEj}N`}{{}c{}}000{MlHh}{N`Ml}{{}En}{IhNb}{{{d{Ml}}}Ml}{{{d{hN`}}}N`}{{{d{N`}}}Ml}{{{d{hN`}}Ej}A`}{{EhMlD`}{{Ef{A`}}}}{dc{}}0{{{d{Ml}}}{{Ef{Ij}}}}{{{d{N`}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{Nd}}}Nd}{{{d{Bj}}}Bj}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{Nd}}{d{hDj}}}{{Gh{A`Hf}}}}{HhNd}{cc{}}0{HjNf}11{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{Nd}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{Nf}}}}{Nd{{Ef{Ml}}}}{Nf{{Ef{N`}}}}{{{d{Nh}}}Nb}{{{d{Nd}}}D`}{{{d{Nf}}}D`}{{{d{hNd}}{d{If}}}A`}{{{d{hNf}}{d{hIf}}}A`}{{EhEj}Nf}{NfN`}{{}c{}}000{NdHh}{NfNd}{{}En}{IhNh}{{{d{Nd}}}Nd}{{{d{hNf}}}Nf}{{{d{Nf}}}Nd}{{EhNdD`}{{Ef{A`}}}}{{{d{hNf}}Ml}{{Ef{A`}}}}{dc{}}0{{{d{Nd}}}{{Ef{Ij}}}}{{{d{Nf}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{Nj}}}Nj}{{{d{C`}}}C`}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{Nj}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhNj}{HjNl}222{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{Nj}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{Nl}}}}{Nj{{Ef{Nn}}}}{Nl{{Ef{O`}}}}{{{d{Ob}}}Od}{{{d{Nj}}}D`}{{{d{Nl}}}D`}{{{d{hNj}}{d{If}}}A`}{{{d{hNl}}{d{hIf}}}A`}{{EhEj}Nl}{NlO`}{{}c{}}000{NjHh}{NlNj}{{}En}{IhOb}{{{d{Nj}}}Nj}{{{d{hNl}}}Nl}{{{d{Nl}}}Nj}{{EhNjD`}{{Ef{A`}}}}{{{d{hNl}}Nn}{{Ef{A`}}}}{dc{}}0{{{d{Nj}}}{{Ef{Ij}}}}{{{d{Nl}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{Nn}}}Nn}{{{d{Of}}}Of}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{Nn}}{d{hDj}}}{{Gh{A`Hf}}}}{HhNn}{cc{}}0{HjO`}11{Nn{{Ef{Jj}}}}{O`{{Ef{Jl}}}}{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{Nn}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{O`}}}}{Nn{{Ef{Mb}}}}{O`{{Ef{Md}}}}{Nn{{Ef{{K`{Jn}}}}}}{O`{{Ef{{Kb{Jn}}}}}}{Nn{{Ef{Kd}}}}{O`{{Ef{Kf}}}}{Nn{{Ef{{Oh{B`}}}}}}{O`{{Ef{{Oj{B`}}}}}};:76{{{d{Nn}}}D`}{{{d{O`}}}D`}101010101010{{{d{hNn}}{d{If}}}A`}{{{d{hO`}}{d{hIf}}}A`}{{O`Ej}Jl}{{O`Ej}Md}{{O`Ej}{{Kb{Jn}}}}{{O`Ej}Kf}{{O`Ej}{{Oj{B`}}}}4{{EhEj}O`}4{{}c{}}000{NnHh}{O`Nn}{{}En}{IhOd}{{{d{Nn}}}Nn}{{{d{hO`}}}O`}{{{d{O`}}}Nn}{{{d{hO`}}c}A`{{Kj{Kh}}}}{{{d{hO`}}c}{{Ef{A`}}}{{Kj{Mj}}}}{{{d{hO`}}{K`{Jn}}}{{Ef{A`}}}}{{{d{hO`}}Kd}A`}{{{d{hO`}}c}{{Ef{A`}}}{{Kj{{Ol{B`}}}}}}4{{EhNnD`}{{Ef{A`}}}}4{dc{}}0{{{d{Nn}}}{{Ef{Ij}}}}{{{d{O`}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{On}}}On}{{{d{A@`}}}A@`}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{On}}{d{hDj}}}{{Gh{A`Hf}}}}{HhOn}{cc{}}{HjA@b}111{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{On}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{A@b}}}}{On{{Ef{{K`{A@d}}}}}}{A@b{{Ef{{Kb{A@d}}}}}}{{{d{On}}}D`}{{{d{A@b}}}D`}{{{d{hOn}}{d{If}}}A`}{{{d{hA@b}}{d{hIf}}}A`}{{A@bEj}{{Kb{A@d}}}}{{EhEj}A@b}{{}c{}}000{OnHh}{A@bOn}{{}En}{IhA@f}{{{d{On}}}On}{{{d{hA@b}}}A@b}{{{d{A@b}}}On}{{{d{hA@b}}{K`{A@d}}}{{Ef{A`}}}}{{EhOnD`}{{Ef{A`}}}}{dc{}}0{{{d{On}}}{{Ef{Ij}}}}{{{d{A@b}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{A@h}}}A@h}{{{d{Cb}}}Cb}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{A@h}}{d{hDj}}}{{Gh{A`Hf}}}}{HhA@h}{cc{}}{HjA@j}111{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{A@h}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{A@j}}}}{A@h{{Ef{On}}}}{A@j{{Ef{A@b}}}}{{{d{A@l}}}A@f}{{{d{A@h}}}D`}{{{d{A@j}}}D`}{{{d{hA@h}}{d{If}}}A`}{{{d{hA@j}}{d{hIf}}}A`}{{EhEj}A@j}{A@jA@b}{{}c{}}000{A@hHh}{A@jA@h}{{}En}{IhA@l}{{{d{A@h}}}A@h}{{{d{hA@j}}}A@j}{{{d{A@j}}}A@h}{{EhA@hD`}{{Ef{A`}}}}{{{d{hA@j}}On}{{Ef{A`}}}}{dc{}}0{{{d{A@h}}}{{Ef{Ij}}}}{{{d{A@j}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{A@n}}}A@n}{{{d{Df}}}Df}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{A@n}}{d{hDj}}}{{Gh{A`Hf}}}}{HhA@n}{cc{}}0{HjAA`}11{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{A@n}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AA`}}}}{A@n{{Ef{AAb}}}}{AA`{{Ef{AAd}}}}{{{d{AAf}}}AAh}{{{d{A@n}}}D`}{{{d{AA`}}}D`}{{{d{hA@n}}{d{If}}}A`}{{{d{hAA`}}{d{hIf}}}A`}{{EhEj}AA`}{AA`AAd}{{}c{}}000{A@nHh}{AA`A@n}{{}En}{IhAAf}{{{d{A@n}}}A@n}{{{d{hAA`}}}AA`}{{{d{AA`}}}A@n}{{EhA@nD`}{{Ef{A`}}}}{{{d{hAA`}}AAb}{{Ef{A`}}}}{dc{}}0{{{d{A@n}}}{{Ef{Ij}}}}{{{d{AA`}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AAb}}}AAb}{{{d{AAj}}}AAj}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AAb}}{d{hDj}}}{{Gh{A`Hf}}}}{HhAAb}{cc{}}0{HjAAd}11{AAb{{Gh{AnM`}}}}{AAd{{Gh{AnM`}}}}{AAb{{Ef{Mb}}}}{AAd{{Ef{Md}}}}{AAb{{Ef{{K`{Jn}}}}}}{AAd{{Ef{{Kb{Jn}}}}}}{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AAb}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AAd}}}}{AAb{{Ef{Jj}}}}{AAd{{Ef{Jl}}}}54{AAb{{Ef{Kd}}}}{AAd{{Ef{Kf}}}}{AAbD`}{AAdD`}{AAbCf}{AAdCf}{{{d{AAb}}}D`}{{{d{AAd}}}D`}10101010{{{d{hAAb}}{d{If}}}A`}{{{d{hAAd}}{d{hIf}}}A`}{{AAdEj}Md}{{AAdEj}{{Kb{Jn}}}}{{AAdEj}Jl}1{{AAdEj}Kf}{{EhEj}AAd}{{}c{}}000{AAbHh}{AAdAAb}{{}En}{IhAAh}{{{d{AAb}}}AAb}{{{d{hAAd}}}AAd}{{{d{AAd}}}AAb}{{{d{hAAd}}An}A`}{{{d{hAAd}}c}{{Ef{A`}}}{{Kj{Mj}}}}{{{d{hAAd}}{K`{Jn}}}{{Ef{A`}}}}{{{d{hAAd}}c}A`{{Kj{Kh}}}}1{{{d{hAAd}}Kd}A`}{{EhAAbD`}{{Ef{A`}}}}{{{d{hAAd}}D`}A`}{{{d{hAAd}}Cf}A`}{dc{}}0{{{d{AAb}}}{{Ef{Ij}}}}{{{d{AAd}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AAl}}}AAl}{{{d{AAn}}}AAn}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AAl}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhAAl}1{HjAB`}22{AAlABb}{AB`ABb}{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AAl}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AB`}}}}{AAl{{Ef{Kd}}}}{AB`{{Ef{Kf}}}}10{AAlD`}{AB`D`}{{{d{AAl}}}D`}{{{d{AB`}}}D`}10{{{d{hAAl}}{d{If}}}A`}{{{d{hAB`}}{d{hIf}}}A`}{{EhEj}AB`}{{AB`Ej}Kf}0{{}c{}}000{AAlHh}{AB`AAl}{{}En}{IhABd}{{{d{AAl}}}AAl}{{{d{hAB`}}}AB`}{{{d{AB`}}}AAl}{{{d{hAB`}}ABb}A`}{{EhAAlD`}{{Ef{A`}}}}{{{d{hAB`}}Kd}A`}0{{{d{hAB`}}D`}A`}{dc{}}0{{{d{AAl}}}{{Ef{Ij}}}}{{{d{AB`}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{ABf}}}ABf}{{{d{Dh}}}Dh}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{ABf}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhABf}{HjABh}222{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{ABf}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{ABh}}}}{ABf{{Ef{AAl}}}}{ABh{{Ef{AB`}}}}{{{d{ABj}}}ABd}{{{d{ABf}}}D`}{{{d{ABh}}}D`}{{{d{hABf}}{d{If}}}A`}{{{d{hABh}}{d{hIf}}}A`}{{EhEj}ABh}{ABhAB`}{{}c{}}000{ABfHh}{ABhABf}{{}En}{IhABj}{{{d{ABf}}}ABf}{{{d{hABh}}}ABh}{{{d{ABh}}}ABf}{{EhABfD`}{{Ef{A`}}}}{{{d{hABh}}AAl}{{Ef{A`}}}}{dc{}}0{{{d{ABf}}}{{Ef{Ij}}}}{{{d{ABh}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````````{d{{d{c}}}{}}0000{{{d{h}}}{{d{hc}}}{}}0000{{{d{ABl}}}ABl}{{{d{Mf}}}Mf}{{{d{ABn}}}ABn}{{d{d{hc}}}A`{}}00{{dBb}A`}00{{{d{ABn}}{d{ABn}}}D`}{{{d{ABl}}{d{hDj}}}{{Gh{A`Hf}}}}{{{d{ABn}}{d{hDj}}}Dl}{cc{}}{HhABl}1{HjAC`}222{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{ABl}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AC`}}}}{ABlCf}{AC`Cf}{ABl{{Ef{Jj}}}}{AC`{{Ef{Jl}}}}{ABl{{Gh{ABnM`}}}}{AC`{{Gh{ABnM`}}}}{{{d{ABl}}}D`}{{{d{AC`}}}D`}{{{d{hABl}}{d{If}}}A`}{{{d{hAC`}}{d{hIf}}}A`}{{AC`Ej}Jl}{{EhEj}AC`}{{}c{}}0000{ABlHh}{AC`ABl}{{}En}0{IhACb}{{{d{ABl}}}ABl}{{{d{hAC`}}}AC`}{{{d{AC`}}}ABl}{{{d{hAC`}}Cf}A`}{{{d{hAC`}}c}A`{{Kj{Kh}}}}{{EhABlD`}{{Ef{A`}}}}{{{d{hAC`}}ABn}A`}{dc{}}00{{{d{ABl}}}{{Ef{Ij}}}}{{{d{AC`}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{Ch{{Gh{ABn}}}}1{{}{{Gh{c}}}{}}0000{dGj}0000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{ACd}}}ACd}{{{d{A@d}}}A@d}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{ACd}}{d{hDj}}}{{Gh{A`Hf}}}}{HhACd}{cc{}}0{HjACf}11{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{ACd}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{ACf}}}}{ACd{{Ef{Jj}}}}{ACf{{Ef{Jl}}}}{ACd{{Gh{B`M`}}}}{ACf{{Gh{B`M`}}}}{{{d{ACd}}}D`}{{{d{ACf}}}D`}{{{d{hACd}}{d{If}}}A`}{{{d{hACf}}{d{hIf}}}A`}{{ACfEj}Jl}{{EhEj}ACf}{{}c{}}000{ACdHh}{ACfACd}{{}En}{IhACh}{{{d{ACd}}}ACd}{{{d{hACf}}}ACf}{{{d{ACf}}}ACd}{{{d{hACf}}c}A`{{Kj{Kh}}}}{{EhACdD`}{{Ef{A`}}}}{{{d{hACf}}B`}A`}{dc{}}0{{{d{ACd}}}{{Ef{Ij}}}}{{{d{ACf}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{ACj}}}ACj}{{{d{Fd}}}Fd}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{ACj}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhACj}1{HjACl}22{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{ACj}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{ACl}}}}{ACj{{Ef{ACn}}}}{ACl{{Ef{AD`}}}}{{{d{ADb}}}ADd}{{{d{ACj}}}D`}{{{d{ACl}}}D`}{{{d{hACj}}{d{If}}}A`}{{{d{hACl}}{d{hIf}}}A`}{{EhEj}ACl}{AClAD`}{{}c{}}000{ACjHh}{AClACj}{{}En}{IhADb}{{{d{ACj}}}ACj}{{{d{hACl}}}ACl}{{{d{ACl}}}ACj}{{EhACjD`}{{Ef{A`}}}}{{{d{hACl}}ACn}{{Ef{A`}}}}{dc{}}0{{{d{ACj}}}{{Ef{Ij}}}}{{{d{ACl}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{ADf}}}ADf}{{{d{Ff}}}Ff}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{ADf}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhADf}{HjADh}222{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{ADf}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{ADh}}}}{ADf{{Ef{ADj}}}}{ADh{{Ef{ADl}}}}{{{d{ADn}}}AE`}{{{d{ADf}}}D`}{{{d{ADh}}}D`}{{{d{hADf}}{d{If}}}A`}{{{d{hADh}}{d{hIf}}}A`}{{EhEj}ADh}{ADhADl}{{}c{}}000{ADfHh}{ADhADf}{{}En}{IhADn}{{{d{ADf}}}ADf}{{{d{hADh}}}ADh}{{{d{ADh}}}ADf}{{EhADfD`}{{Ef{A`}}}}{{{d{hADh}}ADj}{{Ef{A`}}}}{dc{}}0{{{d{ADf}}}{{Ef{Ij}}}}{{{d{ADh}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{ACn}}}ACn}{{{d{AEb}}}AEb}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{ACn}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhACn}{HjAD`}222{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{ACn}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AD`}}}}{ACn{{Ef{Jj}}}}{AD`{{Ef{Jl}}}}{ACn{{Ef{{K`{Jn}}}}}}{AD`{{Ef{{Kb{Jn}}}}}}{ACn{{Ef{Kd}}}}{AD`{{Ef{Kf}}}}{{{d{ACn}}}D`}{{{d{AD`}}}D`}1010{{{d{hACn}}{d{If}}}A`}{{{d{hAD`}}{d{hIf}}}A`}{{AD`Ej}Jl}{{AD`Ej}{{Kb{Jn}}}}{{AD`Ej}Kf}{{EhEj}AD`}{{}c{}}000{ACnHh}{AD`ACn}{{}En}{IhADd}{{{d{ACn}}}ACn}{{{d{hAD`}}}AD`}{{{d{AD`}}}ACn}{{{d{hAD`}}c}A`{{Kj{Kh}}}}{{{d{hAD`}}{K`{Jn}}}{{Ef{A`}}}}{{{d{hAD`}}Kd}A`}{{EhACnD`}{{Ef{A`}}}}{dc{}}0{{{d{ACn}}}{{Ef{Ij}}}}{{{d{AD`}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{ADj}}}ADj}{{{d{AEd}}}AEd}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{ADj}}{d{hDj}}}{{Gh{A`Hf}}}}{HhADj}{cc{}}0{HjADl}11{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{ADj}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{ADl}}}}{{{d{hADj}}{d{If}}}A`}{{{d{hADl}}{d{hIf}}}A`}{{EhEj}ADl}{{}c{}}000{ADjHh}{ADlADj}{{}En}{IhAE`}{{{d{ADj}}}ADj}{{{d{hADl}}}ADl}{{{d{ADl}}}ADj}{{EhADjD`}{{Ef{A`}}}}{dc{}}0{{{d{ADj}}}{{Ef{Ij}}}}{{{d{ADl}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AEf}}}AEf}{{{d{Fl}}}Fl}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AEf}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhAEf}1{HjAEh}22{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AEf}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AEh}}}}{AEf{{Ef{AEj}}}}{AEh{{Ef{AEl}}}}{{{d{AEn}}}AF`}{{{d{AEf}}}D`}{{{d{AEh}}}D`}{{{d{hAEf}}{d{If}}}A`}{{{d{hAEh}}{d{hIf}}}A`}{{EhEj}AEh}{AEhAEl}{{}c{}}000{AEfHh}{AEhAEf}{{}En}{IhAEn}{{{d{AEf}}}AEf}{{{d{hAEh}}}AEh}{{{d{AEh}}}AEf}{{EhAEfD`}{{Ef{A`}}}}{{{d{hAEh}}AEj}{{Ef{A`}}}}{dc{}}0{{{d{AEf}}}{{Ef{Ij}}}}{{{d{AEh}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AFb}}}AFb}{{{d{Fn}}}Fn}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AFb}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhAFb}{HjAFd}222{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AFb}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AFd}}}}{AFb{{Ef{AFf}}}}{AFd{{Ef{AFh}}}}{{{d{AFj}}}AFl}{{{d{AFb}}}D`}{{{d{AFd}}}D`}{{{d{hAFb}}{d{If}}}A`}{{{d{hAFd}}{d{hIf}}}A`}{{EhEj}AFd}{AFdAFh}{{}c{}}000{AFbHh}{AFdAFb}{{}En}{IhAFj}{{{d{AFb}}}AFb}{{{d{hAFd}}}AFd}{{{d{AFd}}}AFb}{{EhAFbD`}{{Ef{A`}}}}{{{d{hAFd}}AFf}{{Ef{A`}}}}{dc{}}0{{{d{AFb}}}{{Ef{Ij}}}}{{{d{AFd}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AEj}}}AEj}{{{d{AFn}}}AFn}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AEj}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhAEj}1{HjAEl}22{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AEj}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AEl}}}}{AEjCh}{AElCh}{AEj{{Ef{Jj}}}}{AEl{{Ef{Jl}}}}{AEj{{Ef{{K`{Jn}}}}}}{AEl{{Ef{{Kb{Jn}}}}}}{AEj{{Ef{Kd}}}}{AEl{{Ef{Kf}}}}76{{{d{AEj}}}D`}{{{d{AEl}}}D`}1010{{{d{hAEj}}{d{If}}}A`}{{{d{hAEl}}{d{hIf}}}A`}{{AElEj}Jl}{{AElEj}{{Kb{Jn}}}}{{AElEj}Kf}{{EhEj}AEl}{{}c{}}000{AEjHh}{AElAEj}{{}En}{IhAF`}{{{d{AEj}}}AEj}{{{d{hAEl}}}AEl}{{{d{AEl}}}AEj}{{{d{hAEl}}Ch}A`}{{{d{hAEl}}c}A`{{Kj{Kh}}}}{{{d{hAEl}}{K`{Jn}}}{{Ef{A`}}}}{{{d{hAEl}}Kd}A`}{{EhAEjD`}{{Ef{A`}}}}4{dc{}}0{{{d{AEj}}}{{Ef{Ij}}}}{{{d{AEl}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AFf}}}AFf}{{{d{AG`}}}AG`}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AFf}}{d{hDj}}}{{Gh{A`Hf}}}}{HhAFf}{cc{}}{HjAFh}111{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AFf}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AFh}}}}{{{d{hAFf}}{d{If}}}A`}{{{d{hAFh}}{d{hIf}}}A`}{{EhEj}AFh}{{}c{}}000{AFfHh}{AFhAFf}{{}En}{IhAFl}{{{d{AFf}}}AFf}{{{d{hAFh}}}AFh}{{{d{AFh}}}AFf}{{EhAFfD`}{{Ef{A`}}}}{dc{}}0{{{d{AFf}}}{{Ef{Ij}}}}{{{d{AFh}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AGb}}}AGb}{{{d{Gd}}}Gd}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AGb}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhAGb}{HjAGd}222{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AGb}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AGd}}}}{AGb{{Ef{AGf}}}}{AGd{{Ef{AGh}}}}{{{d{AGj}}}AGl}{{{d{AGb}}}D`}{{{d{AGd}}}D`}{{{d{hAGb}}{d{If}}}A`}{{{d{hAGd}}{d{hIf}}}A`}{{EhEj}AGd}{AGdAGh}{{}c{}}000{AGbHh}{AGdAGb}{{}En}{IhAGj}{{{d{AGb}}}AGb}{{{d{hAGd}}}AGd}{{{d{AGd}}}AGb}{{EhAGbD`}{{Ef{A`}}}}{{{d{hAGd}}AGf}{{Ef{A`}}}}{dc{}}0{{{d{AGb}}}{{Ef{Ij}}}}{{{d{AGd}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AGf}}}AGf}{{{d{AGn}}}AGn}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AGf}}{d{hDj}}}{{Gh{A`Hf}}}}{HhAGf}{cc{}}0{HjAGh}11{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AGf}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AGh}}}}{AGf{{Ef{{K`{Jn}}}}}}{AGh{{Ef{{Kb{Jn}}}}}}{{{d{AGf}}}D`}{{{d{AGh}}}D`}{{{d{hAGf}}{d{If}}}A`}{{{d{hAGh}}{d{hIf}}}A`}{{AGhEj}{{Kb{Jn}}}}{{EhEj}AGh}{{}c{}}000{AGfHh}{AGhAGf}{{}En}{IhAGl}{{{d{AGf}}}AGf}{{{d{hAGh}}}AGh}{{{d{AGh}}}AGf}{{{d{hAGh}}{K`{Jn}}}{{Ef{A`}}}}{{EhAGfD`}{{Ef{A`}}}}{dc{}}0{{{d{AGf}}}{{Ef{Ij}}}}{{{d{AGh}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AH`}}}AH`}{{{d{AHb}}}AHb}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AH`}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhAH`}1{HjAHd}22{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AH`}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AHd}}}}{AH`{{Ef{Jj}}}}{AHd{{Ef{Jl}}}}{{{d{AH`}}}D`}{{{d{AHd}}}D`}{{{d{hAH`}}{d{If}}}A`}{{{d{hAHd}}{d{hIf}}}A`}{{AHdEj}Jl}{{EhEj}AHd}{{}c{}}000{AH`Hh}{AHdAH`}{{}En}{IhAHf}{{{d{AH`}}}AH`}{{{d{hAHd}}}AHd}{{{d{AHd}}}AH`}{{{d{hAHd}}c}A`{{Kj{Kh}}}}{{EhAH`D`}{{Ef{A`}}}}{dc{}}0{{{d{AH`}}}{{Ef{Ij}}}}{{{d{AHd}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AHh}}}AHh}{{{d{Gf}}}Gf}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AHh}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhAHh}1{HjAHj}22{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AHh}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AHj}}}}{AHh{{Ef{AH`}}}}{AHj{{Ef{AHd}}}}{{{d{AHl}}}AHf}{{{d{AHh}}}D`}{{{d{AHj}}}D`}{{{d{hAHh}}{d{If}}}A`}{{{d{hAHj}}{d{hIf}}}A`}{{EhEj}AHj}{AHjAHd}{{}c{}}000{AHhHh}{AHjAHh}{{}En}{IhAHl}{{{d{AHh}}}AHh}{{{d{hAHj}}}AHj}{{{d{AHj}}}AHh}{{EhAHhD`}{{Ef{A`}}}}{{{d{hAHj}}AH`}{{Ef{A`}}}}{dc{}}0{{{d{AHh}}}{{Ef{Ij}}}}{{{d{AHj}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AHn}}}AHn}{{{d{Jn}}}Jn}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AHn}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhAHn}1{HjAI`}22{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AHn}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AI`}}}}{AHn{{Ef{Jj}}}}{AI`{{Ef{Jl}}}}10{{{d{AHn}}}D`}{{{d{AI`}}}D`}10{{{d{hAHn}}{d{If}}}A`}{{{d{hAI`}}{d{hIf}}}A`}{{AI`Ej}Jl}{{EhEj}AI`}1{{}c{}}000{AHnHh}{AI`AHn}{{}En}{IhAIb}{{{d{AHn}}}AHn}{{{d{hAI`}}}AI`}{{{d{AI`}}}AHn}{{{d{hAI`}}c}A`{{Kj{Kh}}}}{{EhAHnD`}{{Ef{A`}}}}1{dc{}}0{{{d{AHn}}}{{Ef{Ij}}}}{{{d{AI`}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AId}}}AId}{{{d{H`}}}H`}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AId}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhAId}1{HjAIf}22{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AId}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AIf}}}}{AId{{Ef{AIh}}}}{AIf{{Ef{AIj}}}}{{{d{AIl}}}AIn}{{{d{AId}}}D`}{{{d{AIf}}}D`}{{{d{hAId}}{d{If}}}A`}{{{d{hAIf}}{d{hIf}}}A`}{{EhEj}AIf}{AIfAIj}{{}c{}}000{AIdHh}{AIfAId}{{}En}{IhAIl}{{{d{AId}}}AId}{{{d{hAIf}}}AIf}{{{d{AIf}}}AId}{{EhAIdD`}{{Ef{A`}}}}{{{d{hAIf}}AIh}{{Ef{A`}}}}{dc{}}0{{{d{AId}}}{{Ef{Ij}}}}{{{d{AIf}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AIh}}}AIh}{{{d{AJ`}}}AJ`}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AIh}}{d{hDj}}}{{Gh{A`Hf}}}}{HhAIh}{cc{}}{HjAIj}111{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AIh}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AIj}}}}{AIh{{Ef{{K`{Jn}}}}}}{AIj{{Ef{{Kb{Jn}}}}}}{AIh{{Ef{Kd}}}}{AIj{{Ef{Kf}}}}{AIhD`}{AIjD`}{{{d{AIh}}}D`}{{{d{AIj}}}D`}10{{{d{hAIh}}{d{If}}}A`}{{{d{hAIj}}{d{hIf}}}A`}{{AIjEj}{{Kb{Jn}}}}{{AIjEj}Kf}{{EhEj}AIj}{{}c{}}000{AIhHh}{AIjAIh}{{}En}{IhAIn}{{{d{AIh}}}AIh}{{{d{hAIj}}}AIj}{{{d{AIj}}}AIh}{{{d{hAIj}}{K`{Jn}}}{{Ef{A`}}}}{{{d{hAIj}}Kd}A`}{{EhAIhD`}{{Ef{A`}}}}{{{d{hAIj}}D`}A`}{dc{}}0{{{d{AIh}}}{{Ef{Ij}}}}{{{d{AIj}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AJb}}}AJb}{{{d{AJd}}}AJd}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AJb}}{d{hDj}}}{{Gh{A`Hf}}}}{HhAJb}{cc{}}0{HjAJf}11{AJb{{Ef{Jj}}}}{AJf{{Ef{Jl}}}}101010{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AJb}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AJf}}}}{AJb{{Ef{Kd}}}}{AJf{{Ef{Kf}}}}{AJbEj}{AJfEj}76767676{{{d{AJb}}}D`}{{{d{AJf}}}D`}1010101010101010{{{d{hAJb}}{d{If}}}A`}{{{d{hAJf}}{d{hIf}}}A`}{{AJfEj}Jl}000{{AJfEj}Kf}{{EhEj}AJf}2222{{}c{}}000{AJbHh}{AJfAJb}{{}En}{IhAJh}{{{d{AJb}}}AJb}{{{d{hAJf}}}AJf}{{{d{AJf}}}AJb}{{{d{hAJf}}c}A`{{Kj{Kh}}}}000{{{d{hAJf}}Kd}A`}{{EhAJbD`}{{Ef{A`}}}}{{{d{hAJf}}Ej}A`}3333{dc{}}0{{{d{AJb}}}{{Ef{Ij}}}}{{{d{AJf}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000````{d{{d{c}}}{}}000{{{d{h}}}{{d{hc}}}{}}000{{{d{AJj}}}AJj}{{{d{Hb}}}Hb}{{d{d{hc}}}A`{}}0{{dBb}A`}0{{{d{AJj}}{d{hDj}}}{{Gh{A`Hf}}}}{cc{}}{HhAJj}1{HjAJl}22{{{d{Dn}}{Ed{{d{{Eb{E`}}}}}}}{{Ef{AJj}}}}{{Eh{Ed{{d{{Eb{E`}}}}}}}{{Ef{AJl}}}}{AJj{{Ef{AJb}}}}{AJl{{Ef{AJf}}}}{{{d{AJn}}}AJh}{{{d{AJj}}}D`}{{{d{AJl}}}D`}{{{d{hAJj}}{d{If}}}A`}{{{d{hAJl}}{d{hIf}}}A`}{{EhEj}AJl}{AJlAJf}{{}c{}}000{AJjHh}{AJlAJj}{{}En}{IhAJn}{{{d{AJj}}}AJj}{{{d{hAJl}}}AJl}{{{d{AJl}}}AJj}{{EhAJjD`}{{Ef{A`}}}}{{{d{hAJl}}AJb}{{Ef{A`}}}}{dc{}}0{{{d{AJj}}}{{Ef{Ij}}}}{{{d{AJl}}}{{Ef{Ij}}}}{c{{Gh{e}}}{}{}}000{{}{{Gh{c}}}{}}000{dGj}000","D":"BDh","p":[[5,"Client",2],[1,"reference",null,null,1],[10,"ClientHook",2738],[0,"mut"],[10,"Server",2],[8,"AttachContainerParams",2],[8,"AttachContainerResults",2],[1,"unit"],[5,"Error",2739],[5,"Promise",2740],[5,"Owned",190],[5,"Owned",255],[5,"Request",2740],[5,"Owned",2],[6,"CgroupManager",2],[6,"Namespace",2],[1,"u8"],[8,"CreateContainerParams",2],[8,"CreateContainerResults",2],[5,"Owned",469],[5,"Owned",740],[8,"CreateNamespacesParams",2],[8,"CreateNamespacesResults",2],[5,"Owned",805],[5,"Owned",1034],[5,"ServerDispatch",2],[1,"u64"],[1,"u16"],[5,"Owned",2741],[5,"Params",2740],[5,"Results",2740],[1,"bool"],[8,"ExecSyncContainerParams",2],[8,"ExecSyncContainerResults",2],[5,"Owned",1099],[5,"Owned",1337],[5,"Formatter",2742],[8,"Result",2742],[5,"PointerReader",2743],[5,"Word",2739],[1,"slice"],[6,"Option",2744,null,1],[8,"Result",2739],[5,"PointerBuilder",2743],[1,"u32"],[5,"Box",2745,null,1],[5,"Type",2746],[8,"ReopenLogContainerParams",2],[8,"ReopenLogContainerResults",2],[5,"Owned",1558],[5,"Owned",1623],[8,"SetWindowSizeContainerParams",2],[8,"SetWindowSizeContainerResults",2],[5,"Owned",1822],[5,"Owned",1887],[8,"StartFdSocketParams",2],[8,"StartFdSocketResults",2],[5,"Owned",2092],[5,"Owned",2285],[6,"Result",2747,null,1],[5,"TypeId",2748],[8,"VersionParams",2],[8,"VersionResults",2],[5,"Owned",2420],[5,"Owned",2673],[5,"Reader",190],[5,"Error",2742],[5,"StructReader",2743],[5,"StructBuilder",2743],[5,"Builder",190],[5,"Reader",320],[5,"Builder",320],[5,"Pipeline",190],[5,"Pipeline",320],[8,"CapTable",2743],[5,"Pipeline",2741],[5,"MessageSize",2739],[5,"Reader",255],[5,"Builder",255],[5,"Reader",411],[5,"Builder",411],[5,"Pipeline",255],[5,"Pipeline",411],[5,"Owned",320],[5,"Reader",2749],[5,"Builder",2749],[5,"Owned",2350],[5,"Reader",2750],[5,"Builder",2750],[8,"Reader",2751],[8,"Builder",2751],[5,"Owned",2749],[10,"SetterInput",2752],[5,"Owned",411],[5,"Reader",469],[5,"Builder",469],[5,"Reader",534],[5,"Builder",534],[5,"Pipeline",469],[5,"Pipeline",534],[5,"Owned",534],[5,"Reader",2753],[5,"Builder",2753],[5,"NotInSchema",2739],[5,"Reader",2754],[5,"Builder",2754],[5,"Owned",1402],[5,"Owned",2753],[5,"Owned",2754],[5,"Reader",679],[5,"Owned",679],[5,"Builder",679],[5,"Pipeline",679],[5,"Reader",740],[5,"Builder",740],[5,"Pipeline",740],[5,"Reader",805],[5,"Builder",805],[5,"Reader",870],[5,"Builder",870],[5,"Pipeline",805],[5,"Pipeline",870],[5,"Owned",870],[5,"Reader",2755],[5,"Builder",2755],[5,"Owned",2755],[5,"Reader",970],[5,"Owned",970],[5,"Builder",970],[5,"Owned",1491],[5,"Pipeline",970],[5,"Reader",1034],[5,"Builder",1034],[5,"Pipeline",1034],[5,"Reader",1099],[5,"Builder",1099],[5,"Reader",1164],[5,"Builder",1164],[5,"Pipeline",1099],[5,"Pipeline",1164],[5,"Owned",1164],[5,"Reader",1261],[5,"Owned",1261],[5,"Builder",1261],[1,"i32"],[5,"Pipeline",1261],[5,"Reader",1337],[5,"Builder",1337],[5,"Pipeline",1337],[5,"Reader",1402],[6,"Type",1402],[5,"Builder",1402],[5,"Pipeline",1402],[5,"Reader",1491],[5,"Builder",1491],[5,"Pipeline",1491],[5,"Reader",1558],[5,"Builder",1558],[5,"Reader",1688],[5,"Builder",1688],[5,"Pipeline",1558],[5,"Pipeline",1688],[5,"Reader",1623],[5,"Builder",1623],[5,"Reader",1764],[5,"Builder",1764],[5,"Pipeline",1623],[5,"Pipeline",1764],[5,"Owned",1688],[5,"Owned",1764],[5,"Reader",1822],[5,"Builder",1822],[5,"Reader",1952],[5,"Builder",1952],[5,"Pipeline",1822],[5,"Pipeline",1952],[5,"Reader",1887],[5,"Builder",1887],[5,"Reader",2034],[5,"Builder",2034],[5,"Pipeline",1887],[5,"Pipeline",2034],[5,"Owned",1952],[5,"Owned",2034],[5,"Reader",2092],[5,"Builder",2092],[5,"Reader",2157],[5,"Builder",2157],[5,"Pipeline",2092],[5,"Pipeline",2157],[5,"Owned",2157],[5,"Reader",2221],[5,"Owned",2221],[5,"Builder",2221],[5,"Pipeline",2221],[5,"Reader",2285],[5,"Builder",2285],[5,"Pipeline",2285],[5,"Reader",2350],[5,"Builder",2350],[5,"Pipeline",2350],[5,"Reader",2420],[5,"Builder",2420],[5,"Reader",2485],[5,"Builder",2485],[5,"Pipeline",2420],[5,"Pipeline",2485],[5,"Owned",2485],[5,"Reader",2558],[5,"Owned",2558],[5,"Builder",2558],[5,"Pipeline",2558],[5,"Reader",2673],[5,"Builder",2673],[5,"Pipeline",2673]],"r":[],"b":[[94,"impl-FromPointerReader%3C\'a%3E-for-Client"],[95,"impl-FromPointerBuilder%3C\'a%3E-for-Client"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAI4JdgAAAFgAXgATAHcAWgDTAAEA2AAKAOcAKwAUAQEAGQEKACgBLABXAQAAWgEfAH4BMQCyAQAAtQEEAL4BKwDsAQAA7wEKAP4BKwArAgEAMAJLAIACOwC+AgAAwQIGAMwCLAD7AgAA/gIKAA0DKwA6AwEAPwMKAE4DLAB9AwAAgAMnAKwDMgDgAwAA5AMJAPIDLAAgBAAAJAQKADMELABiBAAAZQQKAHQELACjBAAApgQjAM4EMgACBQAABAUAAAcFEgAeBS4ATgUBAFMFCgBiBTYAmgUAAJwFAACgBQ0AswU0AOoFAADtBQsA/QUsACsGAAAtBgAAMAYKAD8GKwBsBgEAcQYKAIAGKwCtBgEAsgYTAMoGLgD7BgAA/gYEAAcHKgAzBwAANQcAADgHCgBHBysAdAcBAHkHCgCIBysAtQcAALcHAAC6BxcA1gcwAAgIAAAMCAQAFQgqAEEIAQBGCAoAVQgsAIQIAACHCAkAlQgrAMIIAADECAAAxwgJANUIKwACCQAABAkAAAcJCgAWCSsAQwkAAEUJAABICQ4AWwksAIkJAACLCQAAjgkKAJ0JLADLCQAAzwkQAOQJLgAVCgAAGAozAFAKNACGCgAAiAoAAIsKCgCaChgA","P":[[39,"T"],[50,""],[54,"T"],[58,""],[74,"_T"],[78,""],[88,"T"],[93,"_S"],[94,""],[113,"U"],[118,""],[162,"T"],[166,"U,T"],[170,""],[171,"U,T"],[172,""],[173,"U"],[178,""],[194,"T"],[202,""],[204,"T"],[206,""],[209,"T"],[210,""],[212,"T"],[215,""],[226,"U"],[230,""],[239,"T"],[241,""],[243,"U,T"],[247,"U"],[251,""],[259,"T"],[267,""],[269,"T"],[271,""],[274,"T"],[275,""],[277,"T"],[280,""],[291,"U"],[295,""],[304,"T"],[306,""],[308,"U,T"],[312,"U"],[316,""],[324,"T"],[332,""],[334,"T"],[336,""],[340,"T"],[342,""],[343,"T"],[345,""],[377,"U"],[381,""],[388,""],[390,""],[393,""],[394,""],[395,"T"],[397,""],[399,"U,T"],[403,"U"],[407,""],[415,"T"],[423,""],[425,"T"],[427,""],[431,"T"],[433,""],[434,"T"],[436,""],[441,"U"],[445,""],[453,"T"],[455,""],[457,"U,T"],[461,"U"],[465,""],[473,"T"],[481,""],[483,"T"],[485,""],[489,"T"],[491,""],[492,"T"],[494,""],[505,"U"],[509,""],[518,"T"],[520,""],[522,"U,T"],[526,"U"],[530,""],[538,"T"],[546,""],[548,"T"],[550,""],[553,"T"],[554,""],[556,"T"],[559,""],[635,"U"],[639,""],[646,""],[648,""],[649,""],[651,""],[652,""],[656,""],[659,""],[660,""],[663,"T"],[665,""],[667,"U,T"],[671,"U"],[675,""],[683,"T"],[691,""],[693,"T"],[695,""],[699,"T"],[701,""],[702,"T"],[704,""],[711,"U"],[715,""],[724,"T"],[726,""],[728,"U,T"],[732,"U"],[736,""],[744,"T"],[752,""],[754,"T"],[756,""],[760,"T"],[762,""],[763,"T"],[765,""],[776,"U"],[780,""],[789,"T"],[791,""],[793,"U,T"],[797,"U"],[801,""],[809,"T"],[817,""],[819,"T"],[821,""],[824,"T"],[825,""],[827,"T"],[830,""],[841,"U"],[845,""],[854,"T"],[856,""],[858,"U,T"],[862,"U"],[866,""],[874,"T"],[882,""],[884,"T"],[886,""],[890,"T"],[892,""],[893,"T"],[895,""],[935,"U"],[939,""],[946,""],[948,""],[950,""],[952,""],[953,""],[954,"T"],[956,""],[958,"U,T"],[962,"U"],[966,""],[974,"T"],[982,""],[984,"T"],[986,""],[990,"T"],[991,""],[992,"T"],[995,""],[1005,"U"],[1009,""],[1018,"T"],[1020,""],[1022,"U,T"],[1026,"U"],[1030,""],[1038,"T"],[1046,""],[1048,"T"],[1050,""],[1054,"T"],[1055,""],[1056,"T"],[1059,""],[1070,"U"],[1074,""],[1083,"T"],[1085,""],[1087,"U,T"],[1091,"U"],[1095,""],[1103,"T"],[1111,""],[1113,"T"],[1115,""],[1119,"T"],[1121,""],[1122,"T"],[1124,""],[1135,"U"],[1139,""],[1148,"T"],[1150,""],[1152,"U,T"],[1156,"U"],[1160,""],[1168,"T"],[1176,""],[1178,"T"],[1180,""],[1184,"T"],[1186,""],[1187,"T"],[1189,""],[1225,"U"],[1229,""],[1237,""],[1238,""],[1239,""],[1240,""],[1245,"T"],[1247,""],[1249,"U,T"],[1253,"U"],[1257,""],[1265,"T"],[1273,""],[1275,"T"],[1277,""],[1280,"T"],[1281,""],[1282,"T"],[1283,""],[1284,"T"],[1286,""],[1305,"U"],[1309,""],[1321,"T"],[1323,""],[1325,"U,T"],[1329,"U"],[1333,""],[1341,"T"],[1349,""],[1351,"T"],[1353,""],[1356,"T"],[1357,""],[1359,"T"],[1362,""],[1373,"U"],[1377,""],[1386,"T"],[1388,""],[1390,"U,T"],[1394,"U"],[1398,""],[1410,"T"],[1420,""],[1423,"T"],[1426,""],[1432,"T"],[1433,""],[1434,"T"],[1435,""],[1436,"T"],[1439,""],[1453,"U"],[1458,""],[1467,""],[1468,""],[1470,"T"],[1473,""],[1475,"U,T"],[1479,""],[1480,"U,T"],[1481,"U"],[1486,""],[1495,"T"],[1503,""],[1505,"T"],[1507,""],[1511,"T"],[1513,""],[1514,"T"],[1516,""],[1528,"U"],[1532,""],[1539,""],[1540,""],[1542,"T"],[1544,""],[1546,"U,T"],[1550,"U"],[1554,""],[1562,"T"],[1570,""],[1572,"T"],[1574,""],[1577,"T"],[1578,""],[1579,"T"],[1580,""],[1581,"T"],[1583,""],[1594,"U"],[1598,""],[1607,"T"],[1609,""],[1611,"U,T"],[1615,"U"],[1619,""],[1627,"T"],[1635,""],[1637,"T"],[1639,""],[1642,"T"],[1643,""],[1645,"T"],[1648,""],[1659,"U"],[1663,""],[1672,"T"],[1674,""],[1676,"U,T"],[1680,"U"],[1684,""],[1692,"T"],[1700,""],[1702,"T"],[1704,""],[1707,"T"],[1708,""],[1710,"T"],[1713,""],[1733,"U"],[1737,""],[1744,""],[1745,""],[1748,"T"],[1750,""],[1752,"U,T"],[1756,"U"],[1760,""],[1768,"T"],[1776,""],[1778,"T"],[1780,""],[1784,"T"],[1786,""],[1787,"T"],[1789,""],[1794,"U"],[1798,""],[1806,"T"],[1808,""],[1810,"U,T"],[1814,"U"],[1818,""],[1826,"T"],[1834,""],[1836,"T"],[1838,""],[1841,"T"],[1842,""],[1843,"T"],[1844,""],[1845,"T"],[1847,""],[1858,"U"],[1862,""],[1871,"T"],[1873,""],[1875,"U,T"],[1879,"U"],[1883,""],[1891,"T"],[1899,""],[1901,"T"],[1903,""],[1906,"T"],[1907,""],[1909,"T"],[1912,""],[1923,"U"],[1927,""],[1936,"T"],[1938,""],[1940,"U,T"],[1944,"U"],[1948,""],[1956,"T"],[1964,""],[1966,"T"],[1968,""],[1971,"T"],[1972,""],[1973,"T"],[1974,""],[1975,"T"],[1977,""],[2001,"U"],[2005,""],[2013,""],[2014,""],[2018,"T"],[2020,""],[2022,"U,T"],[2026,"U"],[2030,""],[2038,"T"],[2046,""],[2048,"T"],[2050,""],[2054,"T"],[2055,""],[2056,"T"],[2059,""],[2064,"U"],[2068,""],[2076,"T"],[2078,""],[2080,"U,T"],[2084,"U"],[2088,""],[2096,"T"],[2104,""],[2106,"T"],[2108,""],[2111,"T"],[2112,""],[2114,"T"],[2117,""],[2128,"U"],[2132,""],[2141,"T"],[2143,""],[2145,"U,T"],[2149,"U"],[2153,""],[2161,"T"],[2169,""],[2171,"T"],[2173,""],[2177,"T"],[2179,""],[2180,"T"],[2182,""],[2192,"U"],[2196,""],[2205,"T"],[2207,""],[2209,"U,T"],[2213,"U"],[2217,""],[2225,"T"],[2233,""],[2235,"T"],[2237,""],[2240,"T"],[2241,""],[2242,"T"],[2243,""],[2244,"T"],[2246,""],[2256,"U"],[2260,""],[2267,""],[2268,""],[2269,"T"],[2271,""],[2273,"U,T"],[2277,"U"],[2281,""],[2289,"T"],[2297,""],[2299,"T"],[2301,""],[2304,"T"],[2305,""],[2306,"T"],[2307,""],[2308,"T"],[2310,""],[2321,"U"],[2325,""],[2334,"T"],[2336,""],[2338,"U,T"],[2342,"U"],[2346,""],[2354,"T"],[2362,""],[2364,"T"],[2366,""],[2369,"T"],[2370,""],[2371,"T"],[2372,""],[2373,"T"],[2375,""],[2390,"U"],[2394,""],[2401,""],[2402,""],[2403,""],[2404,"T"],[2406,""],[2408,"U,T"],[2412,"U"],[2416,""],[2424,"T"],[2432,""],[2434,"T"],[2436,""],[2439,"T"],[2440,""],[2441,"T"],[2442,""],[2443,"T"],[2445,""],[2456,"U"],[2460,""],[2469,"T"],[2471,""],[2473,"U,T"],[2477,"U"],[2481,""],[2489,"T"],[2497,""],[2499,"T"],[2501,""],[2505,"T"],[2506,""],[2507,"T"],[2510,""],[2527,"U"],[2531,""],[2542,"T"],[2544,""],[2546,"U,T"],[2550,"U"],[2554,""],[2562,"T"],[2570,""],[2572,"T"],[2574,""],[2578,"T"],[2580,""],[2581,"T"],[2583,""],[2635,"U"],[2639,""],[2646,""],[2650,""],[2653,""],[2657,"T"],[2659,""],[2661,"U,T"],[2665,"U"],[2669,""],[2677,"T"],[2685,""],[2687,"T"],[2689,""],[2692,"T"],[2693,""],[2694,"T"],[2695,""],[2696,"T"],[2698,""],[2709,"U"],[2713,""],[2722,"T"],[2724,""],[2726,"U,T"],[2730,"U"],[2734,""]]}],["conmonrs",{"t":"FFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Server","Version","attach_container","borrow","","borrow_mut","","build_date","cargo_tree","cargo_version","commit","create_container","create_namespaces","default","eq","equivalent","","","","exec_sync_container","fmt","","from","","into","","into_request","","new","","print","reopen_log_container","rust_version","set_window_size_container","start","start_fd_socket","tag","target","try_from","","try_into","","type_id","","verbose","version","","vzip",""],"q":[[0,"conmonrs"],[49,"conmonrs::server"],[50,"conmon_common::conmon_capnp::conmon"],[51,"capnp"],[52,"capnp::capability"],[53,"conmonrs::version"],[54,"core::fmt"],[55,"tonic::request"],[56,"anyhow"],[57,"core::result"],[58,"core::any"]],"i":"``d0Ab10000011000000110101010100101110010101001010","f":"``{{{f{bd}}hj}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{Ab}}}{{f{Ad}}}}000{{{f{bd}}AfAh}{{A`{ln}}}}{{{f{bd}}AjAl}{{A`{ln}}}}{{}Ab}{{{f{Ab}}{f{Ab}}}An}{{f{f{c}}}An{}}000{{{f{bd}}B`Bb}{{A`{ln}}}}{{{f{d}}{f{bBd}}}Bf}{{{f{Ab}}{f{bBd}}}Bf}{cc{}}0{{}c{}}0{{}{{Bh{c}}}{}}0{{}{{Bj{d}}}}{AnAb}{{{f{Ab}}}l}{{{f{bd}}BlBn}{{A`{ln}}}}?{{{f{bd}}C`Cb}{{A`{ln}}}}{d{{Bj{l}}}}{{{f{bd}}CdCf}{{A`{ln}}}}{{{f{Ab}}}{{f{Ad}}}}0{c{{Ch{e}}}{}{}}0{{}{{Ch{c}}}{}}0{fCj}0{{{f{Ab}}}An}{{{f{bd}}ClCn}{{A`{ln}}}}5{{}c{}}0","D":"Cf","p":[[0,"mut"],[5,"Server",0,49],[1,"reference",null,null,1],[8,"AttachContainerParams",50],[8,"AttachContainerResults",50],[1,"unit"],[5,"Error",51],[5,"Promise",52],[5,"Version",0,53],[1,"str"],[8,"CreateContainerParams",50],[8,"CreateContainerResults",50],[8,"CreateNamespacesParams",50],[8,"CreateNamespacesResults",50],[1,"bool"],[8,"ExecSyncContainerParams",50],[8,"ExecSyncContainerResults",50],[5,"Formatter",54],[8,"Result",54],[5,"Request",55],[8,"Result",56],[8,"ReopenLogContainerParams",50],[8,"ReopenLogContainerResults",50],[8,"SetWindowSizeContainerParams",50],[8,"SetWindowSizeContainerResults",50],[8,"StartFdSocketParams",50],[8,"StartFdSocketResults",50],[6,"Result",57,null,1],[5,"TypeId",58],[8,"VersionParams",50],[8,"VersionResults",50]],"r":[[0,49],[1,53],[2,49],[3,49],[4,53],[5,49],[6,53],[7,53],[8,53],[9,53],[10,53],[11,49],[12,49],[13,53],[14,53],[15,53],[16,53],[17,53],[18,53],[19,49],[20,49],[21,53],[22,49],[23,53],[24,49],[25,53],[26,49],[27,53],[28,49],[29,53],[30,53],[31,49],[32,53],[33,49],[34,49],[35,49],[36,53],[37,53],[38,49],[39,53],[40,49],[41,53],[42,49],[43,53],[44,53],[45,49],[46,53],[47,49],[48,53]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABYABwAEAAMADgAFABUAAQAbAAEAJAAAACcABQAwAAEA","P":[[3,"T"],[7,""],[15,"K"],[19,""],[22,"T"],[24,"U"],[26,"T"],[28,""],[38,"U,T"],[40,"U"],[42,""],[47,"V"]]}],["conmonrs_cli",{"t":"H","n":["main"],"q":[[0,"conmonrs_cli"],[1,"core::error"],[2,"alloc::boxed"],[3,"core::result"]],"i":"`","f":"{{}{{h{b{f{d}}}}}}","D":"`","p":[[1,"unit"],[10,"Error",1],[5,"Box",2,null,1],[6,"Result",3,null,1]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAEAEAAAAAAAAQA=","P":[]}]]')); +if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; +else if (window.initSearch) window.initSearch(searchIndex); +//{"start":39,"fragment_lengths":[66553,2697,310]} \ No newline at end of file diff --git a/search.desc/conmon_common/conmon_common-desc-0-.js b/search.desc/conmon_common/conmon_common-desc-0-.js new file mode 100644 index 0000000000..f25ca4a0be --- /dev/null +++ b/search.desc/conmon_common/conmon_common-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("conmon_common", 0, "Returns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/conmonrs/conmonrs-desc-0-.js b/search.desc/conmonrs/conmonrs-desc-0-.js new file mode 100644 index 0000000000..a1cb85f3ff --- /dev/null +++ b/search.desc/conmonrs/conmonrs-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("conmonrs", 0, "ci gh-pages codecov dependencies builds docs go-docs\nThe main server structure.\nThe version structure.\nAttach to a running container.\nThe build date string.\nThe cargo dependency tree, only available in verbose …\nThe used Cargo version.\nThe git commit SHA of the build.\nCreate a new container for the provided parameters.\nCreate a new set of namespaces.\nExecute a command in sync inside of a container.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCreate a new Server instance.\nCreate a new Version instance.\nPrint the version information to stdout.\nRotate all log drivers for a running container.\nThe used Rust version.\nAdjust the window size of a container running inside of a …\nStart the Server instance and consume it.\nThe tag of the build, empty if not available.\nThe target triple string.\nSpecifies if the output should contain verbose debug …\nRetrieve version information from the server.\nThe current crate version.") \ No newline at end of file diff --git a/search.desc/conmonrs_cli/conmonrs_cli-desc-0-.js b/search.desc/conmonrs_cli/conmonrs_cli-desc-0-.js new file mode 100644 index 0000000000..a98af721da --- /dev/null +++ b/search.desc/conmonrs_cli/conmonrs_cli-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("conmonrs_cli", 0, "") \ No newline at end of file diff --git a/settings.html b/settings.html new file mode 100644 index 0000000000..ebe632dfcb --- /dev/null +++ b/settings.html @@ -0,0 +1 @@ +Settings

Rustdoc settings

Back
\ No newline at end of file diff --git a/src-files.js b/src-files.js new file mode 100644 index 0000000000..1554bc2f00 --- /dev/null +++ b/src-files.js @@ -0,0 +1,3 @@ +var srcIndex = new Map(JSON.parse('[["conmon_common",["",[],["lib.rs"]]],["conmonrs",["",[["container_log",[],["cri.rs","journald.rs","json.rs","mod.rs"]]],["attach.rs","capnp_util.rs","child.rs","child_reaper.rs","config.rs","container_io.rs","fd_socket.rs","init.rs","journal.rs","lib.rs","listener.rs","macros.rs","oom_watcher.rs","pause.rs","rpc.rs","server.rs","streams.rs","telemetry.rs","terminal.rs","version.rs"]]],["conmonrs_cli",["",[],["main.rs"]]]]')); +createSrcSidebar(); +//{"start":36,"fragment_lengths":[36,351,37]} \ No newline at end of file diff --git a/src/conmon_common/home/runner/work/conmon-rs/conmon-rs/target/debug/build/conmon-common-80b9fa783bf2b96d/out/proto/conmon_capnp.rs.html b/src/conmon_common/home/runner/work/conmon-rs/conmon-rs/target/debug/build/conmon-common-80b9fa783bf2b96d/out/proto/conmon_capnp.rs.html new file mode 100644 index 0000000000..f6d6a265b9 --- /dev/null +++ b/src/conmon_common/home/runner/work/conmon-rs/conmon-rs/target/debug/build/conmon-common-80b9fa783bf2b96d/out/proto/conmon_capnp.rs.html @@ -0,0 +1,19673 @@ +conmon_capnp.rs - source

conmon_common/home/runner/work/conmon-rs/conmon-rs/target/debug/build/conmon-common-80b9fa783bf2b96d/out/proto/
conmon_capnp.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+815
+816
+817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
+833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
+852
+853
+854
+855
+856
+857
+858
+859
+860
+861
+862
+863
+864
+865
+866
+867
+868
+869
+870
+871
+872
+873
+874
+875
+876
+877
+878
+879
+880
+881
+882
+883
+884
+885
+886
+887
+888
+889
+890
+891
+892
+893
+894
+895
+896
+897
+898
+899
+900
+901
+902
+903
+904
+905
+906
+907
+908
+909
+910
+911
+912
+913
+914
+915
+916
+917
+918
+919
+920
+921
+922
+923
+924
+925
+926
+927
+928
+929
+930
+931
+932
+933
+934
+935
+936
+937
+938
+939
+940
+941
+942
+943
+944
+945
+946
+947
+948
+949
+950
+951
+952
+953
+954
+955
+956
+957
+958
+959
+960
+961
+962
+963
+964
+965
+966
+967
+968
+969
+970
+971
+972
+973
+974
+975
+976
+977
+978
+979
+980
+981
+982
+983
+984
+985
+986
+987
+988
+989
+990
+991
+992
+993
+994
+995
+996
+997
+998
+999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+1084
+1085
+1086
+1087
+1088
+1089
+1090
+1091
+1092
+1093
+1094
+1095
+1096
+1097
+1098
+1099
+1100
+1101
+1102
+1103
+1104
+1105
+1106
+1107
+1108
+1109
+1110
+1111
+1112
+1113
+1114
+1115
+1116
+1117
+1118
+1119
+1120
+1121
+1122
+1123
+1124
+1125
+1126
+1127
+1128
+1129
+1130
+1131
+1132
+1133
+1134
+1135
+1136
+1137
+1138
+1139
+1140
+1141
+1142
+1143
+1144
+1145
+1146
+1147
+1148
+1149
+1150
+1151
+1152
+1153
+1154
+1155
+1156
+1157
+1158
+1159
+1160
+1161
+1162
+1163
+1164
+1165
+1166
+1167
+1168
+1169
+1170
+1171
+1172
+1173
+1174
+1175
+1176
+1177
+1178
+1179
+1180
+1181
+1182
+1183
+1184
+1185
+1186
+1187
+1188
+1189
+1190
+1191
+1192
+1193
+1194
+1195
+1196
+1197
+1198
+1199
+1200
+1201
+1202
+1203
+1204
+1205
+1206
+1207
+1208
+1209
+1210
+1211
+1212
+1213
+1214
+1215
+1216
+1217
+1218
+1219
+1220
+1221
+1222
+1223
+1224
+1225
+1226
+1227
+1228
+1229
+1230
+1231
+1232
+1233
+1234
+1235
+1236
+1237
+1238
+1239
+1240
+1241
+1242
+1243
+1244
+1245
+1246
+1247
+1248
+1249
+1250
+1251
+1252
+1253
+1254
+1255
+1256
+1257
+1258
+1259
+1260
+1261
+1262
+1263
+1264
+1265
+1266
+1267
+1268
+1269
+1270
+1271
+1272
+1273
+1274
+1275
+1276
+1277
+1278
+1279
+1280
+1281
+1282
+1283
+1284
+1285
+1286
+1287
+1288
+1289
+1290
+1291
+1292
+1293
+1294
+1295
+1296
+1297
+1298
+1299
+1300
+1301
+1302
+1303
+1304
+1305
+1306
+1307
+1308
+1309
+1310
+1311
+1312
+1313
+1314
+1315
+1316
+1317
+1318
+1319
+1320
+1321
+1322
+1323
+1324
+1325
+1326
+1327
+1328
+1329
+1330
+1331
+1332
+1333
+1334
+1335
+1336
+1337
+1338
+1339
+1340
+1341
+1342
+1343
+1344
+1345
+1346
+1347
+1348
+1349
+1350
+1351
+1352
+1353
+1354
+1355
+1356
+1357
+1358
+1359
+1360
+1361
+1362
+1363
+1364
+1365
+1366
+1367
+1368
+1369
+1370
+1371
+1372
+1373
+1374
+1375
+1376
+1377
+1378
+1379
+1380
+1381
+1382
+1383
+1384
+1385
+1386
+1387
+1388
+1389
+1390
+1391
+1392
+1393
+1394
+1395
+1396
+1397
+1398
+1399
+1400
+1401
+1402
+1403
+1404
+1405
+1406
+1407
+1408
+1409
+1410
+1411
+1412
+1413
+1414
+1415
+1416
+1417
+1418
+1419
+1420
+1421
+1422
+1423
+1424
+1425
+1426
+1427
+1428
+1429
+1430
+1431
+1432
+1433
+1434
+1435
+1436
+1437
+1438
+1439
+1440
+1441
+1442
+1443
+1444
+1445
+1446
+1447
+1448
+1449
+1450
+1451
+1452
+1453
+1454
+1455
+1456
+1457
+1458
+1459
+1460
+1461
+1462
+1463
+1464
+1465
+1466
+1467
+1468
+1469
+1470
+1471
+1472
+1473
+1474
+1475
+1476
+1477
+1478
+1479
+1480
+1481
+1482
+1483
+1484
+1485
+1486
+1487
+1488
+1489
+1490
+1491
+1492
+1493
+1494
+1495
+1496
+1497
+1498
+1499
+1500
+1501
+1502
+1503
+1504
+1505
+1506
+1507
+1508
+1509
+1510
+1511
+1512
+1513
+1514
+1515
+1516
+1517
+1518
+1519
+1520
+1521
+1522
+1523
+1524
+1525
+1526
+1527
+1528
+1529
+1530
+1531
+1532
+1533
+1534
+1535
+1536
+1537
+1538
+1539
+1540
+1541
+1542
+1543
+1544
+1545
+1546
+1547
+1548
+1549
+1550
+1551
+1552
+1553
+1554
+1555
+1556
+1557
+1558
+1559
+1560
+1561
+1562
+1563
+1564
+1565
+1566
+1567
+1568
+1569
+1570
+1571
+1572
+1573
+1574
+1575
+1576
+1577
+1578
+1579
+1580
+1581
+1582
+1583
+1584
+1585
+1586
+1587
+1588
+1589
+1590
+1591
+1592
+1593
+1594
+1595
+1596
+1597
+1598
+1599
+1600
+1601
+1602
+1603
+1604
+1605
+1606
+1607
+1608
+1609
+1610
+1611
+1612
+1613
+1614
+1615
+1616
+1617
+1618
+1619
+1620
+1621
+1622
+1623
+1624
+1625
+1626
+1627
+1628
+1629
+1630
+1631
+1632
+1633
+1634
+1635
+1636
+1637
+1638
+1639
+1640
+1641
+1642
+1643
+1644
+1645
+1646
+1647
+1648
+1649
+1650
+1651
+1652
+1653
+1654
+1655
+1656
+1657
+1658
+1659
+1660
+1661
+1662
+1663
+1664
+1665
+1666
+1667
+1668
+1669
+1670
+1671
+1672
+1673
+1674
+1675
+1676
+1677
+1678
+1679
+1680
+1681
+1682
+1683
+1684
+1685
+1686
+1687
+1688
+1689
+1690
+1691
+1692
+1693
+1694
+1695
+1696
+1697
+1698
+1699
+1700
+1701
+1702
+1703
+1704
+1705
+1706
+1707
+1708
+1709
+1710
+1711
+1712
+1713
+1714
+1715
+1716
+1717
+1718
+1719
+1720
+1721
+1722
+1723
+1724
+1725
+1726
+1727
+1728
+1729
+1730
+1731
+1732
+1733
+1734
+1735
+1736
+1737
+1738
+1739
+1740
+1741
+1742
+1743
+1744
+1745
+1746
+1747
+1748
+1749
+1750
+1751
+1752
+1753
+1754
+1755
+1756
+1757
+1758
+1759
+1760
+1761
+1762
+1763
+1764
+1765
+1766
+1767
+1768
+1769
+1770
+1771
+1772
+1773
+1774
+1775
+1776
+1777
+1778
+1779
+1780
+1781
+1782
+1783
+1784
+1785
+1786
+1787
+1788
+1789
+1790
+1791
+1792
+1793
+1794
+1795
+1796
+1797
+1798
+1799
+1800
+1801
+1802
+1803
+1804
+1805
+1806
+1807
+1808
+1809
+1810
+1811
+1812
+1813
+1814
+1815
+1816
+1817
+1818
+1819
+1820
+1821
+1822
+1823
+1824
+1825
+1826
+1827
+1828
+1829
+1830
+1831
+1832
+1833
+1834
+1835
+1836
+1837
+1838
+1839
+1840
+1841
+1842
+1843
+1844
+1845
+1846
+1847
+1848
+1849
+1850
+1851
+1852
+1853
+1854
+1855
+1856
+1857
+1858
+1859
+1860
+1861
+1862
+1863
+1864
+1865
+1866
+1867
+1868
+1869
+1870
+1871
+1872
+1873
+1874
+1875
+1876
+1877
+1878
+1879
+1880
+1881
+1882
+1883
+1884
+1885
+1886
+1887
+1888
+1889
+1890
+1891
+1892
+1893
+1894
+1895
+1896
+1897
+1898
+1899
+1900
+1901
+1902
+1903
+1904
+1905
+1906
+1907
+1908
+1909
+1910
+1911
+1912
+1913
+1914
+1915
+1916
+1917
+1918
+1919
+1920
+1921
+1922
+1923
+1924
+1925
+1926
+1927
+1928
+1929
+1930
+1931
+1932
+1933
+1934
+1935
+1936
+1937
+1938
+1939
+1940
+1941
+1942
+1943
+1944
+1945
+1946
+1947
+1948
+1949
+1950
+1951
+1952
+1953
+1954
+1955
+1956
+1957
+1958
+1959
+1960
+1961
+1962
+1963
+1964
+1965
+1966
+1967
+1968
+1969
+1970
+1971
+1972
+1973
+1974
+1975
+1976
+1977
+1978
+1979
+1980
+1981
+1982
+1983
+1984
+1985
+1986
+1987
+1988
+1989
+1990
+1991
+1992
+1993
+1994
+1995
+1996
+1997
+1998
+1999
+2000
+2001
+2002
+2003
+2004
+2005
+2006
+2007
+2008
+2009
+2010
+2011
+2012
+2013
+2014
+2015
+2016
+2017
+2018
+2019
+2020
+2021
+2022
+2023
+2024
+2025
+2026
+2027
+2028
+2029
+2030
+2031
+2032
+2033
+2034
+2035
+2036
+2037
+2038
+2039
+2040
+2041
+2042
+2043
+2044
+2045
+2046
+2047
+2048
+2049
+2050
+2051
+2052
+2053
+2054
+2055
+2056
+2057
+2058
+2059
+2060
+2061
+2062
+2063
+2064
+2065
+2066
+2067
+2068
+2069
+2070
+2071
+2072
+2073
+2074
+2075
+2076
+2077
+2078
+2079
+2080
+2081
+2082
+2083
+2084
+2085
+2086
+2087
+2088
+2089
+2090
+2091
+2092
+2093
+2094
+2095
+2096
+2097
+2098
+2099
+2100
+2101
+2102
+2103
+2104
+2105
+2106
+2107
+2108
+2109
+2110
+2111
+2112
+2113
+2114
+2115
+2116
+2117
+2118
+2119
+2120
+2121
+2122
+2123
+2124
+2125
+2126
+2127
+2128
+2129
+2130
+2131
+2132
+2133
+2134
+2135
+2136
+2137
+2138
+2139
+2140
+2141
+2142
+2143
+2144
+2145
+2146
+2147
+2148
+2149
+2150
+2151
+2152
+2153
+2154
+2155
+2156
+2157
+2158
+2159
+2160
+2161
+2162
+2163
+2164
+2165
+2166
+2167
+2168
+2169
+2170
+2171
+2172
+2173
+2174
+2175
+2176
+2177
+2178
+2179
+2180
+2181
+2182
+2183
+2184
+2185
+2186
+2187
+2188
+2189
+2190
+2191
+2192
+2193
+2194
+2195
+2196
+2197
+2198
+2199
+2200
+2201
+2202
+2203
+2204
+2205
+2206
+2207
+2208
+2209
+2210
+2211
+2212
+2213
+2214
+2215
+2216
+2217
+2218
+2219
+2220
+2221
+2222
+2223
+2224
+2225
+2226
+2227
+2228
+2229
+2230
+2231
+2232
+2233
+2234
+2235
+2236
+2237
+2238
+2239
+2240
+2241
+2242
+2243
+2244
+2245
+2246
+2247
+2248
+2249
+2250
+2251
+2252
+2253
+2254
+2255
+2256
+2257
+2258
+2259
+2260
+2261
+2262
+2263
+2264
+2265
+2266
+2267
+2268
+2269
+2270
+2271
+2272
+2273
+2274
+2275
+2276
+2277
+2278
+2279
+2280
+2281
+2282
+2283
+2284
+2285
+2286
+2287
+2288
+2289
+2290
+2291
+2292
+2293
+2294
+2295
+2296
+2297
+2298
+2299
+2300
+2301
+2302
+2303
+2304
+2305
+2306
+2307
+2308
+2309
+2310
+2311
+2312
+2313
+2314
+2315
+2316
+2317
+2318
+2319
+2320
+2321
+2322
+2323
+2324
+2325
+2326
+2327
+2328
+2329
+2330
+2331
+2332
+2333
+2334
+2335
+2336
+2337
+2338
+2339
+2340
+2341
+2342
+2343
+2344
+2345
+2346
+2347
+2348
+2349
+2350
+2351
+2352
+2353
+2354
+2355
+2356
+2357
+2358
+2359
+2360
+2361
+2362
+2363
+2364
+2365
+2366
+2367
+2368
+2369
+2370
+2371
+2372
+2373
+2374
+2375
+2376
+2377
+2378
+2379
+2380
+2381
+2382
+2383
+2384
+2385
+2386
+2387
+2388
+2389
+2390
+2391
+2392
+2393
+2394
+2395
+2396
+2397
+2398
+2399
+2400
+2401
+2402
+2403
+2404
+2405
+2406
+2407
+2408
+2409
+2410
+2411
+2412
+2413
+2414
+2415
+2416
+2417
+2418
+2419
+2420
+2421
+2422
+2423
+2424
+2425
+2426
+2427
+2428
+2429
+2430
+2431
+2432
+2433
+2434
+2435
+2436
+2437
+2438
+2439
+2440
+2441
+2442
+2443
+2444
+2445
+2446
+2447
+2448
+2449
+2450
+2451
+2452
+2453
+2454
+2455
+2456
+2457
+2458
+2459
+2460
+2461
+2462
+2463
+2464
+2465
+2466
+2467
+2468
+2469
+2470
+2471
+2472
+2473
+2474
+2475
+2476
+2477
+2478
+2479
+2480
+2481
+2482
+2483
+2484
+2485
+2486
+2487
+2488
+2489
+2490
+2491
+2492
+2493
+2494
+2495
+2496
+2497
+2498
+2499
+2500
+2501
+2502
+2503
+2504
+2505
+2506
+2507
+2508
+2509
+2510
+2511
+2512
+2513
+2514
+2515
+2516
+2517
+2518
+2519
+2520
+2521
+2522
+2523
+2524
+2525
+2526
+2527
+2528
+2529
+2530
+2531
+2532
+2533
+2534
+2535
+2536
+2537
+2538
+2539
+2540
+2541
+2542
+2543
+2544
+2545
+2546
+2547
+2548
+2549
+2550
+2551
+2552
+2553
+2554
+2555
+2556
+2557
+2558
+2559
+2560
+2561
+2562
+2563
+2564
+2565
+2566
+2567
+2568
+2569
+2570
+2571
+2572
+2573
+2574
+2575
+2576
+2577
+2578
+2579
+2580
+2581
+2582
+2583
+2584
+2585
+2586
+2587
+2588
+2589
+2590
+2591
+2592
+2593
+2594
+2595
+2596
+2597
+2598
+2599
+2600
+2601
+2602
+2603
+2604
+2605
+2606
+2607
+2608
+2609
+2610
+2611
+2612
+2613
+2614
+2615
+2616
+2617
+2618
+2619
+2620
+2621
+2622
+2623
+2624
+2625
+2626
+2627
+2628
+2629
+2630
+2631
+2632
+2633
+2634
+2635
+2636
+2637
+2638
+2639
+2640
+2641
+2642
+2643
+2644
+2645
+2646
+2647
+2648
+2649
+2650
+2651
+2652
+2653
+2654
+2655
+2656
+2657
+2658
+2659
+2660
+2661
+2662
+2663
+2664
+2665
+2666
+2667
+2668
+2669
+2670
+2671
+2672
+2673
+2674
+2675
+2676
+2677
+2678
+2679
+2680
+2681
+2682
+2683
+2684
+2685
+2686
+2687
+2688
+2689
+2690
+2691
+2692
+2693
+2694
+2695
+2696
+2697
+2698
+2699
+2700
+2701
+2702
+2703
+2704
+2705
+2706
+2707
+2708
+2709
+2710
+2711
+2712
+2713
+2714
+2715
+2716
+2717
+2718
+2719
+2720
+2721
+2722
+2723
+2724
+2725
+2726
+2727
+2728
+2729
+2730
+2731
+2732
+2733
+2734
+2735
+2736
+2737
+2738
+2739
+2740
+2741
+2742
+2743
+2744
+2745
+2746
+2747
+2748
+2749
+2750
+2751
+2752
+2753
+2754
+2755
+2756
+2757
+2758
+2759
+2760
+2761
+2762
+2763
+2764
+2765
+2766
+2767
+2768
+2769
+2770
+2771
+2772
+2773
+2774
+2775
+2776
+2777
+2778
+2779
+2780
+2781
+2782
+2783
+2784
+2785
+2786
+2787
+2788
+2789
+2790
+2791
+2792
+2793
+2794
+2795
+2796
+2797
+2798
+2799
+2800
+2801
+2802
+2803
+2804
+2805
+2806
+2807
+2808
+2809
+2810
+2811
+2812
+2813
+2814
+2815
+2816
+2817
+2818
+2819
+2820
+2821
+2822
+2823
+2824
+2825
+2826
+2827
+2828
+2829
+2830
+2831
+2832
+2833
+2834
+2835
+2836
+2837
+2838
+2839
+2840
+2841
+2842
+2843
+2844
+2845
+2846
+2847
+2848
+2849
+2850
+2851
+2852
+2853
+2854
+2855
+2856
+2857
+2858
+2859
+2860
+2861
+2862
+2863
+2864
+2865
+2866
+2867
+2868
+2869
+2870
+2871
+2872
+2873
+2874
+2875
+2876
+2877
+2878
+2879
+2880
+2881
+2882
+2883
+2884
+2885
+2886
+2887
+2888
+2889
+2890
+2891
+2892
+2893
+2894
+2895
+2896
+2897
+2898
+2899
+2900
+2901
+2902
+2903
+2904
+2905
+2906
+2907
+2908
+2909
+2910
+2911
+2912
+2913
+2914
+2915
+2916
+2917
+2918
+2919
+2920
+2921
+2922
+2923
+2924
+2925
+2926
+2927
+2928
+2929
+2930
+2931
+2932
+2933
+2934
+2935
+2936
+2937
+2938
+2939
+2940
+2941
+2942
+2943
+2944
+2945
+2946
+2947
+2948
+2949
+2950
+2951
+2952
+2953
+2954
+2955
+2956
+2957
+2958
+2959
+2960
+2961
+2962
+2963
+2964
+2965
+2966
+2967
+2968
+2969
+2970
+2971
+2972
+2973
+2974
+2975
+2976
+2977
+2978
+2979
+2980
+2981
+2982
+2983
+2984
+2985
+2986
+2987
+2988
+2989
+2990
+2991
+2992
+2993
+2994
+2995
+2996
+2997
+2998
+2999
+3000
+3001
+3002
+3003
+3004
+3005
+3006
+3007
+3008
+3009
+3010
+3011
+3012
+3013
+3014
+3015
+3016
+3017
+3018
+3019
+3020
+3021
+3022
+3023
+3024
+3025
+3026
+3027
+3028
+3029
+3030
+3031
+3032
+3033
+3034
+3035
+3036
+3037
+3038
+3039
+3040
+3041
+3042
+3043
+3044
+3045
+3046
+3047
+3048
+3049
+3050
+3051
+3052
+3053
+3054
+3055
+3056
+3057
+3058
+3059
+3060
+3061
+3062
+3063
+3064
+3065
+3066
+3067
+3068
+3069
+3070
+3071
+3072
+3073
+3074
+3075
+3076
+3077
+3078
+3079
+3080
+3081
+3082
+3083
+3084
+3085
+3086
+3087
+3088
+3089
+3090
+3091
+3092
+3093
+3094
+3095
+3096
+3097
+3098
+3099
+3100
+3101
+3102
+3103
+3104
+3105
+3106
+3107
+3108
+3109
+3110
+3111
+3112
+3113
+3114
+3115
+3116
+3117
+3118
+3119
+3120
+3121
+3122
+3123
+3124
+3125
+3126
+3127
+3128
+3129
+3130
+3131
+3132
+3133
+3134
+3135
+3136
+3137
+3138
+3139
+3140
+3141
+3142
+3143
+3144
+3145
+3146
+3147
+3148
+3149
+3150
+3151
+3152
+3153
+3154
+3155
+3156
+3157
+3158
+3159
+3160
+3161
+3162
+3163
+3164
+3165
+3166
+3167
+3168
+3169
+3170
+3171
+3172
+3173
+3174
+3175
+3176
+3177
+3178
+3179
+3180
+3181
+3182
+3183
+3184
+3185
+3186
+3187
+3188
+3189
+3190
+3191
+3192
+3193
+3194
+3195
+3196
+3197
+3198
+3199
+3200
+3201
+3202
+3203
+3204
+3205
+3206
+3207
+3208
+3209
+3210
+3211
+3212
+3213
+3214
+3215
+3216
+3217
+3218
+3219
+3220
+3221
+3222
+3223
+3224
+3225
+3226
+3227
+3228
+3229
+3230
+3231
+3232
+3233
+3234
+3235
+3236
+3237
+3238
+3239
+3240
+3241
+3242
+3243
+3244
+3245
+3246
+3247
+3248
+3249
+3250
+3251
+3252
+3253
+3254
+3255
+3256
+3257
+3258
+3259
+3260
+3261
+3262
+3263
+3264
+3265
+3266
+3267
+3268
+3269
+3270
+3271
+3272
+3273
+3274
+3275
+3276
+3277
+3278
+3279
+3280
+3281
+3282
+3283
+3284
+3285
+3286
+3287
+3288
+3289
+3290
+3291
+3292
+3293
+3294
+3295
+3296
+3297
+3298
+3299
+3300
+3301
+3302
+3303
+3304
+3305
+3306
+3307
+3308
+3309
+3310
+3311
+3312
+3313
+3314
+3315
+3316
+3317
+3318
+3319
+3320
+3321
+3322
+3323
+3324
+3325
+3326
+3327
+3328
+3329
+3330
+3331
+3332
+3333
+3334
+3335
+3336
+3337
+3338
+3339
+3340
+3341
+3342
+3343
+3344
+3345
+3346
+3347
+3348
+3349
+3350
+3351
+3352
+3353
+3354
+3355
+3356
+3357
+3358
+3359
+3360
+3361
+3362
+3363
+3364
+3365
+3366
+3367
+3368
+3369
+3370
+3371
+3372
+3373
+3374
+3375
+3376
+3377
+3378
+3379
+3380
+3381
+3382
+3383
+3384
+3385
+3386
+3387
+3388
+3389
+3390
+3391
+3392
+3393
+3394
+3395
+3396
+3397
+3398
+3399
+3400
+3401
+3402
+3403
+3404
+3405
+3406
+3407
+3408
+3409
+3410
+3411
+3412
+3413
+3414
+3415
+3416
+3417
+3418
+3419
+3420
+3421
+3422
+3423
+3424
+3425
+3426
+3427
+3428
+3429
+3430
+3431
+3432
+3433
+3434
+3435
+3436
+3437
+3438
+3439
+3440
+3441
+3442
+3443
+3444
+3445
+3446
+3447
+3448
+3449
+3450
+3451
+3452
+3453
+3454
+3455
+3456
+3457
+3458
+3459
+3460
+3461
+3462
+3463
+3464
+3465
+3466
+3467
+3468
+3469
+3470
+3471
+3472
+3473
+3474
+3475
+3476
+3477
+3478
+3479
+3480
+3481
+3482
+3483
+3484
+3485
+3486
+3487
+3488
+3489
+3490
+3491
+3492
+3493
+3494
+3495
+3496
+3497
+3498
+3499
+3500
+3501
+3502
+3503
+3504
+3505
+3506
+3507
+3508
+3509
+3510
+3511
+3512
+3513
+3514
+3515
+3516
+3517
+3518
+3519
+3520
+3521
+3522
+3523
+3524
+3525
+3526
+3527
+3528
+3529
+3530
+3531
+3532
+3533
+3534
+3535
+3536
+3537
+3538
+3539
+3540
+3541
+3542
+3543
+3544
+3545
+3546
+3547
+3548
+3549
+3550
+3551
+3552
+3553
+3554
+3555
+3556
+3557
+3558
+3559
+3560
+3561
+3562
+3563
+3564
+3565
+3566
+3567
+3568
+3569
+3570
+3571
+3572
+3573
+3574
+3575
+3576
+3577
+3578
+3579
+3580
+3581
+3582
+3583
+3584
+3585
+3586
+3587
+3588
+3589
+3590
+3591
+3592
+3593
+3594
+3595
+3596
+3597
+3598
+3599
+3600
+3601
+3602
+3603
+3604
+3605
+3606
+3607
+3608
+3609
+3610
+3611
+3612
+3613
+3614
+3615
+3616
+3617
+3618
+3619
+3620
+3621
+3622
+3623
+3624
+3625
+3626
+3627
+3628
+3629
+3630
+3631
+3632
+3633
+3634
+3635
+3636
+3637
+3638
+3639
+3640
+3641
+3642
+3643
+3644
+3645
+3646
+3647
+3648
+3649
+3650
+3651
+3652
+3653
+3654
+3655
+3656
+3657
+3658
+3659
+3660
+3661
+3662
+3663
+3664
+3665
+3666
+3667
+3668
+3669
+3670
+3671
+3672
+3673
+3674
+3675
+3676
+3677
+3678
+3679
+3680
+3681
+3682
+3683
+3684
+3685
+3686
+3687
+3688
+3689
+3690
+3691
+3692
+3693
+3694
+3695
+3696
+3697
+3698
+3699
+3700
+3701
+3702
+3703
+3704
+3705
+3706
+3707
+3708
+3709
+3710
+3711
+3712
+3713
+3714
+3715
+3716
+3717
+3718
+3719
+3720
+3721
+3722
+3723
+3724
+3725
+3726
+3727
+3728
+3729
+3730
+3731
+3732
+3733
+3734
+3735
+3736
+3737
+3738
+3739
+3740
+3741
+3742
+3743
+3744
+3745
+3746
+3747
+3748
+3749
+3750
+3751
+3752
+3753
+3754
+3755
+3756
+3757
+3758
+3759
+3760
+3761
+3762
+3763
+3764
+3765
+3766
+3767
+3768
+3769
+3770
+3771
+3772
+3773
+3774
+3775
+3776
+3777
+3778
+3779
+3780
+3781
+3782
+3783
+3784
+3785
+3786
+3787
+3788
+3789
+3790
+3791
+3792
+3793
+3794
+3795
+3796
+3797
+3798
+3799
+3800
+3801
+3802
+3803
+3804
+3805
+3806
+3807
+3808
+3809
+3810
+3811
+3812
+3813
+3814
+3815
+3816
+3817
+3818
+3819
+3820
+3821
+3822
+3823
+3824
+3825
+3826
+3827
+3828
+3829
+3830
+3831
+3832
+3833
+3834
+3835
+3836
+3837
+3838
+3839
+3840
+3841
+3842
+3843
+3844
+3845
+3846
+3847
+3848
+3849
+3850
+3851
+3852
+3853
+3854
+3855
+3856
+3857
+3858
+3859
+3860
+3861
+3862
+3863
+3864
+3865
+3866
+3867
+3868
+3869
+3870
+3871
+3872
+3873
+3874
+3875
+3876
+3877
+3878
+3879
+3880
+3881
+3882
+3883
+3884
+3885
+3886
+3887
+3888
+3889
+3890
+3891
+3892
+3893
+3894
+3895
+3896
+3897
+3898
+3899
+3900
+3901
+3902
+3903
+3904
+3905
+3906
+3907
+3908
+3909
+3910
+3911
+3912
+3913
+3914
+3915
+3916
+3917
+3918
+3919
+3920
+3921
+3922
+3923
+3924
+3925
+3926
+3927
+3928
+3929
+3930
+3931
+3932
+3933
+3934
+3935
+3936
+3937
+3938
+3939
+3940
+3941
+3942
+3943
+3944
+3945
+3946
+3947
+3948
+3949
+3950
+3951
+3952
+3953
+3954
+3955
+3956
+3957
+3958
+3959
+3960
+3961
+3962
+3963
+3964
+3965
+3966
+3967
+3968
+3969
+3970
+3971
+3972
+3973
+3974
+3975
+3976
+3977
+3978
+3979
+3980
+3981
+3982
+3983
+3984
+3985
+3986
+3987
+3988
+3989
+3990
+3991
+3992
+3993
+3994
+3995
+3996
+3997
+3998
+3999
+4000
+4001
+4002
+4003
+4004
+4005
+4006
+4007
+4008
+4009
+4010
+4011
+4012
+4013
+4014
+4015
+4016
+4017
+4018
+4019
+4020
+4021
+4022
+4023
+4024
+4025
+4026
+4027
+4028
+4029
+4030
+4031
+4032
+4033
+4034
+4035
+4036
+4037
+4038
+4039
+4040
+4041
+4042
+4043
+4044
+4045
+4046
+4047
+4048
+4049
+4050
+4051
+4052
+4053
+4054
+4055
+4056
+4057
+4058
+4059
+4060
+4061
+4062
+4063
+4064
+4065
+4066
+4067
+4068
+4069
+4070
+4071
+4072
+4073
+4074
+4075
+4076
+4077
+4078
+4079
+4080
+4081
+4082
+4083
+4084
+4085
+4086
+4087
+4088
+4089
+4090
+4091
+4092
+4093
+4094
+4095
+4096
+4097
+4098
+4099
+4100
+4101
+4102
+4103
+4104
+4105
+4106
+4107
+4108
+4109
+4110
+4111
+4112
+4113
+4114
+4115
+4116
+4117
+4118
+4119
+4120
+4121
+4122
+4123
+4124
+4125
+4126
+4127
+4128
+4129
+4130
+4131
+4132
+4133
+4134
+4135
+4136
+4137
+4138
+4139
+4140
+4141
+4142
+4143
+4144
+4145
+4146
+4147
+4148
+4149
+4150
+4151
+4152
+4153
+4154
+4155
+4156
+4157
+4158
+4159
+4160
+4161
+4162
+4163
+4164
+4165
+4166
+4167
+4168
+4169
+4170
+4171
+4172
+4173
+4174
+4175
+4176
+4177
+4178
+4179
+4180
+4181
+4182
+4183
+4184
+4185
+4186
+4187
+4188
+4189
+4190
+4191
+4192
+4193
+4194
+4195
+4196
+4197
+4198
+4199
+4200
+4201
+4202
+4203
+4204
+4205
+4206
+4207
+4208
+4209
+4210
+4211
+4212
+4213
+4214
+4215
+4216
+4217
+4218
+4219
+4220
+4221
+4222
+4223
+4224
+4225
+4226
+4227
+4228
+4229
+4230
+4231
+4232
+4233
+4234
+4235
+4236
+4237
+4238
+4239
+4240
+4241
+4242
+4243
+4244
+4245
+4246
+4247
+4248
+4249
+4250
+4251
+4252
+4253
+4254
+4255
+4256
+4257
+4258
+4259
+4260
+4261
+4262
+4263
+4264
+4265
+4266
+4267
+4268
+4269
+4270
+4271
+4272
+4273
+4274
+4275
+4276
+4277
+4278
+4279
+4280
+4281
+4282
+4283
+4284
+4285
+4286
+4287
+4288
+4289
+4290
+4291
+4292
+4293
+4294
+4295
+4296
+4297
+4298
+4299
+4300
+4301
+4302
+4303
+4304
+4305
+4306
+4307
+4308
+4309
+4310
+4311
+4312
+4313
+4314
+4315
+4316
+4317
+4318
+4319
+4320
+4321
+4322
+4323
+4324
+4325
+4326
+4327
+4328
+4329
+4330
+4331
+4332
+4333
+4334
+4335
+4336
+4337
+4338
+4339
+4340
+4341
+4342
+4343
+4344
+4345
+4346
+4347
+4348
+4349
+4350
+4351
+4352
+4353
+4354
+4355
+4356
+4357
+4358
+4359
+4360
+4361
+4362
+4363
+4364
+4365
+4366
+4367
+4368
+4369
+4370
+4371
+4372
+4373
+4374
+4375
+4376
+4377
+4378
+4379
+4380
+4381
+4382
+4383
+4384
+4385
+4386
+4387
+4388
+4389
+4390
+4391
+4392
+4393
+4394
+4395
+4396
+4397
+4398
+4399
+4400
+4401
+4402
+4403
+4404
+4405
+4406
+4407
+4408
+4409
+4410
+4411
+4412
+4413
+4414
+4415
+4416
+4417
+4418
+4419
+4420
+4421
+4422
+4423
+4424
+4425
+4426
+4427
+4428
+4429
+4430
+4431
+4432
+4433
+4434
+4435
+4436
+4437
+4438
+4439
+4440
+4441
+4442
+4443
+4444
+4445
+4446
+4447
+4448
+4449
+4450
+4451
+4452
+4453
+4454
+4455
+4456
+4457
+4458
+4459
+4460
+4461
+4462
+4463
+4464
+4465
+4466
+4467
+4468
+4469
+4470
+4471
+4472
+4473
+4474
+4475
+4476
+4477
+4478
+4479
+4480
+4481
+4482
+4483
+4484
+4485
+4486
+4487
+4488
+4489
+4490
+4491
+4492
+4493
+4494
+4495
+4496
+4497
+4498
+4499
+4500
+4501
+4502
+4503
+4504
+4505
+4506
+4507
+4508
+4509
+4510
+4511
+4512
+4513
+4514
+4515
+4516
+4517
+4518
+4519
+4520
+4521
+4522
+4523
+4524
+4525
+4526
+4527
+4528
+4529
+4530
+4531
+4532
+4533
+4534
+4535
+4536
+4537
+4538
+4539
+4540
+4541
+4542
+4543
+4544
+4545
+4546
+4547
+4548
+4549
+4550
+4551
+4552
+4553
+4554
+4555
+4556
+4557
+4558
+4559
+4560
+4561
+4562
+4563
+4564
+4565
+4566
+4567
+4568
+4569
+4570
+4571
+4572
+4573
+4574
+4575
+4576
+4577
+4578
+4579
+4580
+4581
+4582
+4583
+4584
+4585
+4586
+4587
+4588
+4589
+4590
+4591
+4592
+4593
+4594
+4595
+4596
+4597
+4598
+4599
+4600
+4601
+4602
+4603
+4604
+4605
+4606
+4607
+4608
+4609
+4610
+4611
+4612
+4613
+4614
+4615
+4616
+4617
+4618
+4619
+4620
+4621
+4622
+4623
+4624
+4625
+4626
+4627
+4628
+4629
+4630
+4631
+4632
+4633
+4634
+4635
+4636
+4637
+4638
+4639
+4640
+4641
+4642
+4643
+4644
+4645
+4646
+4647
+4648
+4649
+4650
+4651
+4652
+4653
+4654
+4655
+4656
+4657
+4658
+4659
+4660
+4661
+4662
+4663
+4664
+4665
+4666
+4667
+4668
+4669
+4670
+4671
+4672
+4673
+4674
+4675
+4676
+4677
+4678
+4679
+4680
+4681
+4682
+4683
+4684
+4685
+4686
+4687
+4688
+4689
+4690
+4691
+4692
+4693
+4694
+4695
+4696
+4697
+4698
+4699
+4700
+4701
+4702
+4703
+4704
+4705
+4706
+4707
+4708
+4709
+4710
+4711
+4712
+4713
+4714
+4715
+4716
+4717
+4718
+4719
+4720
+4721
+4722
+4723
+4724
+4725
+4726
+4727
+4728
+4729
+4730
+4731
+4732
+4733
+4734
+4735
+4736
+4737
+4738
+4739
+4740
+4741
+4742
+4743
+4744
+4745
+4746
+4747
+4748
+4749
+4750
+4751
+4752
+4753
+4754
+4755
+4756
+4757
+4758
+4759
+4760
+4761
+4762
+4763
+4764
+4765
+4766
+4767
+4768
+4769
+4770
+4771
+4772
+4773
+4774
+4775
+4776
+4777
+4778
+4779
+4780
+4781
+4782
+4783
+4784
+4785
+4786
+4787
+4788
+4789
+4790
+4791
+4792
+4793
+4794
+4795
+4796
+4797
+4798
+4799
+4800
+4801
+4802
+4803
+4804
+4805
+4806
+4807
+4808
+4809
+4810
+4811
+4812
+4813
+4814
+4815
+4816
+4817
+4818
+4819
+4820
+4821
+4822
+4823
+4824
+4825
+4826
+4827
+4828
+4829
+4830
+4831
+4832
+4833
+4834
+4835
+4836
+4837
+4838
+4839
+4840
+4841
+4842
+4843
+4844
+4845
+4846
+4847
+4848
+4849
+4850
+4851
+4852
+4853
+4854
+4855
+4856
+4857
+4858
+4859
+4860
+4861
+4862
+4863
+4864
+4865
+4866
+4867
+4868
+4869
+4870
+4871
+4872
+4873
+4874
+4875
+4876
+4877
+4878
+4879
+4880
+4881
+4882
+4883
+4884
+4885
+4886
+4887
+4888
+4889
+4890
+4891
+4892
+4893
+4894
+4895
+4896
+4897
+4898
+4899
+4900
+4901
+4902
+4903
+4904
+4905
+4906
+4907
+4908
+4909
+4910
+4911
+4912
+4913
+4914
+4915
+4916
+4917
+4918
+4919
+4920
+4921
+4922
+4923
+4924
+4925
+4926
+4927
+4928
+4929
+4930
+4931
+4932
+4933
+4934
+4935
+4936
+4937
+4938
+4939
+4940
+4941
+4942
+4943
+4944
+4945
+4946
+4947
+4948
+4949
+4950
+4951
+4952
+4953
+4954
+4955
+4956
+4957
+4958
+4959
+4960
+4961
+4962
+4963
+4964
+4965
+4966
+4967
+4968
+4969
+4970
+4971
+4972
+4973
+4974
+4975
+4976
+4977
+4978
+4979
+4980
+4981
+4982
+4983
+4984
+4985
+4986
+4987
+4988
+4989
+4990
+4991
+4992
+4993
+4994
+4995
+4996
+4997
+4998
+4999
+5000
+5001
+5002
+5003
+5004
+5005
+5006
+5007
+5008
+5009
+5010
+5011
+5012
+5013
+5014
+5015
+5016
+5017
+5018
+5019
+5020
+5021
+5022
+5023
+5024
+5025
+5026
+5027
+5028
+5029
+5030
+5031
+5032
+5033
+5034
+5035
+5036
+5037
+5038
+5039
+5040
+5041
+5042
+5043
+5044
+5045
+5046
+5047
+5048
+5049
+5050
+5051
+5052
+5053
+5054
+5055
+5056
+5057
+5058
+5059
+5060
+5061
+5062
+5063
+5064
+5065
+5066
+5067
+5068
+5069
+5070
+5071
+5072
+5073
+5074
+5075
+5076
+5077
+5078
+5079
+5080
+5081
+5082
+5083
+5084
+5085
+5086
+5087
+5088
+5089
+5090
+5091
+5092
+5093
+5094
+5095
+5096
+5097
+5098
+5099
+5100
+5101
+5102
+5103
+5104
+5105
+5106
+5107
+5108
+5109
+5110
+5111
+5112
+5113
+5114
+5115
+5116
+5117
+5118
+5119
+5120
+5121
+5122
+5123
+5124
+5125
+5126
+5127
+5128
+5129
+5130
+5131
+5132
+5133
+5134
+5135
+5136
+5137
+5138
+5139
+5140
+5141
+5142
+5143
+5144
+5145
+5146
+5147
+5148
+5149
+5150
+5151
+5152
+5153
+5154
+5155
+5156
+5157
+5158
+5159
+5160
+5161
+5162
+5163
+5164
+5165
+5166
+5167
+5168
+5169
+5170
+5171
+5172
+5173
+5174
+5175
+5176
+5177
+5178
+5179
+5180
+5181
+5182
+5183
+5184
+5185
+5186
+5187
+5188
+5189
+5190
+5191
+5192
+5193
+5194
+5195
+5196
+5197
+5198
+5199
+5200
+5201
+5202
+5203
+5204
+5205
+5206
+5207
+5208
+5209
+5210
+5211
+5212
+5213
+5214
+5215
+5216
+5217
+5218
+5219
+5220
+5221
+5222
+5223
+5224
+5225
+5226
+5227
+5228
+5229
+5230
+5231
+5232
+5233
+5234
+5235
+5236
+5237
+5238
+5239
+5240
+5241
+5242
+5243
+5244
+5245
+5246
+5247
+5248
+5249
+5250
+5251
+5252
+5253
+5254
+5255
+5256
+5257
+5258
+5259
+5260
+5261
+5262
+5263
+5264
+5265
+5266
+5267
+5268
+5269
+5270
+5271
+5272
+5273
+5274
+5275
+5276
+5277
+5278
+5279
+5280
+5281
+5282
+5283
+5284
+5285
+5286
+5287
+5288
+5289
+5290
+5291
+5292
+5293
+5294
+5295
+5296
+5297
+5298
+5299
+5300
+5301
+5302
+5303
+5304
+5305
+5306
+5307
+5308
+5309
+5310
+5311
+5312
+5313
+5314
+5315
+5316
+5317
+5318
+5319
+5320
+5321
+5322
+5323
+5324
+5325
+5326
+5327
+5328
+5329
+5330
+5331
+5332
+5333
+5334
+5335
+5336
+5337
+5338
+5339
+5340
+5341
+5342
+5343
+5344
+5345
+5346
+5347
+5348
+5349
+5350
+5351
+5352
+5353
+5354
+5355
+5356
+5357
+5358
+5359
+5360
+5361
+5362
+5363
+5364
+5365
+5366
+5367
+5368
+5369
+5370
+5371
+5372
+5373
+5374
+5375
+5376
+5377
+5378
+5379
+5380
+5381
+5382
+5383
+5384
+5385
+5386
+5387
+5388
+5389
+5390
+5391
+5392
+5393
+5394
+5395
+5396
+5397
+5398
+5399
+5400
+5401
+5402
+5403
+5404
+5405
+5406
+5407
+5408
+5409
+5410
+5411
+5412
+5413
+5414
+5415
+5416
+5417
+5418
+5419
+5420
+5421
+5422
+5423
+5424
+5425
+5426
+5427
+5428
+5429
+5430
+5431
+5432
+5433
+5434
+5435
+5436
+5437
+5438
+5439
+5440
+5441
+5442
+5443
+5444
+5445
+5446
+5447
+5448
+5449
+5450
+5451
+5452
+5453
+5454
+5455
+5456
+5457
+5458
+5459
+5460
+5461
+5462
+5463
+5464
+5465
+5466
+5467
+5468
+5469
+5470
+5471
+5472
+5473
+5474
+5475
+5476
+5477
+5478
+5479
+5480
+5481
+5482
+5483
+5484
+5485
+5486
+5487
+5488
+5489
+5490
+5491
+5492
+5493
+5494
+5495
+5496
+5497
+5498
+5499
+5500
+5501
+5502
+5503
+5504
+5505
+5506
+5507
+5508
+5509
+5510
+5511
+5512
+5513
+5514
+5515
+5516
+5517
+5518
+5519
+5520
+5521
+5522
+5523
+5524
+5525
+5526
+5527
+5528
+5529
+5530
+5531
+5532
+5533
+5534
+5535
+5536
+5537
+5538
+5539
+5540
+5541
+5542
+5543
+5544
+5545
+5546
+5547
+5548
+5549
+5550
+5551
+5552
+5553
+5554
+5555
+5556
+5557
+5558
+5559
+5560
+5561
+5562
+5563
+5564
+5565
+5566
+5567
+5568
+5569
+5570
+5571
+5572
+5573
+5574
+5575
+5576
+5577
+5578
+5579
+5580
+5581
+5582
+5583
+5584
+5585
+5586
+5587
+5588
+5589
+5590
+5591
+5592
+5593
+5594
+5595
+5596
+5597
+5598
+5599
+5600
+5601
+5602
+5603
+5604
+5605
+5606
+5607
+5608
+5609
+5610
+5611
+5612
+5613
+5614
+5615
+5616
+5617
+5618
+5619
+5620
+5621
+5622
+5623
+5624
+5625
+5626
+5627
+5628
+5629
+5630
+5631
+5632
+5633
+5634
+5635
+5636
+5637
+5638
+5639
+5640
+5641
+5642
+5643
+5644
+5645
+5646
+5647
+5648
+5649
+5650
+5651
+5652
+5653
+5654
+5655
+5656
+5657
+5658
+5659
+5660
+5661
+5662
+5663
+5664
+5665
+5666
+5667
+5668
+5669
+5670
+5671
+5672
+5673
+5674
+5675
+5676
+5677
+5678
+5679
+5680
+5681
+5682
+5683
+5684
+5685
+5686
+5687
+5688
+5689
+5690
+5691
+5692
+5693
+5694
+5695
+5696
+5697
+5698
+5699
+5700
+5701
+5702
+5703
+5704
+5705
+5706
+5707
+5708
+5709
+5710
+5711
+5712
+5713
+5714
+5715
+5716
+5717
+5718
+5719
+5720
+5721
+5722
+5723
+5724
+5725
+5726
+5727
+5728
+5729
+5730
+5731
+5732
+5733
+5734
+5735
+5736
+5737
+5738
+5739
+5740
+5741
+5742
+5743
+5744
+5745
+5746
+5747
+5748
+5749
+5750
+5751
+5752
+5753
+5754
+5755
+5756
+5757
+5758
+5759
+5760
+5761
+5762
+5763
+5764
+5765
+5766
+5767
+5768
+5769
+5770
+5771
+5772
+5773
+5774
+5775
+5776
+5777
+5778
+5779
+5780
+5781
+5782
+5783
+5784
+5785
+5786
+5787
+5788
+5789
+5790
+5791
+5792
+5793
+5794
+5795
+5796
+5797
+5798
+5799
+5800
+5801
+5802
+5803
+5804
+5805
+5806
+5807
+5808
+5809
+5810
+5811
+5812
+5813
+5814
+5815
+5816
+5817
+5818
+5819
+5820
+5821
+5822
+5823
+5824
+5825
+5826
+5827
+5828
+5829
+5830
+5831
+5832
+5833
+5834
+5835
+5836
+5837
+5838
+5839
+5840
+5841
+5842
+5843
+5844
+5845
+5846
+5847
+5848
+5849
+5850
+5851
+5852
+5853
+5854
+5855
+5856
+5857
+5858
+5859
+5860
+5861
+5862
+5863
+5864
+5865
+5866
+5867
+5868
+5869
+5870
+5871
+5872
+5873
+5874
+5875
+5876
+5877
+5878
+5879
+5880
+5881
+5882
+5883
+5884
+5885
+5886
+5887
+5888
+5889
+5890
+5891
+5892
+5893
+5894
+5895
+5896
+5897
+5898
+5899
+5900
+5901
+5902
+5903
+5904
+5905
+5906
+5907
+5908
+5909
+5910
+5911
+5912
+5913
+5914
+5915
+5916
+5917
+5918
+5919
+5920
+5921
+5922
+5923
+5924
+5925
+5926
+5927
+5928
+5929
+5930
+5931
+5932
+5933
+5934
+5935
+5936
+5937
+5938
+5939
+5940
+5941
+5942
+5943
+5944
+5945
+5946
+5947
+5948
+5949
+5950
+5951
+5952
+5953
+5954
+5955
+5956
+5957
+5958
+5959
+5960
+5961
+5962
+5963
+5964
+5965
+5966
+5967
+5968
+5969
+5970
+5971
+5972
+5973
+5974
+5975
+5976
+5977
+5978
+5979
+5980
+5981
+5982
+5983
+5984
+5985
+5986
+5987
+5988
+5989
+5990
+5991
+5992
+5993
+5994
+5995
+5996
+5997
+5998
+5999
+6000
+6001
+6002
+6003
+6004
+6005
+6006
+6007
+6008
+6009
+6010
+6011
+6012
+6013
+6014
+6015
+6016
+6017
+6018
+6019
+6020
+6021
+6022
+6023
+6024
+6025
+6026
+6027
+6028
+6029
+6030
+6031
+6032
+6033
+6034
+6035
+6036
+6037
+6038
+6039
+6040
+6041
+6042
+6043
+6044
+6045
+6046
+6047
+6048
+6049
+6050
+6051
+6052
+6053
+6054
+6055
+6056
+6057
+6058
+6059
+6060
+6061
+6062
+6063
+6064
+6065
+6066
+6067
+6068
+6069
+6070
+6071
+6072
+6073
+6074
+6075
+6076
+6077
+6078
+6079
+6080
+6081
+6082
+6083
+6084
+6085
+6086
+6087
+6088
+6089
+6090
+6091
+6092
+6093
+6094
+6095
+6096
+6097
+6098
+6099
+6100
+6101
+6102
+6103
+6104
+6105
+6106
+6107
+6108
+6109
+6110
+6111
+6112
+6113
+6114
+6115
+6116
+6117
+6118
+6119
+6120
+6121
+6122
+6123
+6124
+6125
+6126
+6127
+6128
+6129
+6130
+6131
+6132
+6133
+6134
+6135
+6136
+6137
+6138
+6139
+6140
+6141
+6142
+6143
+6144
+6145
+6146
+6147
+6148
+6149
+6150
+6151
+6152
+6153
+6154
+6155
+6156
+6157
+6158
+6159
+6160
+6161
+6162
+6163
+6164
+6165
+6166
+6167
+6168
+6169
+6170
+6171
+6172
+6173
+6174
+6175
+6176
+6177
+6178
+6179
+6180
+6181
+6182
+6183
+6184
+6185
+6186
+6187
+6188
+6189
+6190
+6191
+6192
+6193
+6194
+6195
+6196
+6197
+6198
+6199
+6200
+6201
+6202
+6203
+6204
+6205
+6206
+6207
+6208
+6209
+6210
+6211
+6212
+6213
+6214
+6215
+6216
+6217
+6218
+6219
+6220
+6221
+6222
+6223
+6224
+6225
+6226
+6227
+6228
+6229
+6230
+6231
+6232
+6233
+6234
+6235
+6236
+6237
+6238
+6239
+6240
+6241
+6242
+6243
+6244
+6245
+6246
+6247
+6248
+6249
+6250
+6251
+6252
+6253
+6254
+6255
+6256
+6257
+6258
+6259
+6260
+6261
+6262
+6263
+6264
+6265
+6266
+6267
+6268
+6269
+6270
+6271
+6272
+6273
+6274
+6275
+6276
+6277
+6278
+6279
+6280
+6281
+6282
+6283
+6284
+6285
+6286
+6287
+6288
+6289
+6290
+6291
+6292
+6293
+6294
+6295
+6296
+6297
+6298
+6299
+6300
+6301
+6302
+6303
+6304
+6305
+6306
+6307
+6308
+6309
+6310
+6311
+6312
+6313
+6314
+6315
+6316
+6317
+6318
+6319
+6320
+6321
+6322
+6323
+6324
+6325
+6326
+6327
+6328
+6329
+6330
+6331
+6332
+6333
+6334
+6335
+6336
+6337
+6338
+6339
+6340
+6341
+6342
+6343
+6344
+6345
+6346
+6347
+6348
+6349
+6350
+6351
+6352
+6353
+6354
+6355
+6356
+6357
+6358
+6359
+6360
+6361
+6362
+6363
+6364
+6365
+6366
+6367
+6368
+6369
+6370
+6371
+6372
+6373
+6374
+6375
+6376
+6377
+6378
+6379
+6380
+6381
+6382
+6383
+6384
+6385
+6386
+6387
+6388
+6389
+6390
+6391
+6392
+6393
+6394
+6395
+6396
+6397
+6398
+6399
+6400
+6401
+6402
+6403
+6404
+6405
+6406
+6407
+6408
+6409
+6410
+6411
+6412
+6413
+6414
+6415
+6416
+6417
+6418
+6419
+6420
+6421
+6422
+6423
+6424
+6425
+6426
+6427
+6428
+6429
+6430
+6431
+6432
+6433
+6434
+6435
+6436
+6437
+6438
+6439
+6440
+6441
+6442
+6443
+6444
+6445
+6446
+6447
+6448
+6449
+6450
+6451
+6452
+6453
+6454
+6455
+6456
+6457
+6458
+6459
+6460
+6461
+6462
+6463
+6464
+6465
+6466
+6467
+6468
+6469
+6470
+6471
+6472
+6473
+6474
+6475
+6476
+6477
+6478
+6479
+6480
+6481
+6482
+6483
+6484
+6485
+6486
+6487
+6488
+6489
+6490
+6491
+6492
+6493
+6494
+6495
+6496
+6497
+6498
+6499
+6500
+6501
+6502
+6503
+6504
+6505
+6506
+6507
+6508
+6509
+6510
+6511
+6512
+6513
+6514
+6515
+6516
+6517
+6518
+6519
+6520
+6521
+6522
+6523
+6524
+6525
+6526
+6527
+6528
+6529
+6530
+6531
+6532
+6533
+6534
+6535
+6536
+6537
+6538
+6539
+6540
+6541
+6542
+6543
+6544
+6545
+6546
+6547
+6548
+6549
+6550
+6551
+6552
+6553
+6554
+6555
+6556
+6557
+6558
+6559
+6560
+6561
+6562
+6563
+6564
+6565
+6566
+6567
+6568
+6569
+6570
+6571
+6572
+6573
+6574
+6575
+6576
+6577
+6578
+6579
+6580
+6581
+6582
+6583
+6584
+6585
+6586
+6587
+6588
+6589
+6590
+6591
+6592
+6593
+6594
+6595
+6596
+6597
+6598
+6599
+6600
+6601
+6602
+6603
+6604
+6605
+6606
+6607
+6608
+6609
+6610
+6611
+6612
+6613
+6614
+6615
+6616
+6617
+6618
+6619
+6620
+6621
+6622
+6623
+6624
+6625
+6626
+6627
+6628
+6629
+6630
+6631
+6632
+6633
+6634
+6635
+6636
+6637
+6638
+6639
+6640
+6641
+6642
+6643
+6644
+6645
+6646
+6647
+6648
+6649
+6650
+6651
+6652
+6653
+6654
+6655
+6656
+6657
+6658
+6659
+6660
+6661
+6662
+6663
+6664
+6665
+6666
+6667
+6668
+6669
+6670
+6671
+6672
+6673
+6674
+6675
+6676
+6677
+6678
+6679
+6680
+6681
+6682
+6683
+6684
+6685
+6686
+6687
+6688
+6689
+6690
+6691
+6692
+6693
+6694
+6695
+6696
+6697
+6698
+6699
+6700
+6701
+6702
+6703
+6704
+6705
+6706
+6707
+6708
+6709
+6710
+6711
+6712
+6713
+6714
+6715
+6716
+6717
+6718
+6719
+6720
+6721
+6722
+6723
+6724
+6725
+6726
+6727
+6728
+6729
+6730
+6731
+6732
+6733
+6734
+6735
+6736
+6737
+6738
+6739
+6740
+6741
+6742
+6743
+6744
+6745
+6746
+6747
+6748
+6749
+6750
+6751
+6752
+6753
+6754
+6755
+6756
+6757
+6758
+6759
+6760
+6761
+6762
+6763
+6764
+6765
+6766
+6767
+6768
+6769
+6770
+6771
+6772
+6773
+6774
+6775
+6776
+6777
+6778
+6779
+6780
+6781
+6782
+6783
+6784
+6785
+6786
+6787
+6788
+6789
+6790
+6791
+6792
+6793
+6794
+6795
+6796
+6797
+6798
+6799
+6800
+6801
+6802
+6803
+6804
+6805
+6806
+6807
+6808
+6809
+6810
+6811
+6812
+6813
+6814
+6815
+6816
+6817
+6818
+6819
+6820
+6821
+6822
+6823
+6824
+6825
+6826
+6827
+6828
+6829
+6830
+6831
+6832
+6833
+6834
+6835
+6836
+6837
+6838
+6839
+6840
+6841
+6842
+6843
+6844
+6845
+6846
+6847
+6848
+6849
+6850
+6851
+6852
+6853
+6854
+6855
+6856
+6857
+6858
+6859
+6860
+6861
+6862
+6863
+6864
+6865
+6866
+6867
+6868
+6869
+6870
+6871
+6872
+6873
+6874
+6875
+6876
+6877
+6878
+6879
+6880
+6881
+6882
+6883
+6884
+6885
+6886
+6887
+6888
+6889
+6890
+6891
+6892
+6893
+6894
+6895
+6896
+6897
+6898
+6899
+6900
+6901
+6902
+6903
+6904
+6905
+6906
+6907
+6908
+6909
+6910
+6911
+6912
+6913
+6914
+6915
+6916
+6917
+6918
+6919
+6920
+6921
+6922
+6923
+6924
+6925
+6926
+6927
+6928
+6929
+6930
+6931
+6932
+6933
+6934
+6935
+6936
+6937
+6938
+6939
+6940
+6941
+6942
+6943
+6944
+6945
+6946
+6947
+6948
+6949
+6950
+6951
+6952
+6953
+6954
+6955
+6956
+6957
+6958
+6959
+6960
+6961
+6962
+6963
+6964
+6965
+6966
+6967
+6968
+6969
+6970
+6971
+6972
+6973
+6974
+6975
+6976
+6977
+6978
+6979
+6980
+6981
+6982
+6983
+6984
+6985
+6986
+6987
+6988
+6989
+6990
+6991
+6992
+6993
+6994
+6995
+6996
+6997
+6998
+6999
+7000
+7001
+7002
+7003
+7004
+7005
+7006
+7007
+7008
+7009
+7010
+7011
+7012
+7013
+7014
+7015
+7016
+7017
+7018
+7019
+7020
+7021
+7022
+7023
+7024
+7025
+7026
+7027
+7028
+7029
+7030
+7031
+7032
+7033
+7034
+7035
+7036
+7037
+7038
+7039
+7040
+7041
+7042
+7043
+7044
+7045
+7046
+7047
+7048
+7049
+7050
+7051
+7052
+7053
+7054
+7055
+7056
+7057
+7058
+7059
+7060
+7061
+7062
+7063
+7064
+7065
+7066
+7067
+7068
+7069
+7070
+7071
+7072
+7073
+7074
+7075
+7076
+7077
+7078
+7079
+7080
+7081
+7082
+7083
+7084
+7085
+7086
+7087
+7088
+7089
+7090
+7091
+7092
+7093
+7094
+7095
+7096
+7097
+7098
+7099
+7100
+7101
+7102
+7103
+7104
+7105
+7106
+7107
+7108
+7109
+7110
+7111
+7112
+7113
+7114
+7115
+7116
+7117
+7118
+7119
+7120
+7121
+7122
+7123
+7124
+7125
+7126
+7127
+7128
+7129
+7130
+7131
+7132
+7133
+7134
+7135
+7136
+7137
+7138
+7139
+7140
+7141
+7142
+7143
+7144
+7145
+7146
+7147
+7148
+7149
+7150
+7151
+7152
+7153
+7154
+7155
+7156
+7157
+7158
+7159
+7160
+7161
+7162
+7163
+7164
+7165
+7166
+7167
+7168
+7169
+7170
+7171
+7172
+7173
+7174
+7175
+7176
+7177
+7178
+7179
+7180
+7181
+7182
+7183
+7184
+7185
+7186
+7187
+7188
+7189
+7190
+7191
+7192
+7193
+7194
+7195
+7196
+7197
+7198
+7199
+7200
+7201
+7202
+7203
+7204
+7205
+7206
+7207
+7208
+7209
+7210
+7211
+7212
+7213
+7214
+7215
+7216
+7217
+7218
+7219
+7220
+7221
+7222
+7223
+7224
+7225
+7226
+7227
+7228
+7229
+7230
+7231
+7232
+7233
+7234
+7235
+7236
+7237
+7238
+7239
+7240
+7241
+7242
+7243
+7244
+7245
+7246
+7247
+7248
+7249
+7250
+7251
+7252
+7253
+7254
+7255
+7256
+7257
+7258
+7259
+7260
+7261
+7262
+7263
+7264
+7265
+7266
+7267
+7268
+7269
+7270
+7271
+7272
+7273
+7274
+7275
+7276
+7277
+7278
+7279
+7280
+7281
+7282
+7283
+7284
+7285
+7286
+7287
+7288
+7289
+7290
+7291
+7292
+7293
+7294
+7295
+7296
+7297
+7298
+7299
+7300
+7301
+7302
+7303
+7304
+7305
+7306
+7307
+7308
+7309
+7310
+7311
+7312
+7313
+7314
+7315
+7316
+7317
+7318
+7319
+7320
+7321
+7322
+7323
+7324
+7325
+7326
+7327
+7328
+7329
+7330
+7331
+7332
+7333
+7334
+7335
+7336
+7337
+7338
+7339
+7340
+7341
+7342
+7343
+7344
+7345
+7346
+7347
+7348
+7349
+7350
+7351
+7352
+7353
+7354
+7355
+7356
+7357
+7358
+7359
+7360
+7361
+7362
+7363
+7364
+7365
+7366
+7367
+7368
+7369
+7370
+7371
+7372
+7373
+7374
+7375
+7376
+7377
+7378
+7379
+7380
+7381
+7382
+7383
+7384
+7385
+7386
+7387
+7388
+7389
+7390
+7391
+7392
+7393
+7394
+7395
+7396
+7397
+7398
+7399
+7400
+7401
+7402
+7403
+7404
+7405
+7406
+7407
+7408
+7409
+7410
+7411
+7412
+7413
+7414
+7415
+7416
+7417
+7418
+7419
+7420
+7421
+7422
+7423
+7424
+7425
+7426
+7427
+7428
+7429
+7430
+7431
+7432
+7433
+7434
+7435
+7436
+7437
+7438
+7439
+7440
+7441
+7442
+7443
+7444
+7445
+7446
+7447
+7448
+7449
+7450
+7451
+7452
+7453
+7454
+7455
+7456
+7457
+7458
+7459
+7460
+7461
+7462
+7463
+7464
+7465
+7466
+7467
+7468
+7469
+7470
+7471
+7472
+7473
+7474
+7475
+7476
+7477
+7478
+7479
+7480
+7481
+7482
+7483
+7484
+7485
+7486
+7487
+7488
+7489
+7490
+7491
+7492
+7493
+7494
+7495
+7496
+7497
+7498
+7499
+7500
+7501
+7502
+7503
+7504
+7505
+7506
+7507
+7508
+7509
+7510
+7511
+7512
+7513
+7514
+7515
+7516
+7517
+7518
+7519
+7520
+7521
+7522
+7523
+7524
+7525
+7526
+7527
+7528
+7529
+7530
+7531
+7532
+7533
+7534
+7535
+7536
+7537
+7538
+7539
+7540
+7541
+7542
+7543
+7544
+7545
+7546
+7547
+7548
+7549
+7550
+7551
+7552
+7553
+7554
+7555
+7556
+7557
+7558
+7559
+7560
+7561
+7562
+7563
+7564
+7565
+7566
+7567
+7568
+7569
+7570
+7571
+7572
+7573
+7574
+7575
+7576
+7577
+7578
+7579
+7580
+7581
+7582
+7583
+7584
+7585
+7586
+7587
+7588
+7589
+7590
+7591
+7592
+7593
+7594
+7595
+7596
+7597
+7598
+7599
+7600
+7601
+7602
+7603
+7604
+7605
+7606
+7607
+7608
+7609
+7610
+7611
+7612
+7613
+7614
+7615
+7616
+7617
+7618
+7619
+7620
+7621
+7622
+7623
+7624
+7625
+7626
+7627
+7628
+7629
+7630
+7631
+7632
+7633
+7634
+7635
+7636
+7637
+7638
+7639
+7640
+7641
+7642
+7643
+7644
+7645
+7646
+7647
+7648
+7649
+7650
+7651
+7652
+7653
+7654
+7655
+7656
+7657
+7658
+7659
+7660
+7661
+7662
+7663
+7664
+7665
+7666
+7667
+7668
+7669
+7670
+7671
+7672
+7673
+7674
+7675
+7676
+7677
+7678
+7679
+7680
+7681
+7682
+7683
+7684
+7685
+7686
+7687
+7688
+7689
+7690
+7691
+7692
+7693
+7694
+7695
+7696
+7697
+7698
+7699
+7700
+7701
+7702
+7703
+7704
+7705
+7706
+7707
+7708
+7709
+7710
+7711
+7712
+7713
+7714
+7715
+7716
+7717
+7718
+7719
+7720
+7721
+7722
+7723
+7724
+7725
+7726
+7727
+7728
+7729
+7730
+7731
+7732
+7733
+7734
+7735
+7736
+7737
+7738
+7739
+7740
+7741
+7742
+7743
+7744
+7745
+7746
+7747
+7748
+7749
+7750
+7751
+7752
+7753
+7754
+7755
+7756
+7757
+7758
+7759
+7760
+7761
+7762
+7763
+7764
+7765
+7766
+7767
+7768
+7769
+7770
+7771
+7772
+7773
+7774
+7775
+7776
+7777
+7778
+7779
+7780
+7781
+7782
+7783
+7784
+7785
+7786
+7787
+7788
+7789
+7790
+7791
+7792
+7793
+7794
+7795
+7796
+7797
+7798
+7799
+7800
+7801
+7802
+7803
+7804
+7805
+7806
+7807
+7808
+7809
+7810
+7811
+7812
+7813
+7814
+7815
+7816
+7817
+7818
+7819
+7820
+7821
+7822
+7823
+7824
+7825
+7826
+7827
+7828
+7829
+7830
+7831
+7832
+7833
+7834
+7835
+7836
+7837
+7838
+7839
+7840
+7841
+7842
+7843
+7844
+7845
+7846
+7847
+7848
+7849
+7850
+7851
+7852
+7853
+7854
+7855
+7856
+7857
+7858
+7859
+7860
+7861
+7862
+7863
+7864
+7865
+7866
+7867
+7868
+7869
+7870
+7871
+7872
+7873
+7874
+7875
+7876
+7877
+7878
+7879
+7880
+7881
+7882
+7883
+7884
+7885
+7886
+7887
+7888
+7889
+7890
+7891
+7892
+7893
+7894
+7895
+7896
+7897
+7898
+7899
+7900
+7901
+7902
+7903
+7904
+7905
+7906
+7907
+7908
+7909
+7910
+7911
+7912
+7913
+7914
+7915
+7916
+7917
+7918
+7919
+7920
+7921
+7922
+7923
+7924
+7925
+7926
+7927
+7928
+7929
+7930
+7931
+7932
+7933
+7934
+7935
+7936
+7937
+7938
+7939
+7940
+7941
+7942
+7943
+7944
+7945
+7946
+7947
+7948
+7949
+7950
+7951
+7952
+7953
+7954
+7955
+7956
+7957
+7958
+7959
+7960
+7961
+7962
+7963
+7964
+7965
+7966
+7967
+7968
+7969
+7970
+7971
+7972
+7973
+7974
+7975
+7976
+7977
+7978
+7979
+7980
+7981
+7982
+7983
+7984
+7985
+7986
+7987
+7988
+7989
+7990
+7991
+7992
+7993
+7994
+7995
+7996
+7997
+7998
+7999
+8000
+8001
+8002
+8003
+8004
+8005
+8006
+8007
+8008
+8009
+8010
+8011
+8012
+8013
+8014
+8015
+8016
+8017
+8018
+8019
+8020
+8021
+8022
+8023
+8024
+8025
+8026
+8027
+8028
+8029
+8030
+8031
+8032
+8033
+8034
+8035
+8036
+8037
+8038
+8039
+8040
+8041
+8042
+8043
+8044
+8045
+8046
+8047
+8048
+8049
+8050
+8051
+8052
+8053
+8054
+8055
+8056
+8057
+8058
+8059
+8060
+8061
+8062
+8063
+8064
+8065
+8066
+8067
+8068
+8069
+8070
+8071
+8072
+8073
+8074
+8075
+8076
+8077
+8078
+8079
+8080
+8081
+8082
+8083
+8084
+8085
+8086
+8087
+8088
+8089
+8090
+8091
+8092
+8093
+8094
+8095
+8096
+8097
+8098
+8099
+8100
+8101
+8102
+8103
+8104
+8105
+8106
+8107
+8108
+8109
+8110
+8111
+8112
+8113
+8114
+8115
+8116
+8117
+8118
+8119
+8120
+8121
+8122
+8123
+8124
+8125
+8126
+8127
+8128
+8129
+8130
+8131
+8132
+8133
+8134
+8135
+8136
+8137
+8138
+8139
+8140
+8141
+8142
+8143
+8144
+8145
+8146
+8147
+8148
+8149
+8150
+8151
+8152
+8153
+8154
+8155
+8156
+8157
+8158
+8159
+8160
+8161
+8162
+8163
+8164
+8165
+8166
+8167
+8168
+8169
+8170
+8171
+8172
+8173
+8174
+8175
+8176
+8177
+8178
+8179
+8180
+8181
+8182
+8183
+8184
+8185
+8186
+8187
+8188
+8189
+8190
+8191
+8192
+8193
+8194
+8195
+8196
+8197
+8198
+8199
+8200
+8201
+8202
+8203
+8204
+8205
+8206
+8207
+8208
+8209
+8210
+8211
+8212
+8213
+8214
+8215
+8216
+8217
+8218
+8219
+8220
+8221
+8222
+8223
+8224
+8225
+8226
+8227
+8228
+8229
+8230
+8231
+8232
+8233
+8234
+8235
+8236
+8237
+8238
+8239
+8240
+8241
+8242
+8243
+8244
+8245
+8246
+8247
+8248
+8249
+8250
+8251
+8252
+8253
+8254
+8255
+8256
+8257
+8258
+8259
+8260
+8261
+8262
+8263
+8264
+8265
+8266
+8267
+8268
+8269
+8270
+8271
+8272
+8273
+8274
+8275
+8276
+8277
+8278
+8279
+8280
+8281
+8282
+8283
+8284
+8285
+8286
+8287
+8288
+8289
+8290
+8291
+8292
+8293
+8294
+8295
+8296
+8297
+8298
+8299
+8300
+8301
+8302
+8303
+8304
+8305
+8306
+8307
+8308
+8309
+8310
+8311
+8312
+8313
+8314
+8315
+8316
+8317
+8318
+8319
+8320
+8321
+8322
+8323
+8324
+8325
+8326
+8327
+8328
+8329
+8330
+8331
+8332
+8333
+8334
+8335
+8336
+8337
+8338
+8339
+8340
+8341
+8342
+8343
+8344
+8345
+8346
+8347
+8348
+8349
+8350
+8351
+8352
+8353
+8354
+8355
+8356
+8357
+8358
+8359
+8360
+8361
+8362
+8363
+8364
+8365
+8366
+8367
+8368
+8369
+8370
+8371
+8372
+8373
+8374
+8375
+8376
+8377
+8378
+8379
+8380
+8381
+8382
+8383
+8384
+8385
+8386
+8387
+8388
+8389
+8390
+8391
+8392
+8393
+8394
+8395
+8396
+8397
+8398
+8399
+8400
+8401
+8402
+8403
+8404
+8405
+8406
+8407
+8408
+8409
+8410
+8411
+8412
+8413
+8414
+8415
+8416
+8417
+8418
+8419
+8420
+8421
+8422
+8423
+8424
+8425
+8426
+8427
+8428
+8429
+8430
+8431
+8432
+8433
+8434
+8435
+8436
+8437
+8438
+8439
+8440
+8441
+8442
+8443
+8444
+8445
+8446
+8447
+8448
+8449
+8450
+8451
+8452
+8453
+8454
+8455
+8456
+8457
+8458
+8459
+8460
+8461
+8462
+8463
+8464
+8465
+8466
+8467
+8468
+8469
+8470
+8471
+8472
+8473
+8474
+8475
+8476
+8477
+8478
+8479
+8480
+8481
+8482
+8483
+8484
+8485
+8486
+8487
+8488
+8489
+8490
+8491
+8492
+8493
+8494
+8495
+8496
+8497
+8498
+8499
+8500
+8501
+8502
+8503
+8504
+8505
+8506
+8507
+8508
+8509
+8510
+8511
+8512
+8513
+8514
+8515
+8516
+8517
+8518
+8519
+8520
+8521
+8522
+8523
+8524
+8525
+8526
+8527
+8528
+8529
+8530
+8531
+8532
+8533
+8534
+8535
+8536
+8537
+8538
+8539
+8540
+8541
+8542
+8543
+8544
+8545
+8546
+8547
+8548
+8549
+8550
+8551
+8552
+8553
+8554
+8555
+8556
+8557
+8558
+8559
+8560
+8561
+8562
+8563
+8564
+8565
+8566
+8567
+8568
+8569
+8570
+8571
+8572
+8573
+8574
+8575
+8576
+8577
+8578
+8579
+8580
+8581
+8582
+8583
+8584
+8585
+8586
+8587
+8588
+8589
+8590
+8591
+8592
+8593
+8594
+8595
+8596
+8597
+8598
+8599
+8600
+8601
+8602
+8603
+8604
+8605
+8606
+8607
+8608
+8609
+8610
+8611
+8612
+8613
+8614
+8615
+8616
+8617
+8618
+8619
+8620
+8621
+8622
+8623
+8624
+8625
+8626
+8627
+8628
+8629
+8630
+8631
+8632
+8633
+8634
+8635
+8636
+8637
+8638
+8639
+8640
+8641
+8642
+8643
+8644
+8645
+8646
+8647
+8648
+8649
+8650
+8651
+8652
+8653
+8654
+8655
+8656
+8657
+8658
+8659
+8660
+8661
+8662
+8663
+8664
+8665
+8666
+8667
+8668
+8669
+8670
+8671
+8672
+8673
+8674
+8675
+8676
+8677
+8678
+8679
+8680
+8681
+8682
+8683
+8684
+8685
+8686
+8687
+8688
+8689
+8690
+8691
+8692
+8693
+8694
+8695
+8696
+8697
+8698
+8699
+8700
+8701
+8702
+8703
+8704
+8705
+8706
+8707
+8708
+8709
+8710
+8711
+8712
+8713
+8714
+8715
+8716
+8717
+8718
+8719
+8720
+8721
+8722
+8723
+8724
+8725
+8726
+8727
+8728
+8729
+8730
+8731
+8732
+8733
+8734
+8735
+8736
+8737
+8738
+8739
+8740
+8741
+8742
+8743
+8744
+8745
+8746
+8747
+8748
+8749
+8750
+8751
+8752
+8753
+8754
+8755
+8756
+8757
+8758
+8759
+8760
+8761
+8762
+8763
+8764
+8765
+8766
+8767
+8768
+8769
+8770
+8771
+8772
+8773
+8774
+8775
+8776
+8777
+8778
+8779
+8780
+8781
+8782
+8783
+8784
+8785
+8786
+8787
+8788
+8789
+8790
+8791
+8792
+8793
+8794
+8795
+8796
+8797
+8798
+8799
+8800
+8801
+8802
+8803
+8804
+8805
+8806
+8807
+8808
+8809
+8810
+8811
+8812
+8813
+8814
+8815
+8816
+8817
+8818
+8819
+8820
+8821
+8822
+8823
+8824
+8825
+8826
+8827
+8828
+8829
+8830
+8831
+8832
+8833
+8834
+8835
+8836
+8837
+8838
+8839
+8840
+8841
+8842
+8843
+8844
+8845
+8846
+8847
+8848
+8849
+8850
+8851
+8852
+8853
+8854
+8855
+8856
+8857
+8858
+8859
+8860
+8861
+8862
+8863
+8864
+8865
+8866
+8867
+8868
+8869
+8870
+8871
+8872
+8873
+8874
+8875
+8876
+8877
+8878
+8879
+8880
+8881
+8882
+8883
+8884
+8885
+8886
+8887
+8888
+8889
+8890
+8891
+8892
+8893
+8894
+8895
+8896
+8897
+8898
+8899
+8900
+8901
+8902
+8903
+8904
+8905
+8906
+8907
+8908
+8909
+8910
+8911
+8912
+8913
+8914
+8915
+8916
+8917
+8918
+8919
+8920
+8921
+8922
+8923
+8924
+8925
+8926
+8927
+8928
+8929
+8930
+8931
+8932
+8933
+8934
+8935
+8936
+8937
+8938
+8939
+8940
+8941
+8942
+8943
+8944
+8945
+8946
+8947
+8948
+8949
+8950
+8951
+8952
+8953
+8954
+8955
+8956
+8957
+8958
+8959
+8960
+8961
+8962
+8963
+8964
+8965
+8966
+8967
+8968
+8969
+8970
+8971
+8972
+8973
+8974
+8975
+8976
+8977
+8978
+8979
+8980
+8981
+8982
+8983
+8984
+8985
+8986
+8987
+8988
+8989
+8990
+8991
+8992
+8993
+8994
+8995
+8996
+8997
+8998
+8999
+9000
+9001
+9002
+9003
+9004
+9005
+9006
+9007
+9008
+9009
+9010
+9011
+9012
+9013
+9014
+9015
+9016
+9017
+9018
+9019
+9020
+9021
+9022
+9023
+9024
+9025
+9026
+9027
+9028
+9029
+9030
+9031
+9032
+9033
+9034
+9035
+9036
+9037
+9038
+9039
+9040
+9041
+9042
+9043
+9044
+9045
+9046
+9047
+9048
+9049
+9050
+9051
+9052
+9053
+9054
+9055
+9056
+9057
+9058
+9059
+9060
+9061
+9062
+9063
+9064
+9065
+9066
+9067
+9068
+9069
+9070
+9071
+9072
+9073
+9074
+9075
+9076
+9077
+9078
+9079
+9080
+9081
+9082
+9083
+9084
+9085
+9086
+9087
+9088
+9089
+9090
+9091
+9092
+9093
+9094
+9095
+9096
+9097
+9098
+9099
+9100
+9101
+9102
+9103
+9104
+9105
+9106
+9107
+9108
+9109
+9110
+9111
+9112
+9113
+9114
+9115
+9116
+9117
+9118
+9119
+9120
+9121
+9122
+9123
+9124
+9125
+9126
+9127
+9128
+9129
+9130
+9131
+9132
+9133
+9134
+9135
+9136
+9137
+9138
+9139
+9140
+9141
+9142
+9143
+9144
+9145
+9146
+9147
+9148
+9149
+9150
+9151
+9152
+9153
+9154
+9155
+9156
+9157
+9158
+9159
+9160
+9161
+9162
+9163
+9164
+9165
+9166
+9167
+9168
+9169
+9170
+9171
+9172
+9173
+9174
+9175
+9176
+9177
+9178
+9179
+9180
+9181
+9182
+9183
+9184
+9185
+9186
+9187
+9188
+9189
+9190
+9191
+9192
+9193
+9194
+9195
+9196
+9197
+9198
+9199
+9200
+9201
+9202
+9203
+9204
+9205
+9206
+9207
+9208
+9209
+9210
+9211
+9212
+9213
+9214
+9215
+9216
+9217
+9218
+9219
+9220
+9221
+9222
+9223
+9224
+9225
+9226
+9227
+9228
+9229
+9230
+9231
+9232
+9233
+9234
+9235
+9236
+9237
+9238
+9239
+9240
+9241
+9242
+9243
+9244
+9245
+9246
+9247
+9248
+9249
+9250
+9251
+9252
+9253
+9254
+9255
+9256
+9257
+9258
+9259
+9260
+9261
+9262
+9263
+9264
+9265
+9266
+9267
+9268
+9269
+9270
+9271
+9272
+9273
+9274
+9275
+9276
+9277
+9278
+9279
+9280
+9281
+9282
+9283
+9284
+9285
+9286
+9287
+9288
+9289
+9290
+9291
+9292
+9293
+9294
+9295
+9296
+9297
+9298
+9299
+9300
+9301
+9302
+9303
+9304
+9305
+9306
+9307
+9308
+9309
+9310
+9311
+9312
+9313
+9314
+9315
+9316
+9317
+9318
+9319
+9320
+9321
+9322
+9323
+9324
+9325
+9326
+9327
+9328
+9329
+9330
+9331
+9332
+9333
+9334
+9335
+9336
+9337
+9338
+9339
+9340
+9341
+9342
+9343
+9344
+9345
+9346
+9347
+9348
+9349
+9350
+9351
+9352
+9353
+9354
+9355
+9356
+9357
+9358
+9359
+9360
+9361
+9362
+9363
+9364
+9365
+9366
+9367
+9368
+9369
+9370
+9371
+9372
+9373
+9374
+9375
+9376
+9377
+9378
+9379
+9380
+9381
+9382
+9383
+9384
+9385
+9386
+9387
+9388
+9389
+9390
+9391
+9392
+9393
+9394
+9395
+9396
+9397
+9398
+9399
+9400
+9401
+9402
+9403
+9404
+9405
+9406
+9407
+9408
+9409
+9410
+9411
+9412
+9413
+9414
+9415
+9416
+9417
+9418
+9419
+9420
+9421
+9422
+9423
+9424
+9425
+9426
+9427
+9428
+9429
+9430
+9431
+9432
+9433
+9434
+9435
+9436
+9437
+9438
+9439
+9440
+9441
+9442
+9443
+9444
+9445
+9446
+9447
+9448
+9449
+9450
+9451
+9452
+9453
+9454
+9455
+9456
+9457
+9458
+9459
+9460
+9461
+9462
+9463
+9464
+9465
+9466
+9467
+9468
+9469
+9470
+9471
+9472
+9473
+9474
+9475
+9476
+9477
+9478
+9479
+9480
+9481
+9482
+9483
+9484
+9485
+9486
+9487
+9488
+9489
+9490
+9491
+9492
+9493
+9494
+9495
+9496
+9497
+9498
+9499
+9500
+9501
+9502
+9503
+9504
+9505
+9506
+9507
+9508
+9509
+9510
+9511
+9512
+9513
+9514
+9515
+9516
+9517
+9518
+9519
+9520
+9521
+9522
+9523
+9524
+9525
+9526
+9527
+9528
+9529
+9530
+9531
+9532
+9533
+9534
+9535
+9536
+9537
+9538
+9539
+9540
+9541
+9542
+9543
+9544
+9545
+9546
+9547
+9548
+9549
+9550
+9551
+9552
+9553
+9554
+9555
+9556
+9557
+9558
+9559
+9560
+9561
+9562
+9563
+9564
+9565
+9566
+9567
+9568
+9569
+9570
+9571
+9572
+9573
+9574
+9575
+9576
+9577
+9578
+9579
+9580
+9581
+9582
+9583
+9584
+9585
+9586
+9587
+9588
+9589
+9590
+9591
+9592
+9593
+9594
+9595
+9596
+9597
+9598
+9599
+9600
+9601
+9602
+9603
+9604
+9605
+9606
+9607
+9608
+9609
+9610
+9611
+9612
+9613
+9614
+9615
+9616
+9617
+9618
+9619
+9620
+9621
+9622
+9623
+9624
+9625
+9626
+9627
+9628
+9629
+9630
+9631
+9632
+9633
+9634
+9635
+9636
+9637
+9638
+9639
+9640
+9641
+9642
+9643
+9644
+9645
+9646
+9647
+9648
+9649
+9650
+9651
+9652
+9653
+9654
+9655
+9656
+9657
+9658
+9659
+9660
+9661
+9662
+9663
+9664
+9665
+9666
+9667
+9668
+9669
+9670
+9671
+9672
+9673
+9674
+9675
+9676
+9677
+9678
+9679
+9680
+9681
+9682
+9683
+9684
+9685
+9686
+9687
+9688
+9689
+9690
+9691
+9692
+9693
+9694
+9695
+9696
+9697
+9698
+9699
+9700
+9701
+9702
+9703
+9704
+9705
+9706
+9707
+9708
+9709
+9710
+9711
+9712
+9713
+9714
+9715
+9716
+9717
+9718
+9719
+9720
+9721
+9722
+9723
+9724
+9725
+9726
+9727
+9728
+9729
+9730
+9731
+9732
+9733
+9734
+9735
+9736
+9737
+9738
+9739
+9740
+9741
+9742
+9743
+9744
+9745
+9746
+9747
+9748
+9749
+9750
+9751
+9752
+9753
+9754
+9755
+9756
+9757
+9758
+9759
+9760
+9761
+9762
+9763
+9764
+9765
+9766
+9767
+9768
+9769
+9770
+9771
+9772
+9773
+9774
+9775
+9776
+9777
+9778
+9779
+9780
+9781
+9782
+9783
+9784
+9785
+9786
+9787
+9788
+9789
+9790
+9791
+9792
+9793
+9794
+9795
+9796
+9797
+9798
+9799
+9800
+9801
+9802
+9803
+9804
+9805
+9806
+9807
+9808
+9809
+9810
+9811
+9812
+9813
+9814
+9815
+9816
+9817
+9818
+9819
+9820
+9821
+9822
+9823
+9824
+9825
+9826
+9827
+9828
+9829
+9830
+9831
+9832
+9833
+9834
+9835
+9836
// @generated by the capnpc-rust plugin to the Cap'n Proto schema compiler.
+// DO NOT EDIT.
+// source: proto/conmon.capnp
+
+
+
+pub mod conmon {
+  #![allow(unused_variables)]
+  pub type VersionParams<> = ::capnp::capability::Params<crate::conmon_capnp::conmon::version_params::Owned>;
+  pub type VersionResults<> = ::capnp::capability::Results<crate::conmon_capnp::conmon::version_results::Owned>;
+  pub type CreateContainerParams<> = ::capnp::capability::Params<crate::conmon_capnp::conmon::create_container_params::Owned>;
+  pub type CreateContainerResults<> = ::capnp::capability::Results<crate::conmon_capnp::conmon::create_container_results::Owned>;
+  pub type ExecSyncContainerParams<> = ::capnp::capability::Params<crate::conmon_capnp::conmon::exec_sync_container_params::Owned>;
+  pub type ExecSyncContainerResults<> = ::capnp::capability::Results<crate::conmon_capnp::conmon::exec_sync_container_results::Owned>;
+  pub type AttachContainerParams<> = ::capnp::capability::Params<crate::conmon_capnp::conmon::attach_container_params::Owned>;
+  pub type AttachContainerResults<> = ::capnp::capability::Results<crate::conmon_capnp::conmon::attach_container_results::Owned>;
+  pub type ReopenLogContainerParams<> = ::capnp::capability::Params<crate::conmon_capnp::conmon::reopen_log_container_params::Owned>;
+  pub type ReopenLogContainerResults<> = ::capnp::capability::Results<crate::conmon_capnp::conmon::reopen_log_container_results::Owned>;
+  pub type SetWindowSizeContainerParams<> = ::capnp::capability::Params<crate::conmon_capnp::conmon::set_window_size_container_params::Owned>;
+  pub type SetWindowSizeContainerResults<> = ::capnp::capability::Results<crate::conmon_capnp::conmon::set_window_size_container_results::Owned>;
+  pub type CreateNamespacesParams<> = ::capnp::capability::Params<crate::conmon_capnp::conmon::create_namespaces_params::Owned>;
+  pub type CreateNamespacesResults<> = ::capnp::capability::Results<crate::conmon_capnp::conmon::create_namespaces_results::Owned>;
+  pub type StartFdSocketParams<> = ::capnp::capability::Params<crate::conmon_capnp::conmon::start_fd_socket_params::Owned>;
+  pub type StartFdSocketResults<> = ::capnp::capability::Results<crate::conmon_capnp::conmon::start_fd_socket_results::Owned>;
+
+  pub struct Client {
+    pub client: ::capnp::capability::Client,
+  }
+  impl  ::capnp::capability::FromClientHook for Client {
+    fn new(hook: Box<dyn (::capnp::private::capability::ClientHook)>) -> Self {
+      Self { client: ::capnp::capability::Client::new(hook),  }
+    }
+    fn into_client_hook(self) -> Box<dyn (::capnp::private::capability::ClientHook)> {
+      self.client.hook
+    }
+    fn as_client_hook(&self) -> &dyn (::capnp::private::capability::ClientHook) {
+      &*self.client.hook
+    }
+  }
+  #[derive(Copy, Clone)]
+  pub struct Owned(());
+  impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Capability.into() } }
+  impl ::capnp::traits::Owned for Owned { type Reader<'a> = Client; type Builder<'a> = Client; }
+  impl ::capnp::traits::Pipelined for Owned { type Pipeline = Client; }
+  impl <'a,> ::capnp::traits::FromPointerReader<'a> for Client<>  {
+    fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, _default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+      ::core::result::Result::Ok(::capnp::capability::FromClientHook::new(reader.get_capability()?))
+    }
+  }
+  impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Client<>  {
+    fn init_pointer(_builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+      unimplemented!()
+    }
+    fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+      ::core::result::Result::Ok(::capnp::capability::FromClientHook::new(builder.get_capability()?))
+    }
+  }
+
+  impl <> ::capnp::traits::SetterInput<Owned<>> for Client<>  {
+    fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, from: Self, _canonicalize: bool) -> ::capnp::Result<()> {
+      pointer.set_capability(from.client.hook);
+      ::core::result::Result::Ok(())
+    }
+  }
+  impl  ::capnp::traits::HasTypeId for Client {
+    const TYPE_ID: u64 = _private::TYPE_ID;
+  }
+  impl  Clone for Client {
+    fn clone(&self) -> Self {
+      Self { client: ::capnp::capability::Client::new(self.client.hook.add_ref()),  }
+    }
+  }
+  impl  Client {
+    pub fn version_request(&self) -> ::capnp::capability::Request<crate::conmon_capnp::conmon::version_params::Owned,crate::conmon_capnp::conmon::version_results::Owned> {
+      self.client.new_call(_private::TYPE_ID, 0, ::core::option::Option::None)
+    }
+    pub fn create_container_request(&self) -> ::capnp::capability::Request<crate::conmon_capnp::conmon::create_container_params::Owned,crate::conmon_capnp::conmon::create_container_results::Owned> {
+      self.client.new_call(_private::TYPE_ID, 1, ::core::option::Option::None)
+    }
+    pub fn exec_sync_container_request(&self) -> ::capnp::capability::Request<crate::conmon_capnp::conmon::exec_sync_container_params::Owned,crate::conmon_capnp::conmon::exec_sync_container_results::Owned> {
+      self.client.new_call(_private::TYPE_ID, 2, ::core::option::Option::None)
+    }
+    pub fn attach_container_request(&self) -> ::capnp::capability::Request<crate::conmon_capnp::conmon::attach_container_params::Owned,crate::conmon_capnp::conmon::attach_container_results::Owned> {
+      self.client.new_call(_private::TYPE_ID, 3, ::core::option::Option::None)
+    }
+    pub fn reopen_log_container_request(&self) -> ::capnp::capability::Request<crate::conmon_capnp::conmon::reopen_log_container_params::Owned,crate::conmon_capnp::conmon::reopen_log_container_results::Owned> {
+      self.client.new_call(_private::TYPE_ID, 4, ::core::option::Option::None)
+    }
+    pub fn set_window_size_container_request(&self) -> ::capnp::capability::Request<crate::conmon_capnp::conmon::set_window_size_container_params::Owned,crate::conmon_capnp::conmon::set_window_size_container_results::Owned> {
+      self.client.new_call(_private::TYPE_ID, 5, ::core::option::Option::None)
+    }
+    pub fn create_namespaces_request(&self) -> ::capnp::capability::Request<crate::conmon_capnp::conmon::create_namespaces_params::Owned,crate::conmon_capnp::conmon::create_namespaces_results::Owned> {
+      self.client.new_call(_private::TYPE_ID, 6, ::core::option::Option::None)
+    }
+    pub fn start_fd_socket_request(&self) -> ::capnp::capability::Request<crate::conmon_capnp::conmon::start_fd_socket_params::Owned,crate::conmon_capnp::conmon::start_fd_socket_results::Owned> {
+      self.client.new_call(_private::TYPE_ID, 7, ::core::option::Option::None)
+    }
+  }
+  pub trait Server<>   {
+    fn version(&mut self, _: VersionParams<>, _: VersionResults<>) -> ::capnp::capability::Promise<(), ::capnp::Error> { ::capnp::capability::Promise::err(::capnp::Error::unimplemented("method conmon::Server::version not implemented".to_string())) }
+    fn create_container(&mut self, _: CreateContainerParams<>, _: CreateContainerResults<>) -> ::capnp::capability::Promise<(), ::capnp::Error> { ::capnp::capability::Promise::err(::capnp::Error::unimplemented("method conmon::Server::create_container not implemented".to_string())) }
+    fn exec_sync_container(&mut self, _: ExecSyncContainerParams<>, _: ExecSyncContainerResults<>) -> ::capnp::capability::Promise<(), ::capnp::Error> { ::capnp::capability::Promise::err(::capnp::Error::unimplemented("method conmon::Server::exec_sync_container not implemented".to_string())) }
+    fn attach_container(&mut self, _: AttachContainerParams<>, _: AttachContainerResults<>) -> ::capnp::capability::Promise<(), ::capnp::Error> { ::capnp::capability::Promise::err(::capnp::Error::unimplemented("method conmon::Server::attach_container not implemented".to_string())) }
+    fn reopen_log_container(&mut self, _: ReopenLogContainerParams<>, _: ReopenLogContainerResults<>) -> ::capnp::capability::Promise<(), ::capnp::Error> { ::capnp::capability::Promise::err(::capnp::Error::unimplemented("method conmon::Server::reopen_log_container not implemented".to_string())) }
+    fn set_window_size_container(&mut self, _: SetWindowSizeContainerParams<>, _: SetWindowSizeContainerResults<>) -> ::capnp::capability::Promise<(), ::capnp::Error> { ::capnp::capability::Promise::err(::capnp::Error::unimplemented("method conmon::Server::set_window_size_container not implemented".to_string())) }
+    fn create_namespaces(&mut self, _: CreateNamespacesParams<>, _: CreateNamespacesResults<>) -> ::capnp::capability::Promise<(), ::capnp::Error> { ::capnp::capability::Promise::err(::capnp::Error::unimplemented("method conmon::Server::create_namespaces not implemented".to_string())) }
+    fn start_fd_socket(&mut self, _: StartFdSocketParams<>, _: StartFdSocketResults<>) -> ::capnp::capability::Promise<(), ::capnp::Error> { ::capnp::capability::Promise::err(::capnp::Error::unimplemented("method conmon::Server::start_fd_socket not implemented".to_string())) }
+  }
+  pub struct ServerDispatch<_T,> {
+    pub server: _T,
+  }
+  impl <_S: Server + 'static, > ::capnp::capability::FromServer<_S> for Client   {
+    type Dispatch = ServerDispatch<_S, >;
+    fn from_server(s: _S) -> ServerDispatch<_S, > {
+      ServerDispatch { server: s,  }
+    }
+  }
+  impl <_T: Server> ::core::ops::Deref for ServerDispatch<_T> {
+    type Target = _T;
+    fn deref(&self) -> &_T { &self.server}
+  }
+  impl <_T: Server> ::core::ops::DerefMut for ServerDispatch<_T> {
+    fn deref_mut(&mut self) -> &mut _T { &mut self.server}
+  }
+  impl <_T: Server> ::capnp::capability::Server for ServerDispatch<_T> {
+    fn dispatch_call(&mut self, interface_id: u64, method_id: u16, params: ::capnp::capability::Params<::capnp::any_pointer::Owned>, results: ::capnp::capability::Results<::capnp::any_pointer::Owned>) -> ::capnp::capability::Promise<(), ::capnp::Error> {
+      match interface_id {
+        _private::TYPE_ID => Self::dispatch_call_internal(&mut self.server, method_id, params, results),
+        _ => { ::capnp::capability::Promise::err(::capnp::Error::unimplemented("Method not implemented.".to_string())) }
+      }
+    }
+  }
+  impl <_T :Server> ServerDispatch<_T> {
+    pub fn dispatch_call_internal(server: &mut _T, method_id: u16, params: ::capnp::capability::Params<::capnp::any_pointer::Owned>, results: ::capnp::capability::Results<::capnp::any_pointer::Owned>) -> ::capnp::capability::Promise<(), ::capnp::Error> {
+      match method_id {
+        0 => server.version(::capnp::private::capability::internal_get_typed_params(params), ::capnp::private::capability::internal_get_typed_results(results)),
+        1 => server.create_container(::capnp::private::capability::internal_get_typed_params(params), ::capnp::private::capability::internal_get_typed_results(results)),
+        2 => server.exec_sync_container(::capnp::private::capability::internal_get_typed_params(params), ::capnp::private::capability::internal_get_typed_results(results)),
+        3 => server.attach_container(::capnp::private::capability::internal_get_typed_params(params), ::capnp::private::capability::internal_get_typed_results(results)),
+        4 => server.reopen_log_container(::capnp::private::capability::internal_get_typed_params(params), ::capnp::private::capability::internal_get_typed_results(results)),
+        5 => server.set_window_size_container(::capnp::private::capability::internal_get_typed_params(params), ::capnp::private::capability::internal_get_typed_results(results)),
+        6 => server.create_namespaces(::capnp::private::capability::internal_get_typed_params(params), ::capnp::private::capability::internal_get_typed_results(results)),
+        7 => server.start_fd_socket(::capnp::private::capability::internal_get_typed_params(params), ::capnp::private::capability::internal_get_typed_results(results)),
+        _ => { ::capnp::capability::Promise::err(::capnp::Error::unimplemented("Method not implemented.".to_string())) }
+      }
+    }
+  }
+  pub mod _private {
+    pub const TYPE_ID: u64 = 0xb737_e899_dd66_33f1;
+  }
+
+  pub mod version_request {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_verbose(self) -> bool {
+        self.reader.get_bool_field(0)
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.reader.get_pointer_field(1).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 2 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_verbose(self) -> bool {
+        self.builder.get_bool_field(0)
+      }
+      #[inline]
+      pub fn set_verbose(&mut self, value: bool)  {
+        self.builder.set_bool_field(0, value);
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata_old(&mut self, value: ::capnp::data::Reader<'_>)  {
+        self.builder.reborrow().get_pointer_field(0).set_data(value);
+      }
+      #[inline]
+      pub fn init_metadata_old(self, size: u32) -> ::capnp::data::Builder<'a> {
+        self.builder.get_pointer_field(0).init_data(size)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::text_text_map_entry::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false)
+      }
+      #[inline]
+      pub fn init_metadata(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(1), size)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.builder.is_pointer_field_null(1)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 71] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(19, 68, 48, 185, 214, 51, 42, 173),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(2, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 74, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 175, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 86, 101, 114, 115, 105, 111),
+        ::capnp::word(110, 82, 101, 113, 117, 101, 115, 116),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(69, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(64, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(76, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(73, 0, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(72, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(84, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(2, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(81, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(80, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(108, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(118, 101, 114, 98, 111, 115, 101, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(79, 108, 100, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <bool as ::capnp::introspect::Introspect>::introspect(),
+          1 => <::capnp::data::Owned as ::capnp::introspect::Introspect>::introspect(),
+          2 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::text_text_map_entry::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1,2];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[2,1,0];
+      pub const TYPE_ID: u64 = 0xad2a_33d6_b930_4413;
+    }
+  }
+
+  pub mod version_response {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_process_id(self) -> u32 {
+        self.reader.get_data_field::<u32>(0)
+      }
+      #[inline]
+      pub fn get_version(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_version(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_tag(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_tag(&self) -> bool {
+        !self.reader.get_pointer_field(1).is_null()
+      }
+      #[inline]
+      pub fn get_commit(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_commit(&self) -> bool {
+        !self.reader.get_pointer_field(2).is_null()
+      }
+      #[inline]
+      pub fn get_build_date(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(3), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_build_date(&self) -> bool {
+        !self.reader.get_pointer_field(3).is_null()
+      }
+      #[inline]
+      pub fn get_target(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(4), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_target(&self) -> bool {
+        !self.reader.get_pointer_field(4).is_null()
+      }
+      #[inline]
+      pub fn get_rust_version(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(5), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_rust_version(&self) -> bool {
+        !self.reader.get_pointer_field(5).is_null()
+      }
+      #[inline]
+      pub fn get_cargo_version(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(6), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_cargo_version(&self) -> bool {
+        !self.reader.get_pointer_field(6).is_null()
+      }
+      #[inline]
+      pub fn get_cargo_tree(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(7), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_cargo_tree(&self) -> bool {
+        !self.reader.get_pointer_field(7).is_null()
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::data::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(8), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.reader.get_pointer_field(8).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 9 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_process_id(self) -> u32 {
+        self.builder.get_data_field::<u32>(0)
+      }
+      #[inline]
+      pub fn set_process_id(&mut self, value: u32)  {
+        self.builder.set_data_field::<u32>(0, value);
+      }
+      #[inline]
+      pub fn get_version(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_version(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_version(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(0).init_text(size)
+      }
+      #[inline]
+      pub fn has_version(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_tag(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_tag(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_tag(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(1).init_text(size)
+      }
+      #[inline]
+      pub fn has_tag(&self) -> bool {
+        !self.builder.is_pointer_field_null(1)
+      }
+      #[inline]
+      pub fn get_commit(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_commit(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_commit(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(2).init_text(size)
+      }
+      #[inline]
+      pub fn has_commit(&self) -> bool {
+        !self.builder.is_pointer_field_null(2)
+      }
+      #[inline]
+      pub fn get_build_date(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(3), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_build_date(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_build_date(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(3).init_text(size)
+      }
+      #[inline]
+      pub fn has_build_date(&self) -> bool {
+        !self.builder.is_pointer_field_null(3)
+      }
+      #[inline]
+      pub fn get_target(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(4), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_target(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_target(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(4).init_text(size)
+      }
+      #[inline]
+      pub fn has_target(&self) -> bool {
+        !self.builder.is_pointer_field_null(4)
+      }
+      #[inline]
+      pub fn get_rust_version(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(5), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_rust_version(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(5), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_rust_version(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(5).init_text(size)
+      }
+      #[inline]
+      pub fn has_rust_version(&self) -> bool {
+        !self.builder.is_pointer_field_null(5)
+      }
+      #[inline]
+      pub fn get_cargo_version(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(6), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_cargo_version(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(6), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_cargo_version(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(6).init_text(size)
+      }
+      #[inline]
+      pub fn has_cargo_version(&self) -> bool {
+        !self.builder.is_pointer_field_null(6)
+      }
+      #[inline]
+      pub fn get_cargo_tree(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(7), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_cargo_tree(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(7), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_cargo_tree(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(7).init_text(size)
+      }
+      #[inline]
+      pub fn has_cargo_tree(&self) -> bool {
+        !self.builder.is_pointer_field_null(7)
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::data::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(8), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata(&mut self, value: ::capnp::data::Reader<'_>)  {
+        self.builder.reborrow().get_pointer_field(8).set_data(value);
+      }
+      #[inline]
+      pub fn init_metadata(self, size: u32) -> ::capnp::data::Builder<'a> {
+        self.builder.get_pointer_field(8).init_data(size)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.builder.is_pointer_field_null(8)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 176] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(209, 238, 31, 172, 203, 229, 75, 243),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(9, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 82, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 55, 2, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 86, 101, 114, 115, 105, 111),
+        ::capnp::word(110, 82, 101, 115, 112, 111, 110, 115),
+        ::capnp::word(101, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(40, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(9, 1, 0, 0, 82, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(17, 1, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(24, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(2, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 1, 0, 0, 34, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(28, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(3, 0, 0, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(25, 1, 0, 0, 58, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(20, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(32, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(29, 1, 0, 0, 82, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(28, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(40, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(5, 0, 0, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 1, 0, 0, 58, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(32, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(44, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(6, 0, 0, 0, 5, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 1, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(40, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(52, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(7, 0, 0, 0, 6, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(49, 1, 0, 0, 106, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(48, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(60, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(8, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 8, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(57, 1, 0, 0, 82, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(56, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(68, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(9, 0, 0, 0, 8, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 9, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(65, 1, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(64, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(76, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(112, 114, 111, 99, 101, 115, 115, 73),
+        ::capnp::word(100, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(118, 101, 114, 115, 105, 111, 110, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(116, 97, 103, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(99, 111, 109, 109, 105, 116, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(98, 117, 105, 108, 100, 68, 97, 116),
+        ::capnp::word(101, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(116, 97, 114, 103, 101, 116, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(114, 117, 115, 116, 86, 101, 114, 115),
+        ::capnp::word(105, 111, 110, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(99, 97, 114, 103, 111, 86, 101, 114),
+        ::capnp::word(115, 105, 111, 110, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(99, 97, 114, 103, 111, 84, 114, 101),
+        ::capnp::word(101, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <u32 as ::capnp::introspect::Introspect>::introspect(),
+          1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          2 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          3 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          4 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          5 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          6 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          7 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          8 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          9 => <::capnp::data::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5,6,7,8,9];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[4,8,7,3,9,0,6,2,5,1];
+      pub const TYPE_ID: u64 = 0xf34b_e5cb_ac1f_eed1;
+    }
+  }
+
+  pub mod create_container_request {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_id(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_id(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_bundle_path(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_bundle_path(&self) -> bool {
+        !self.reader.get_pointer_field(1).is_null()
+      }
+      #[inline]
+      pub fn get_terminal(self) -> bool {
+        self.reader.get_bool_field(0)
+      }
+      #[inline]
+      pub fn get_stdin(self) -> bool {
+        self.reader.get_bool_field(1)
+      }
+      #[inline]
+      pub fn get_exit_paths(self) -> ::capnp::Result<::capnp::text_list::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_exit_paths(&self) -> bool {
+        !self.reader.get_pointer_field(2).is_null()
+      }
+      #[inline]
+      pub fn get_oom_exit_paths(self) -> ::capnp::Result<::capnp::text_list::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(3), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_oom_exit_paths(&self) -> bool {
+        !self.reader.get_pointer_field(3).is_null()
+      }
+      #[inline]
+      pub fn get_log_drivers(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::log_driver::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(4), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_log_drivers(&self) -> bool {
+        !self.reader.get_pointer_field(4).is_null()
+      }
+      #[inline]
+      pub fn get_cleanup_cmd(self) -> ::capnp::Result<::capnp::text_list::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(5), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_cleanup_cmd(&self) -> bool {
+        !self.reader.get_pointer_field(5).is_null()
+      }
+      #[inline]
+      pub fn get_global_args(self) -> ::capnp::Result<::capnp::text_list::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(6), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_global_args(&self) -> bool {
+        !self.reader.get_pointer_field(6).is_null()
+      }
+      #[inline]
+      pub fn get_command_args(self) -> ::capnp::Result<::capnp::text_list::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(7), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_command_args(&self) -> bool {
+        !self.reader.get_pointer_field(7).is_null()
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(8), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.reader.get_pointer_field(8).is_null()
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(9), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.reader.get_pointer_field(9).is_null()
+      }
+      #[inline]
+      pub fn get_env_vars(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(10), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_env_vars(&self) -> bool {
+        !self.reader.get_pointer_field(10).is_null()
+      }
+      #[inline]
+      pub fn get_cgroup_manager(self) -> ::core::result::Result<crate::conmon_capnp::conmon::CgroupManager,::capnp::NotInSchema> {
+        ::core::convert::TryInto::try_into(self.reader.get_data_field::<u16>(1))
+      }
+      #[inline]
+      pub fn get_additional_fds(self) -> ::capnp::Result<::capnp::primitive_list::Reader<'a,u64>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(11), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_additional_fds(&self) -> bool {
+        !self.reader.get_pointer_field(11).is_null()
+      }
+      #[inline]
+      pub fn get_leak_fds(self) -> ::capnp::Result<::capnp::primitive_list::Reader<'a,u64>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(12), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_leak_fds(&self) -> bool {
+        !self.reader.get_pointer_field(12).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 13 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_id(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_id(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_id(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(0).init_text(size)
+      }
+      #[inline]
+      pub fn has_id(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_bundle_path(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_bundle_path(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_bundle_path(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(1).init_text(size)
+      }
+      #[inline]
+      pub fn has_bundle_path(&self) -> bool {
+        !self.builder.is_pointer_field_null(1)
+      }
+      #[inline]
+      pub fn get_terminal(self) -> bool {
+        self.builder.get_bool_field(0)
+      }
+      #[inline]
+      pub fn set_terminal(&mut self, value: bool)  {
+        self.builder.set_bool_field(0, value);
+      }
+      #[inline]
+      pub fn get_stdin(self) -> bool {
+        self.builder.get_bool_field(1)
+      }
+      #[inline]
+      pub fn set_stdin(&mut self, value: bool)  {
+        self.builder.set_bool_field(1, value);
+      }
+      #[inline]
+      pub fn get_exit_paths(self) -> ::capnp::Result<::capnp::text_list::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_exit_paths(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text_list::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false)
+      }
+      #[inline]
+      pub fn init_exit_paths(self, size: u32) -> ::capnp::text_list::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(2), size)
+      }
+      #[inline]
+      pub fn has_exit_paths(&self) -> bool {
+        !self.builder.is_pointer_field_null(2)
+      }
+      #[inline]
+      pub fn get_oom_exit_paths(self) -> ::capnp::Result<::capnp::text_list::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(3), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_oom_exit_paths(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text_list::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false)
+      }
+      #[inline]
+      pub fn init_oom_exit_paths(self, size: u32) -> ::capnp::text_list::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(3), size)
+      }
+      #[inline]
+      pub fn has_oom_exit_paths(&self) -> bool {
+        !self.builder.is_pointer_field_null(3)
+      }
+      #[inline]
+      pub fn get_log_drivers(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::log_driver::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(4), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_log_drivers(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::log_driver::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false)
+      }
+      #[inline]
+      pub fn init_log_drivers(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::log_driver::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(4), size)
+      }
+      #[inline]
+      pub fn has_log_drivers(&self) -> bool {
+        !self.builder.is_pointer_field_null(4)
+      }
+      #[inline]
+      pub fn get_cleanup_cmd(self) -> ::capnp::Result<::capnp::text_list::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(5), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_cleanup_cmd(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text_list::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(5), value, false)
+      }
+      #[inline]
+      pub fn init_cleanup_cmd(self, size: u32) -> ::capnp::text_list::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(5), size)
+      }
+      #[inline]
+      pub fn has_cleanup_cmd(&self) -> bool {
+        !self.builder.is_pointer_field_null(5)
+      }
+      #[inline]
+      pub fn get_global_args(self) -> ::capnp::Result<::capnp::text_list::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(6), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_global_args(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text_list::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(6), value, false)
+      }
+      #[inline]
+      pub fn init_global_args(self, size: u32) -> ::capnp::text_list::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(6), size)
+      }
+      #[inline]
+      pub fn has_global_args(&self) -> bool {
+        !self.builder.is_pointer_field_null(6)
+      }
+      #[inline]
+      pub fn get_command_args(self) -> ::capnp::Result<::capnp::text_list::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(7), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_command_args(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text_list::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(7), value, false)
+      }
+      #[inline]
+      pub fn init_command_args(self, size: u32) -> ::capnp::text_list::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(7), size)
+      }
+      #[inline]
+      pub fn has_command_args(&self) -> bool {
+        !self.builder.is_pointer_field_null(7)
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(8), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata_old(&mut self, value: ::capnp::data::Reader<'_>)  {
+        self.builder.reborrow().get_pointer_field(8).set_data(value);
+      }
+      #[inline]
+      pub fn init_metadata_old(self, size: u32) -> ::capnp::data::Builder<'a> {
+        self.builder.get_pointer_field(8).init_data(size)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.builder.is_pointer_field_null(8)
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(9), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::text_text_map_entry::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(9), value, false)
+      }
+      #[inline]
+      pub fn init_metadata(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(9), size)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.builder.is_pointer_field_null(9)
+      }
+      #[inline]
+      pub fn get_env_vars(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(10), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_env_vars(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::text_text_map_entry::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(10), value, false)
+      }
+      #[inline]
+      pub fn init_env_vars(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(10), size)
+      }
+      #[inline]
+      pub fn has_env_vars(&self) -> bool {
+        !self.builder.is_pointer_field_null(10)
+      }
+      #[inline]
+      pub fn get_cgroup_manager(self) -> ::core::result::Result<crate::conmon_capnp::conmon::CgroupManager,::capnp::NotInSchema> {
+        ::core::convert::TryInto::try_into(self.builder.get_data_field::<u16>(1))
+      }
+      #[inline]
+      pub fn set_cgroup_manager(&mut self, value: crate::conmon_capnp::conmon::CgroupManager)  {
+        self.builder.set_data_field::<u16>(1, value as u16);
+      }
+      #[inline]
+      pub fn get_additional_fds(self) -> ::capnp::Result<::capnp::primitive_list::Builder<'a,u64>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(11), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_additional_fds(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::primitive_list::Owned<u64>>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(11), value, false)
+      }
+      #[inline]
+      pub fn init_additional_fds(self, size: u32) -> ::capnp::primitive_list::Builder<'a,u64> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(11), size)
+      }
+      #[inline]
+      pub fn has_additional_fds(&self) -> bool {
+        !self.builder.is_pointer_field_null(11)
+      }
+      #[inline]
+      pub fn get_leak_fds(self) -> ::capnp::Result<::capnp::primitive_list::Builder<'a,u64>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(12), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_leak_fds(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::primitive_list::Owned<u64>>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(12), value, false)
+      }
+      #[inline]
+      pub fn init_leak_fds(self, size: u32) -> ::capnp::primitive_list::Builder<'a,u64> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(12), size)
+      }
+      #[inline]
+      pub fn has_leak_fds(&self) -> bool {
+        !self.builder.is_pointer_field_null(12)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 313] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(202, 182, 169, 58, 250, 227, 119, 186),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(13, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 138, 1, 0, 0),
+        ::capnp::word(45, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 135, 3, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 67, 114, 101, 97, 116, 101),
+        ::capnp::word(67, 111, 110, 116, 97, 105, 110, 101),
+        ::capnp::word(114, 82, 101, 113, 117, 101, 115, 116),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(64, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(177, 1, 0, 0, 26, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(172, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(184, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(181, 1, 0, 0, 90, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(180, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(192, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(2, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(189, 1, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(188, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(200, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(3, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(197, 1, 0, 0, 50, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(192, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(204, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(4, 0, 0, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(201, 1, 0, 0, 82, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(200, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(228, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(5, 0, 0, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(225, 1, 0, 0, 106, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(224, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(252, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(6, 0, 0, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(249, 1, 0, 0, 90, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(248, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 2, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(7, 0, 0, 0, 5, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(17, 2, 0, 0, 90, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 2, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(44, 2, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(8, 0, 0, 0, 6, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 8, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 2, 0, 0, 90, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(40, 2, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(68, 2, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(9, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 9, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(65, 2, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(64, 2, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(92, 2, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(10, 0, 0, 0, 8, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 10, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(89, 2, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(88, 2, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(100, 2, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(11, 0, 0, 0, 9, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 11, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(97, 2, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(96, 2, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(124, 2, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 10, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 12, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(121, 2, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(116, 2, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(144, 2, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 13, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(141, 2, 0, 0, 114, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(140, 2, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(152, 2, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(14, 0, 0, 0, 11, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 14, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(149, 2, 0, 0, 114, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(148, 2, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(176, 2, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(15, 0, 0, 0, 12, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 15, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(173, 2, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(168, 2, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(196, 2, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(105, 100, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(98, 117, 110, 100, 108, 101, 80, 97),
+        ::capnp::word(116, 104, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(116, 101, 114, 109, 105, 110, 97, 108),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(115, 116, 100, 105, 110, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(101, 120, 105, 116, 80, 97, 116, 104),
+        ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(111, 111, 109, 69, 120, 105, 116, 80),
+        ::capnp::word(97, 116, 104, 115, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(108, 111, 103, 68, 114, 105, 118, 101),
+        ::capnp::word(114, 115, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(52, 161, 179, 182, 142, 238, 120, 174),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(99, 108, 101, 97, 110, 117, 112, 67),
+        ::capnp::word(109, 100, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(103, 108, 111, 98, 97, 108, 65, 114),
+        ::capnp::word(103, 115, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(99, 111, 109, 109, 97, 110, 100, 65),
+        ::capnp::word(114, 103, 115, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(79, 108, 100, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(101, 110, 118, 86, 97, 114, 115, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(99, 103, 114, 111, 117, 112, 77, 97),
+        ::capnp::word(110, 97, 103, 101, 114, 0, 0, 0),
+        ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(138, 167, 101, 39, 193, 186, 75, 170),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(97, 100, 100, 105, 116, 105, 111, 110),
+        ::capnp::word(97, 108, 70, 100, 115, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(108, 101, 97, 107, 70, 100, 115, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          2 => <bool as ::capnp::introspect::Introspect>::introspect(),
+          3 => <bool as ::capnp::introspect::Introspect>::introspect(),
+          4 => <::capnp::text_list::Owned as ::capnp::introspect::Introspect>::introspect(),
+          5 => <::capnp::text_list::Owned as ::capnp::introspect::Introspect>::introspect(),
+          6 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::log_driver::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          7 => <::capnp::text_list::Owned as ::capnp::introspect::Introspect>::introspect(),
+          8 => <::capnp::text_list::Owned as ::capnp::introspect::Introspect>::introspect(),
+          9 => <::capnp::text_list::Owned as ::capnp::introspect::Introspect>::introspect(),
+          10 => <::capnp::data::Owned as ::capnp::introspect::Introspect>::introspect(),
+          11 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::text_text_map_entry::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          12 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::text_text_map_entry::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          13 => <crate::conmon_capnp::conmon::CgroupManager as ::capnp::introspect::Introspect>::introspect(),
+          14 => <::capnp::primitive_list::Owned<u64> as ::capnp::introspect::Introspect>::introspect(),
+          15 => <::capnp::primitive_list::Owned<u64> as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[14,1,13,7,9,12,4,8,0,15,6,11,10,5,3,2];
+      pub const TYPE_ID: u64 = 0xba77_e3fa_3aa9_b6ca;
+    }
+  }
+
+  pub mod log_driver {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_type(self) -> ::core::result::Result<crate::conmon_capnp::conmon::log_driver::Type,::capnp::NotInSchema> {
+        ::core::convert::TryInto::try_into(self.reader.get_data_field::<u16>(0))
+      }
+      #[inline]
+      pub fn get_path(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_path(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_max_size(self) -> u64 {
+        self.reader.get_data_field::<u64>(1)
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 2, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_type(self) -> ::core::result::Result<crate::conmon_capnp::conmon::log_driver::Type,::capnp::NotInSchema> {
+        ::core::convert::TryInto::try_into(self.builder.get_data_field::<u16>(0))
+      }
+      #[inline]
+      pub fn set_type(&mut self, value: crate::conmon_capnp::conmon::log_driver::Type)  {
+        self.builder.set_data_field::<u16>(0, value as u16);
+      }
+      #[inline]
+      pub fn get_path(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_path(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_path(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(0).init_text(size)
+      }
+      #[inline]
+      pub fn has_path(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_max_size(self) -> u64 {
+        self.builder.get_data_field::<u64>(1)
+      }
+      #[inline]
+      pub fn set_max_size(&mut self, value: u64)  {
+        self.builder.set_data_field::<u64>(1, value);
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 67] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(52, 161, 179, 182, 142, 238, 120, 174),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 2, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 34, 1, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 23, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(45, 0, 0, 0, 175, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 76, 111, 103, 68, 114, 105),
+        ::capnp::word(118, 101, 114, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(193, 91, 51, 80, 215, 227, 38, 240),
+        ::capnp::word(1, 0, 0, 0, 42, 0, 0, 0),
+        ::capnp::word(84, 121, 112, 101, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(69, 0, 0, 0, 42, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(64, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(76, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(73, 0, 0, 0, 42, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(68, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(80, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(2, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(77, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(72, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(84, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0),
+        ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(193, 91, 51, 80, 215, 227, 38, 240),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 97, 116, 104, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 97, 120, 83, 105, 122, 101, 0),
+        ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::log_driver::Type as ::capnp::introspect::Introspect>::introspect(),
+          1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          2 => <u64 as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1,2];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[2,1,0];
+      pub const TYPE_ID: u64 = 0xae78_ee8e_b6b3_a134;
+    }
+
+    #[repr(u16)]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq)]
+    pub enum Type {
+      ContainerRuntimeInterface = 0,
+      Json = 1,
+      Journald = 2,
+    }
+
+    impl ::capnp::introspect::Introspect for Type {
+      fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Enum(::capnp::introspect::RawEnumSchema { encoded_node: &type_::ENCODED_NODE, annotation_types: type_::get_annotation_types }).into() }
+    }
+    impl <'a> ::core::convert::From<Type> for ::capnp::dynamic_value::Reader<'a> {
+      fn from(e: Type) -> Self { ::capnp::dynamic_value::Enum::new(e.into(), ::capnp::introspect::RawEnumSchema { encoded_node: &type_::ENCODED_NODE, annotation_types: type_::get_annotation_types }.into()).into() }
+    }
+    impl ::core::convert::TryFrom<u16> for Type {
+      type Error = ::capnp::NotInSchema;
+      fn try_from(value: u16) -> ::core::result::Result<Self, <Type as ::core::convert::TryFrom<u16>>::Error> {
+        match value {
+          0 => ::core::result::Result::Ok(Self::ContainerRuntimeInterface),
+          1 => ::core::result::Result::Ok(Self::Json),
+          2 => ::core::result::Result::Ok(Self::Journald),
+          n => ::core::result::Result::Err(::capnp::NotInSchema(n)),
+        }
+      }
+    }
+    impl From<Type> for u16 {
+      #[inline]
+      fn from(x: Type) -> u16 { x as u16 }
+    }
+    impl ::capnp::traits::HasTypeId for Type {
+      const TYPE_ID: u64 = 0xf026_e3d7_5033_5bc1u64;
+    }
+    mod type_ {
+    pub static ENCODED_NODE: [::capnp::Word; 36] = [
+      ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+      ::capnp::word(193, 91, 51, 80, 215, 227, 38, 240),
+      ::capnp::word(36, 0, 0, 0, 2, 0, 0, 0),
+      ::capnp::word(52, 161, 179, 182, 142, 238, 120, 174),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(21, 0, 0, 0, 74, 1, 0, 0),
+      ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(37, 0, 0, 0, 79, 0, 0, 0),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+      ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+      ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+      ::capnp::word(110, 46, 76, 111, 103, 68, 114, 105),
+      ::capnp::word(118, 101, 114, 46, 84, 121, 112, 101),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+      ::capnp::word(12, 0, 0, 0, 1, 0, 2, 0),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(29, 0, 0, 0, 210, 0, 0, 0),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(33, 0, 0, 0, 42, 0, 0, 0),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(2, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(25, 0, 0, 0, 74, 0, 0, 0),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(99, 111, 110, 116, 97, 105, 110, 101),
+      ::capnp::word(114, 82, 117, 110, 116, 105, 109, 101),
+      ::capnp::word(73, 110, 116, 101, 114, 102, 97, 99),
+      ::capnp::word(101, 0, 0, 0, 0, 0, 0, 0),
+      ::capnp::word(106, 115, 111, 110, 0, 0, 0, 0),
+      ::capnp::word(106, 111, 117, 114, 110, 97, 108, 100),
+      ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ];
+    pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+      panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+    }
+    }
+  }
+
+  #[repr(u16)]
+  #[derive(Clone, Copy, Debug, PartialEq, Eq)]
+  pub enum CgroupManager {
+    Systemd = 0,
+    Cgroupfs = 1,
+  }
+
+  impl ::capnp::introspect::Introspect for CgroupManager {
+    fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Enum(::capnp::introspect::RawEnumSchema { encoded_node: &cgroup_manager::ENCODED_NODE, annotation_types: cgroup_manager::get_annotation_types }).into() }
+  }
+  impl <'a> ::core::convert::From<CgroupManager> for ::capnp::dynamic_value::Reader<'a> {
+    fn from(e: CgroupManager) -> Self { ::capnp::dynamic_value::Enum::new(e.into(), ::capnp::introspect::RawEnumSchema { encoded_node: &cgroup_manager::ENCODED_NODE, annotation_types: cgroup_manager::get_annotation_types }.into()).into() }
+  }
+  impl ::core::convert::TryFrom<u16> for CgroupManager {
+    type Error = ::capnp::NotInSchema;
+    fn try_from(value: u16) -> ::core::result::Result<Self, <CgroupManager as ::core::convert::TryFrom<u16>>::Error> {
+      match value {
+        0 => ::core::result::Result::Ok(Self::Systemd),
+        1 => ::core::result::Result::Ok(Self::Cgroupfs),
+        n => ::core::result::Result::Err(::capnp::NotInSchema(n)),
+      }
+    }
+  }
+  impl From<CgroupManager> for u16 {
+    #[inline]
+    fn from(x: CgroupManager) -> u16 { x as u16 }
+  }
+  impl ::capnp::traits::HasTypeId for CgroupManager {
+    const TYPE_ID: u64 = 0xaa4b_bac1_2765_a78au64;
+  }
+  mod cgroup_manager {
+  pub static ENCODED_NODE: [::capnp::Word; 28] = [
+    ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+    ::capnp::word(138, 167, 101, 39, 193, 186, 75, 170),
+    ::capnp::word(26, 0, 0, 0, 2, 0, 0, 0),
+    ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(21, 0, 0, 0, 66, 1, 0, 0),
+    ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(33, 0, 0, 0, 55, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+    ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+    ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+    ::capnp::word(110, 46, 67, 103, 114, 111, 117, 112),
+    ::capnp::word(77, 97, 110, 97, 103, 101, 114, 0),
+    ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+    ::capnp::word(8, 0, 0, 0, 1, 0, 2, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(17, 0, 0, 0, 66, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(9, 0, 0, 0, 74, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(115, 121, 115, 116, 101, 109, 100, 0),
+    ::capnp::word(99, 103, 114, 111, 117, 112, 102, 115),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+  ];
+  pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+    panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+  }
+  }
+
+  pub mod create_container_response {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_container_pid(self) -> u32 {
+        self.reader.get_data_field::<u32>(0)
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 0 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_container_pid(self) -> u32 {
+        self.builder.get_data_field::<u32>(0)
+      }
+      #[inline]
+      pub fn set_container_pid(&mut self, value: u32)  {
+        self.builder.set_data_field::<u32>(0, value);
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 37] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(154, 43, 119, 112, 94, 98, 58, 222),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(0, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 146, 1, 0, 0),
+        ::capnp::word(45, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 67, 114, 101, 97, 116, 101),
+        ::capnp::word(67, 111, 110, 116, 97, 105, 110, 101),
+        ::capnp::word(114, 82, 101, 115, 112, 111, 110, 115),
+        ::capnp::word(101, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 106, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(99, 111, 110, 116, 97, 105, 110, 101),
+        ::capnp::word(114, 80, 105, 100, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <u32 as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xde3a_625e_7077_2b9a;
+    }
+  }
+
+  pub mod exec_sync_container_request {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_id(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_id(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_timeout_sec(self) -> u64 {
+        self.reader.get_data_field::<u64>(0)
+      }
+      #[inline]
+      pub fn get_command(self) -> ::capnp::Result<::capnp::text_list::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_command(&self) -> bool {
+        !self.reader.get_pointer_field(1).is_null()
+      }
+      #[inline]
+      pub fn get_terminal(self) -> bool {
+        self.reader.get_bool_field(64)
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.reader.get_pointer_field(2).is_null()
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(3), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.reader.get_pointer_field(3).is_null()
+      }
+      #[inline]
+      pub fn get_env_vars(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(4), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_env_vars(&self) -> bool {
+        !self.reader.get_pointer_field(4).is_null()
+      }
+      #[inline]
+      pub fn get_cgroup_manager(self) -> ::core::result::Result<crate::conmon_capnp::conmon::CgroupManager,::capnp::NotInSchema> {
+        ::core::convert::TryInto::try_into(self.reader.get_data_field::<u16>(5))
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 2, pointers: 5 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_id(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_id(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_id(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(0).init_text(size)
+      }
+      #[inline]
+      pub fn has_id(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_timeout_sec(self) -> u64 {
+        self.builder.get_data_field::<u64>(0)
+      }
+      #[inline]
+      pub fn set_timeout_sec(&mut self, value: u64)  {
+        self.builder.set_data_field::<u64>(0, value);
+      }
+      #[inline]
+      pub fn get_command(self) -> ::capnp::Result<::capnp::text_list::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_command(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text_list::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false)
+      }
+      #[inline]
+      pub fn init_command(self, size: u32) -> ::capnp::text_list::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(1), size)
+      }
+      #[inline]
+      pub fn has_command(&self) -> bool {
+        !self.builder.is_pointer_field_null(1)
+      }
+      #[inline]
+      pub fn get_terminal(self) -> bool {
+        self.builder.get_bool_field(64)
+      }
+      #[inline]
+      pub fn set_terminal(&mut self, value: bool)  {
+        self.builder.set_bool_field(64, value);
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata_old(&mut self, value: ::capnp::data::Reader<'_>)  {
+        self.builder.reborrow().get_pointer_field(2).set_data(value);
+      }
+      #[inline]
+      pub fn init_metadata_old(self, size: u32) -> ::capnp::data::Builder<'a> {
+        self.builder.get_pointer_field(2).init_data(size)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.builder.is_pointer_field_null(2)
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(3), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::text_text_map_entry::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false)
+      }
+      #[inline]
+      pub fn init_metadata(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(3), size)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.builder.is_pointer_field_null(3)
+      }
+      #[inline]
+      pub fn get_env_vars(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(4), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_env_vars(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::text_text_map_entry::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false)
+      }
+      #[inline]
+      pub fn init_env_vars(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(4), size)
+      }
+      #[inline]
+      pub fn has_env_vars(&self) -> bool {
+        !self.builder.is_pointer_field_null(4)
+      }
+      #[inline]
+      pub fn get_cgroup_manager(self) -> ::core::result::Result<crate::conmon_capnp::conmon::CgroupManager,::capnp::NotInSchema> {
+        ::core::convert::TryInto::try_into(self.builder.get_data_field::<u16>(5))
+      }
+      #[inline]
+      pub fn set_cgroup_manager(&mut self, value: crate::conmon_capnp::conmon::CgroupManager)  {
+        self.builder.set_data_field::<u16>(5, value as u16);
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 158] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(166, 113, 163, 144, 248, 34, 17, 244),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 2, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(5, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 154, 1, 0, 0),
+        ::capnp::word(45, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 199, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 69, 120, 101, 99, 83, 121),
+        ::capnp::word(110, 99, 67, 111, 110, 116, 97, 105),
+        ::capnp::word(110, 101, 114, 82, 101, 113, 117, 101),
+        ::capnp::word(115, 116, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(32, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(209, 0, 0, 0, 26, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(204, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(216, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(213, 0, 0, 0, 90, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(212, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(224, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(2, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(221, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(216, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(244, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(3, 0, 0, 0, 64, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(241, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(240, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(252, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(4, 0, 0, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(249, 0, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(248, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(4, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(5, 0, 0, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 1, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(28, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(6, 0, 0, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(25, 1, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(20, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(48, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(7, 0, 0, 0, 5, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(45, 1, 0, 0, 114, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(44, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(56, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(105, 100, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(116, 105, 109, 101, 111, 117, 116, 83),
+        ::capnp::word(101, 99, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(99, 111, 109, 109, 97, 110, 100, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(116, 101, 114, 109, 105, 110, 97, 108),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(79, 108, 100, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(101, 110, 118, 86, 97, 114, 115, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(99, 103, 114, 111, 117, 112, 77, 97),
+        ::capnp::word(110, 97, 103, 101, 114, 0, 0, 0),
+        ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(138, 167, 101, 39, 193, 186, 75, 170),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          1 => <u64 as ::capnp::introspect::Introspect>::introspect(),
+          2 => <::capnp::text_list::Owned as ::capnp::introspect::Introspect>::introspect(),
+          3 => <bool as ::capnp::introspect::Introspect>::introspect(),
+          4 => <::capnp::data::Owned as ::capnp::introspect::Introspect>::introspect(),
+          5 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::text_text_map_entry::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          6 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::text_text_map_entry::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          7 => <crate::conmon_capnp::conmon::CgroupManager as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5,6,7];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[7,2,6,0,5,4,3,1];
+      pub const TYPE_ID: u64 = 0xf411_22f8_90a3_71a6;
+    }
+  }
+
+  pub mod exec_sync_container_response {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_exit_code(self) -> i32 {
+        self.reader.get_data_field::<i32>(0)
+      }
+      #[inline]
+      pub fn get_stdout(self) -> ::capnp::Result<::capnp::data::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_stdout(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_stderr(self) -> ::capnp::Result<::capnp::data::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_stderr(&self) -> bool {
+        !self.reader.get_pointer_field(1).is_null()
+      }
+      #[inline]
+      pub fn get_timed_out(self) -> bool {
+        self.reader.get_bool_field(32)
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 2 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_exit_code(self) -> i32 {
+        self.builder.get_data_field::<i32>(0)
+      }
+      #[inline]
+      pub fn set_exit_code(&mut self, value: i32)  {
+        self.builder.set_data_field::<i32>(0, value);
+      }
+      #[inline]
+      pub fn get_stdout(self) -> ::capnp::Result<::capnp::data::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_stdout(&mut self, value: ::capnp::data::Reader<'_>)  {
+        self.builder.reborrow().get_pointer_field(0).set_data(value);
+      }
+      #[inline]
+      pub fn init_stdout(self, size: u32) -> ::capnp::data::Builder<'a> {
+        self.builder.get_pointer_field(0).init_data(size)
+      }
+      #[inline]
+      pub fn has_stdout(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_stderr(self) -> ::capnp::Result<::capnp::data::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_stderr(&mut self, value: ::capnp::data::Reader<'_>)  {
+        self.builder.reborrow().get_pointer_field(1).set_data(value);
+      }
+      #[inline]
+      pub fn init_stderr(self, size: u32) -> ::capnp::data::Builder<'a> {
+        self.builder.get_pointer_field(1).init_data(size)
+      }
+      #[inline]
+      pub fn has_stderr(&self) -> bool {
+        !self.builder.is_pointer_field_null(1)
+      }
+      #[inline]
+      pub fn get_timed_out(self) -> bool {
+        self.builder.get_bool_field(32)
+      }
+      #[inline]
+      pub fn set_timed_out(&mut self, value: bool)  {
+        self.builder.set_bool_field(32, value);
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 83] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(252, 133, 60, 128, 29, 29, 214, 217),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(2, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 162, 1, 0, 0),
+        ::capnp::word(45, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 231, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 69, 120, 101, 99, 83, 121),
+        ::capnp::word(110, 99, 67, 111, 110, 116, 97, 105),
+        ::capnp::word(110, 101, 114, 82, 101, 115, 112, 111),
+        ::capnp::word(110, 115, 101, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(97, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(96, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(108, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(105, 0, 0, 0, 58, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(100, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(112, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(2, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 0, 0, 0, 58, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(104, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(116, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(3, 0, 0, 0, 32, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(113, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(124, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(101, 120, 105, 116, 67, 111, 100, 101),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(115, 116, 100, 111, 117, 116, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(115, 116, 100, 101, 114, 114, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(116, 105, 109, 101, 100, 79, 117, 116),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <i32 as ::capnp::introspect::Introspect>::introspect(),
+          1 => <::capnp::data::Owned as ::capnp::introspect::Introspect>::introspect(),
+          2 => <::capnp::data::Owned as ::capnp::introspect::Introspect>::introspect(),
+          3 => <bool as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0,2,1,3];
+      pub const TYPE_ID: u64 = 0xd9d6_1d1d_803c_85fc;
+    }
+  }
+
+  pub mod attach_request {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_id(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_id(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_socket_path(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_socket_path(&self) -> bool {
+        !self.reader.get_pointer_field(1).is_null()
+      }
+      #[inline]
+      pub fn get_exec_session_id(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_exec_session_id(&self) -> bool {
+        !self.reader.get_pointer_field(2).is_null()
+      }
+      #[inline]
+      pub fn get_stop_after_stdin_eof(self) -> bool {
+        self.reader.get_bool_field(0)
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(3), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.reader.get_pointer_field(3).is_null()
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(4), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.reader.get_pointer_field(4).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 5 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_id(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_id(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_id(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(0).init_text(size)
+      }
+      #[inline]
+      pub fn has_id(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_socket_path(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_socket_path(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_socket_path(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(1).init_text(size)
+      }
+      #[inline]
+      pub fn has_socket_path(&self) -> bool {
+        !self.builder.is_pointer_field_null(1)
+      }
+      #[inline]
+      pub fn get_exec_session_id(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_exec_session_id(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_exec_session_id(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(2).init_text(size)
+      }
+      #[inline]
+      pub fn has_exec_session_id(&self) -> bool {
+        !self.builder.is_pointer_field_null(2)
+      }
+      #[inline]
+      pub fn get_stop_after_stdin_eof(self) -> bool {
+        self.builder.get_bool_field(0)
+      }
+      #[inline]
+      pub fn set_stop_after_stdin_eof(&mut self, value: bool)  {
+        self.builder.set_bool_field(0, value);
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(3), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata_old(&mut self, value: ::capnp::data::Reader<'_>)  {
+        self.builder.reborrow().get_pointer_field(3).set_data(value);
+      }
+      #[inline]
+      pub fn init_metadata_old(self, size: u32) -> ::capnp::data::Builder<'a> {
+        self.builder.get_pointer_field(3).init_data(size)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.builder.is_pointer_field_null(3)
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(4), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::text_text_map_entry::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false)
+      }
+      #[inline]
+      pub fn init_metadata(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(4), size)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.builder.is_pointer_field_null(4)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 119] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(252, 58, 252, 190, 160, 60, 112, 223),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(5, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 66, 1, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(33, 0, 0, 0, 87, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 65, 116, 116, 97, 99, 104),
+        ::capnp::word(82, 101, 113, 117, 101, 115, 116, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(24, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(153, 0, 0, 0, 26, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(148, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(160, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(157, 0, 0, 0, 90, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(156, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(168, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(165, 0, 0, 0, 114, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(164, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(176, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(3, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(173, 0, 0, 0, 146, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(176, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(188, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(185, 0, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(184, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(196, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(5, 0, 0, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(193, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(192, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(220, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(105, 100, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(115, 111, 99, 107, 101, 116, 80, 97),
+        ::capnp::word(116, 104, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(101, 120, 101, 99, 83, 101, 115, 115),
+        ::capnp::word(105, 111, 110, 73, 100, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(115, 116, 111, 112, 65, 102, 116, 101),
+        ::capnp::word(114, 83, 116, 100, 105, 110, 69, 111),
+        ::capnp::word(102, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(79, 108, 100, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          2 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          3 => <bool as ::capnp::introspect::Introspect>::introspect(),
+          4 => <::capnp::data::Owned as ::capnp::introspect::Introspect>::introspect(),
+          5 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::text_text_map_entry::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[2,0,5,4,1,3];
+      pub const TYPE_ID: u64 = 0xdf70_3ca0_befc_3afc;
+    }
+  }
+
+  pub mod attach_response {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 0 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 19] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(119, 96, 200, 175, 122, 81, 229, 172),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(0, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 74, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 65, 116, 116, 97, 99, 104),
+        ::capnp::word(82, 101, 115, 112, 111, 110, 115, 101),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        panic!("invalid field index {}", index)
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[];
+      pub const TYPE_ID: u64 = 0xace5_517a_afc8_6077;
+    }
+  }
+
+  pub mod reopen_log_request {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_id(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_id(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.reader.get_pointer_field(1).is_null()
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.reader.get_pointer_field(2).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 3 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_id(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_id(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_id(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(0).init_text(size)
+      }
+      #[inline]
+      pub fn has_id(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata_old(&mut self, value: ::capnp::data::Reader<'_>)  {
+        self.builder.reborrow().get_pointer_field(1).set_data(value);
+      }
+      #[inline]
+      pub fn init_metadata_old(self, size: u32) -> ::capnp::data::Builder<'a> {
+        self.builder.get_pointer_field(1).init_data(size)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.builder.is_pointer_field_null(1)
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::text_text_map_entry::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false)
+      }
+      #[inline]
+      pub fn init_metadata(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(2), size)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.builder.is_pointer_field_null(2)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 71] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(26, 65, 209, 52, 15, 110, 71, 208),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(3, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 90, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 175, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 82, 101, 111, 112, 101, 110),
+        ::capnp::word(76, 111, 103, 82, 101, 113, 117, 101),
+        ::capnp::word(115, 116, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(69, 0, 0, 0, 26, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(64, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(76, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(73, 0, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(72, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(84, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(81, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(80, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(108, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(105, 100, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(79, 108, 100, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          1 => <::capnp::data::Owned as ::capnp::introspect::Introspect>::introspect(),
+          2 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::text_text_map_entry::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1,2];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0,2,1];
+      pub const TYPE_ID: u64 = 0xd047_6e0f_34d1_411a;
+    }
+  }
+
+  pub mod reopen_log_response {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 0 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 19] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(153, 91, 232, 107, 69, 73, 15, 162),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(0, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 98, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 82, 101, 111, 112, 101, 110),
+        ::capnp::word(76, 111, 103, 82, 101, 115, 112, 111),
+        ::capnp::word(110, 115, 101, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        panic!("invalid field index {}", index)
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[];
+      pub const TYPE_ID: u64 = 0xa20f_4945_6be8_5b99;
+    }
+  }
+
+  pub mod set_window_size_request {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_id(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_id(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_width(self) -> u16 {
+        self.reader.get_data_field::<u16>(0)
+      }
+      #[inline]
+      pub fn get_height(self) -> u16 {
+        self.reader.get_data_field::<u16>(1)
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.reader.get_pointer_field(1).is_null()
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.reader.get_pointer_field(2).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 3 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_id(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_id(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_id(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(0).init_text(size)
+      }
+      #[inline]
+      pub fn has_id(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_width(self) -> u16 {
+        self.builder.get_data_field::<u16>(0)
+      }
+      #[inline]
+      pub fn set_width(&mut self, value: u16)  {
+        self.builder.set_data_field::<u16>(0, value);
+      }
+      #[inline]
+      pub fn get_height(self) -> u16 {
+        self.builder.get_data_field::<u16>(1)
+      }
+      #[inline]
+      pub fn set_height(&mut self, value: u16)  {
+        self.builder.set_data_field::<u16>(1, value);
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata_old(&mut self, value: ::capnp::data::Reader<'_>)  {
+        self.builder.reborrow().get_pointer_field(1).set_data(value);
+      }
+      #[inline]
+      pub fn init_metadata_old(self, size: u32) -> ::capnp::data::Builder<'a> {
+        self.builder.get_pointer_field(1).init_data(size)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.builder.is_pointer_field_null(1)
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::text_text_map_entry::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false)
+      }
+      #[inline]
+      pub fn init_metadata(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(2), size)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.builder.is_pointer_field_null(2)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 101] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(123, 209, 234, 168, 142, 139, 65, 181),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(3, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 122, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 31, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 83, 101, 116, 87, 105, 110),
+        ::capnp::word(100, 111, 119, 83, 105, 122, 101, 82),
+        ::capnp::word(101, 113, 117, 101, 115, 116, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(20, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(125, 0, 0, 0, 26, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(120, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(132, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(129, 0, 0, 0, 50, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(124, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(136, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(2, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(133, 0, 0, 0, 58, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(128, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(140, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(3, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(137, 0, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(136, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(148, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(4, 0, 0, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(145, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(144, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(172, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(105, 100, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(119, 105, 100, 116, 104, 0, 0, 0),
+        ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(104, 101, 105, 103, 104, 116, 0, 0),
+        ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(79, 108, 100, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          1 => <u16 as ::capnp::introspect::Introspect>::introspect(),
+          2 => <u16 as ::capnp::introspect::Introspect>::introspect(),
+          3 => <::capnp::data::Owned as ::capnp::introspect::Introspect>::introspect(),
+          4 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::text_text_map_entry::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[2,0,4,3,1];
+      pub const TYPE_ID: u64 = 0xb541_8b8e_a8ea_d17b;
+    }
+  }
+
+  pub mod set_window_size_response {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 0 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 19] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(248, 161, 171, 51, 128, 205, 179, 249),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(0, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 130, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 83, 101, 116, 87, 105, 110),
+        ::capnp::word(100, 111, 119, 83, 105, 122, 101, 82),
+        ::capnp::word(101, 115, 112, 111, 110, 115, 101, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        panic!("invalid field index {}", index)
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[];
+      pub const TYPE_ID: u64 = 0xf9b3_cd80_33ab_a1f8;
+    }
+  }
+
+  pub mod create_namespaces_request {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_namespaces(self) -> ::capnp::Result<::capnp::enum_list::Reader<'a,crate::conmon_capnp::conmon::Namespace>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_namespaces(&self) -> bool {
+        !self.reader.get_pointer_field(1).is_null()
+      }
+      #[inline]
+      pub fn get_uid_mappings(self) -> ::capnp::Result<::capnp::text_list::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_uid_mappings(&self) -> bool {
+        !self.reader.get_pointer_field(2).is_null()
+      }
+      #[inline]
+      pub fn get_gid_mappings(self) -> ::capnp::Result<::capnp::text_list::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(3), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_gid_mappings(&self) -> bool {
+        !self.reader.get_pointer_field(3).is_null()
+      }
+      #[inline]
+      pub fn get_base_path(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(4), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_base_path(&self) -> bool {
+        !self.reader.get_pointer_field(4).is_null()
+      }
+      #[inline]
+      pub fn get_pod_id(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(5), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_pod_id(&self) -> bool {
+        !self.reader.get_pointer_field(5).is_null()
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(6), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.reader.get_pointer_field(6).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 7 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_metadata_old(self) -> ::capnp::Result<::capnp::data::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata_old(&mut self, value: ::capnp::data::Reader<'_>)  {
+        self.builder.reborrow().get_pointer_field(0).set_data(value);
+      }
+      #[inline]
+      pub fn init_metadata_old(self, size: u32) -> ::capnp::data::Builder<'a> {
+        self.builder.get_pointer_field(0).init_data(size)
+      }
+      #[inline]
+      pub fn has_metadata_old(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_namespaces(self) -> ::capnp::Result<::capnp::enum_list::Builder<'a,crate::conmon_capnp::conmon::Namespace>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_namespaces(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::enum_list::Owned<crate::conmon_capnp::conmon::Namespace>>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false)
+      }
+      #[inline]
+      pub fn init_namespaces(self, size: u32) -> ::capnp::enum_list::Builder<'a,crate::conmon_capnp::conmon::Namespace> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(1), size)
+      }
+      #[inline]
+      pub fn has_namespaces(&self) -> bool {
+        !self.builder.is_pointer_field_null(1)
+      }
+      #[inline]
+      pub fn get_uid_mappings(self) -> ::capnp::Result<::capnp::text_list::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_uid_mappings(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text_list::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false)
+      }
+      #[inline]
+      pub fn init_uid_mappings(self, size: u32) -> ::capnp::text_list::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(2), size)
+      }
+      #[inline]
+      pub fn has_uid_mappings(&self) -> bool {
+        !self.builder.is_pointer_field_null(2)
+      }
+      #[inline]
+      pub fn get_gid_mappings(self) -> ::capnp::Result<::capnp::text_list::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(3), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_gid_mappings(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text_list::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false)
+      }
+      #[inline]
+      pub fn init_gid_mappings(self, size: u32) -> ::capnp::text_list::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(3), size)
+      }
+      #[inline]
+      pub fn has_gid_mappings(&self) -> bool {
+        !self.builder.is_pointer_field_null(3)
+      }
+      #[inline]
+      pub fn get_base_path(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(4), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_base_path(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_base_path(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(4).init_text(size)
+      }
+      #[inline]
+      pub fn has_base_path(&self) -> bool {
+        !self.builder.is_pointer_field_null(4)
+      }
+      #[inline]
+      pub fn get_pod_id(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(5), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_pod_id(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(5), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_pod_id(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(5).init_text(size)
+      }
+      #[inline]
+      pub fn has_pod_id(&self) -> bool {
+        !self.builder.is_pointer_field_null(5)
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(6), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::text_text_map_entry::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(6), value, false)
+      }
+      #[inline]
+      pub fn init_metadata(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(6), size)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.builder.is_pointer_field_null(6)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 148] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(126, 96, 15, 148, 147, 22, 91, 139),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(7, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 146, 1, 0, 0),
+        ::capnp::word(45, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 143, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 67, 114, 101, 97, 116, 101),
+        ::capnp::word(78, 97, 109, 101, 115, 112, 97, 99),
+        ::capnp::word(101, 115, 82, 101, 113, 117, 101, 115),
+        ::capnp::word(116, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(28, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(181, 0, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(180, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(192, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(189, 0, 0, 0, 90, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(188, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(216, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(213, 0, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(212, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(240, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(3, 0, 0, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(237, 0, 0, 0, 98, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(236, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(8, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(4, 0, 0, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(5, 1, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(5, 0, 0, 0, 5, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 1, 0, 0, 50, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(6, 0, 0, 0, 6, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(17, 1, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 1, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(44, 1, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(79, 108, 100, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(110, 97, 109, 101, 115, 112, 97, 99),
+        ::capnp::word(101, 115, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(163, 243, 168, 96, 181, 145, 20, 214),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(117, 105, 100, 77, 97, 112, 112, 105),
+        ::capnp::word(110, 103, 115, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(103, 105, 100, 77, 97, 112, 112, 105),
+        ::capnp::word(110, 103, 115, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(98, 97, 115, 101, 80, 97, 116, 104),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 111, 100, 73, 100, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <::capnp::data::Owned as ::capnp::introspect::Introspect>::introspect(),
+          1 => <::capnp::enum_list::Owned<crate::conmon_capnp::conmon::Namespace> as ::capnp::introspect::Introspect>::introspect(),
+          2 => <::capnp::text_list::Owned as ::capnp::introspect::Introspect>::introspect(),
+          3 => <::capnp::text_list::Owned as ::capnp::introspect::Introspect>::introspect(),
+          4 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          5 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          6 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::text_text_map_entry::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5,6];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[4,3,6,0,1,5,2];
+      pub const TYPE_ID: u64 = 0x8b5b_1693_940f_607e;
+    }
+  }
+
+  #[repr(u16)]
+  #[derive(Clone, Copy, Debug, PartialEq, Eq)]
+  pub enum Namespace {
+    Ipc = 0,
+    Net = 1,
+    Pid = 2,
+    User = 3,
+    Uts = 4,
+  }
+
+  impl ::capnp::introspect::Introspect for Namespace {
+    fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Enum(::capnp::introspect::RawEnumSchema { encoded_node: &namespace::ENCODED_NODE, annotation_types: namespace::get_annotation_types }).into() }
+  }
+  impl <'a> ::core::convert::From<Namespace> for ::capnp::dynamic_value::Reader<'a> {
+    fn from(e: Namespace) -> Self { ::capnp::dynamic_value::Enum::new(e.into(), ::capnp::introspect::RawEnumSchema { encoded_node: &namespace::ENCODED_NODE, annotation_types: namespace::get_annotation_types }.into()).into() }
+  }
+  impl ::core::convert::TryFrom<u16> for Namespace {
+    type Error = ::capnp::NotInSchema;
+    fn try_from(value: u16) -> ::core::result::Result<Self, <Namespace as ::core::convert::TryFrom<u16>>::Error> {
+      match value {
+        0 => ::core::result::Result::Ok(Self::Ipc),
+        1 => ::core::result::Result::Ok(Self::Net),
+        2 => ::core::result::Result::Ok(Self::Pid),
+        3 => ::core::result::Result::Ok(Self::User),
+        4 => ::core::result::Result::Ok(Self::Uts),
+        n => ::core::result::Result::Err(::capnp::NotInSchema(n)),
+      }
+    }
+  }
+  impl From<Namespace> for u16 {
+    #[inline]
+    fn from(x: Namespace) -> u16 { x as u16 }
+  }
+  impl ::capnp::traits::HasTypeId for Namespace {
+    const TYPE_ID: u64 = 0xd614_91b5_60a8_f3a3u64;
+  }
+  mod namespace {
+  pub static ENCODED_NODE: [::capnp::Word; 39] = [
+    ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+    ::capnp::word(163, 243, 168, 96, 181, 145, 20, 214),
+    ::capnp::word(26, 0, 0, 0, 2, 0, 0, 0),
+    ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(21, 0, 0, 0, 34, 1, 0, 0),
+    ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(33, 0, 0, 0, 127, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+    ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+    ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+    ::capnp::word(110, 46, 78, 97, 109, 101, 115, 112),
+    ::capnp::word(97, 99, 101, 0, 0, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+    ::capnp::word(20, 0, 0, 0, 1, 0, 2, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(53, 0, 0, 0, 34, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(45, 0, 0, 0, 34, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(2, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(37, 0, 0, 0, 34, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(3, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(29, 0, 0, 0, 42, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(4, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(21, 0, 0, 0, 34, 0, 0, 0),
+    ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+    ::capnp::word(105, 112, 99, 0, 0, 0, 0, 0),
+    ::capnp::word(110, 101, 116, 0, 0, 0, 0, 0),
+    ::capnp::word(112, 105, 100, 0, 0, 0, 0, 0),
+    ::capnp::word(117, 115, 101, 114, 0, 0, 0, 0),
+    ::capnp::word(117, 116, 115, 0, 0, 0, 0, 0),
+  ];
+  pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+    panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+  }
+  }
+
+  pub mod create_namespaces_response {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_namespaces(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::namespace_response::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_namespaces(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_namespaces(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::namespace_response::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_namespaces(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::namespace_response::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_namespaces(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::namespace_response::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), size)
+      }
+      #[inline]
+      pub fn has_namespaces(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 41] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(203, 30, 122, 87, 15, 166, 135, 152),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 154, 1, 0, 0),
+        ::capnp::word(45, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 67, 114, 101, 97, 116, 101),
+        ::capnp::word(78, 97, 109, 101, 115, 112, 97, 99),
+        ::capnp::word(101, 115, 82, 101, 115, 112, 111, 110),
+        ::capnp::word(115, 101, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 90, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(40, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(110, 97, 109, 101, 115, 112, 97, 99),
+        ::capnp::word(101, 115, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(22, 250, 227, 164, 214, 83, 56, 169),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::namespace_response::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0x9887_a60f_577a_1ecb;
+    }
+  }
+
+  pub mod namespace_response {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_type(self) -> ::core::result::Result<crate::conmon_capnp::conmon::Namespace,::capnp::NotInSchema> {
+        ::core::convert::TryInto::try_into(self.reader.get_data_field::<u16>(0))
+      }
+      #[inline]
+      pub fn get_path(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_path(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_type(self) -> ::core::result::Result<crate::conmon_capnp::conmon::Namespace,::capnp::NotInSchema> {
+        ::core::convert::TryInto::try_into(self.builder.get_data_field::<u16>(0))
+      }
+      #[inline]
+      pub fn set_type(&mut self, value: crate::conmon_capnp::conmon::Namespace)  {
+        self.builder.set_data_field::<u16>(0, value as u16);
+      }
+      #[inline]
+      pub fn get_path(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_path(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_path(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(0).init_text(size)
+      }
+      #[inline]
+      pub fn has_path(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 50] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(22, 250, 227, 164, 214, 83, 56, 169),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 98, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 119, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 78, 97, 109, 101, 115, 112),
+        ::capnp::word(97, 99, 101, 82, 101, 115, 112, 111),
+        ::capnp::word(110, 115, 101, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 42, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(45, 0, 0, 0, 42, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(52, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0),
+        ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(163, 243, 168, 96, 181, 145, 20, 214),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 97, 116, 104, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::Namespace as ::capnp::introspect::Introspect>::introspect(),
+          1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[1,0];
+      pub const TYPE_ID: u64 = 0xa938_53d6_a4e3_fa16;
+    }
+  }
+
+  pub mod start_fd_socket_request {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_metadata(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_metadata(&mut self, value: ::capnp::struct_list::Reader<'_,crate::conmon_capnp::conmon::text_text_map_entry::Owned>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_metadata(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::conmon_capnp::conmon::text_text_map_entry::Owned> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), size)
+      }
+      #[inline]
+      pub fn has_metadata(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 40] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(41, 236, 136, 166, 135, 171, 83, 186),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 122, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 83, 116, 97, 114, 116, 70),
+        ::capnp::word(100, 83, 111, 99, 107, 101, 116, 82),
+        ::capnp::word(101, 113, 117, 101, 115, 116, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(40, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(109, 101, 116, 97, 100, 97, 116, 97),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <::capnp::struct_list::Owned<crate::conmon_capnp::conmon::text_text_map_entry::Owned> as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xba53_ab87_a688_ec29;
+    }
+  }
+
+  pub mod start_fd_socket_response {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_path(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_path(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_path(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_path(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_path(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(0).init_text(size)
+      }
+      #[inline]
+      pub fn has_path(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 35] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(3, 224, 228, 10, 142, 65, 47, 182),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 130, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 83, 116, 97, 114, 116, 70),
+        ::capnp::word(100, 83, 111, 99, 107, 101, 116, 82),
+        ::capnp::word(101, 115, 112, 111, 110, 115, 101, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 42, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(112, 97, 116, 104, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xb62f_418e_0ae4_e003;
+    }
+  }
+
+  pub mod text_text_map_entry {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_key(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_key(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+      #[inline]
+      pub fn get_value(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_value(&self) -> bool {
+        !self.reader.get_pointer_field(1).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 2 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_key(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_key(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_key(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(0).init_text(size)
+      }
+      #[inline]
+      pub fn has_key(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+      #[inline]
+      pub fn get_value(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_value(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>)  {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap()
+      }
+      #[inline]
+      pub fn init_value(self, size: u32) -> ::capnp::text::Builder<'a> {
+        self.builder.get_pointer_field(1).init_text(size)
+      }
+      #[inline]
+      pub fn has_value(&self) -> bool {
+        !self.builder.is_pointer_field_null(1)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 50] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(146, 211, 74, 109, 222, 253, 187, 250),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(241, 51, 102, 221, 153, 232, 55, 183),
+        ::capnp::word(2, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 90, 1, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 119, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 84, 101, 120, 116, 84, 101),
+        ::capnp::word(120, 116, 77, 97, 112, 69, 110, 116),
+        ::capnp::word(114, 121, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 34, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(45, 0, 0, 0, 50, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(52, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(107, 101, 121, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(118, 97, 108, 117, 101, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0,1];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0,1];
+      pub const TYPE_ID: u64 = 0xfabb_fdde_6d4a_d392;
+    }
+  }
+
+  pub mod version_params {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::version_request::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::version_request::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_request(&mut self, value: crate::conmon_capnp::conmon::version_request::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_request(self, ) -> crate::conmon_capnp::conmon::version_request::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_request(&self) -> crate::conmon_capnp::conmon::version_request::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 34] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(231, 228, 254, 106, 103, 112, 47, 204),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 74, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(33, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 118, 101, 114, 115, 105, 111),
+        ::capnp::word(110, 36, 80, 97, 114, 97, 109, 115),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 113, 117, 101, 115, 116, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(19, 68, 48, 185, 214, 51, 42, 173),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::version_request::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xcc2f_7067_6afe_e4e7;
+    }
+  }
+
+  pub mod version_results {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::version_response::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::version_response::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_response(&mut self, value: crate::conmon_capnp::conmon::version_response::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_response(self, ) -> crate::conmon_capnp::conmon::version_response::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_response(&self) -> crate::conmon_capnp::conmon::version_response::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 35] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(48, 123, 71, 169, 94, 105, 19, 227),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 82, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(33, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 118, 101, 114, 115, 105, 111),
+        ::capnp::word(110, 36, 82, 101, 115, 117, 108, 116),
+        ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 115, 112, 111, 110, 115, 101),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(209, 238, 31, 172, 203, 229, 75, 243),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::version_response::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xe313_695e_a947_7b30;
+    }
+  }
+
+  pub mod create_container_params {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::create_container_request::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::create_container_request::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_request(&mut self, value: crate::conmon_capnp::conmon::create_container_request::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_request(self, ) -> crate::conmon_capnp::conmon::create_container_request::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_request(&self) -> crate::conmon_capnp::conmon::create_container_request::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 35] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(184, 154, 148, 143, 196, 50, 71, 244),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 138, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 99, 114, 101, 97, 116, 101),
+        ::capnp::word(67, 111, 110, 116, 97, 105, 110, 101),
+        ::capnp::word(114, 36, 80, 97, 114, 97, 109, 115),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 113, 117, 101, 115, 116, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(202, 182, 169, 58, 250, 227, 119, 186),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::create_container_request::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xf447_32c4_8f94_9ab8;
+    }
+  }
+
+  pub mod create_container_results {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::create_container_response::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::create_container_response::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_response(&mut self, value: crate::conmon_capnp::conmon::create_container_response::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_response(self, ) -> crate::conmon_capnp::conmon::create_container_response::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_response(&self) -> crate::conmon_capnp::conmon::create_container_response::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 36] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(248, 21, 190, 151, 26, 60, 186, 206),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 146, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 99, 114, 101, 97, 116, 101),
+        ::capnp::word(67, 111, 110, 116, 97, 105, 110, 101),
+        ::capnp::word(114, 36, 82, 101, 115, 117, 108, 116),
+        ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 115, 112, 111, 110, 115, 101),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(154, 43, 119, 112, 94, 98, 58, 222),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::create_container_response::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xceba_3c1a_97be_15f8;
+    }
+  }
+
+  pub mod exec_sync_container_params {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::exec_sync_container_request::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::exec_sync_container_request::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_request(&mut self, value: crate::conmon_capnp::conmon::exec_sync_container_request::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_request(self, ) -> crate::conmon_capnp::conmon::exec_sync_container_request::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_request(&self) -> crate::conmon_capnp::conmon::exec_sync_container_request::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 35] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(115, 225, 121, 114, 166, 157, 71, 131),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 154, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 101, 120, 101, 99, 83, 121),
+        ::capnp::word(110, 99, 67, 111, 110, 116, 97, 105),
+        ::capnp::word(110, 101, 114, 36, 80, 97, 114, 97),
+        ::capnp::word(109, 115, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 113, 117, 101, 115, 116, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(166, 113, 163, 144, 248, 34, 17, 244),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::exec_sync_container_request::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0x8347_9da6_7279_e173;
+    }
+  }
+
+  pub mod exec_sync_container_results {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::exec_sync_container_response::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::exec_sync_container_response::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_response(&mut self, value: crate::conmon_capnp::conmon::exec_sync_container_response::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_response(self, ) -> crate::conmon_capnp::conmon::exec_sync_container_response::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_response(&self) -> crate::conmon_capnp::conmon::exec_sync_container_response::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 36] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(188, 1, 170, 11, 92, 106, 232, 248),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 162, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 101, 120, 101, 99, 83, 121),
+        ::capnp::word(110, 99, 67, 111, 110, 116, 97, 105),
+        ::capnp::word(110, 101, 114, 36, 82, 101, 115, 117),
+        ::capnp::word(108, 116, 115, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 115, 112, 111, 110, 115, 101),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(252, 133, 60, 128, 29, 29, 214, 217),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::exec_sync_container_response::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xf8e8_6a5c_0baa_01bc;
+    }
+  }
+
+  pub mod attach_container_params {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::attach_request::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::attach_request::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_request(&mut self, value: crate::conmon_capnp::conmon::attach_request::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_request(self, ) -> crate::conmon_capnp::conmon::attach_request::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_request(&self) -> crate::conmon_capnp::conmon::attach_request::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 35] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(36, 175, 195, 209, 138, 60, 47, 170),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 138, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 97, 116, 116, 97, 99, 104),
+        ::capnp::word(67, 111, 110, 116, 97, 105, 110, 101),
+        ::capnp::word(114, 36, 80, 97, 114, 97, 109, 115),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 113, 117, 101, 115, 116, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(252, 58, 252, 190, 160, 60, 112, 223),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::attach_request::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xaa2f_3c8a_d1c3_af24;
+    }
+  }
+
+  pub mod attach_container_results {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::attach_response::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::attach_response::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_response(&mut self, value: crate::conmon_capnp::conmon::attach_response::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_response(self, ) -> crate::conmon_capnp::conmon::attach_response::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_response(&self) -> crate::conmon_capnp::conmon::attach_response::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 36] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(16, 91, 207, 61, 236, 94, 230, 197),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 146, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 97, 116, 116, 97, 99, 104),
+        ::capnp::word(67, 111, 110, 116, 97, 105, 110, 101),
+        ::capnp::word(114, 36, 82, 101, 115, 117, 108, 116),
+        ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 115, 112, 111, 110, 115, 101),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(119, 96, 200, 175, 122, 81, 229, 172),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::attach_response::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xc5e6_5eec_3dcf_5b10;
+    }
+  }
+
+  pub mod reopen_log_container_params {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::reopen_log_request::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::reopen_log_request::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_request(&mut self, value: crate::conmon_capnp::conmon::reopen_log_request::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_request(self, ) -> crate::conmon_capnp::conmon::reopen_log_request::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_request(&self) -> crate::conmon_capnp::conmon::reopen_log_request::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 35] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(54, 19, 195, 176, 110, 145, 234, 229),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 162, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 114, 101, 111, 112, 101, 110),
+        ::capnp::word(76, 111, 103, 67, 111, 110, 116, 97),
+        ::capnp::word(105, 110, 101, 114, 36, 80, 97, 114),
+        ::capnp::word(97, 109, 115, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 113, 117, 101, 115, 116, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(26, 65, 209, 52, 15, 110, 71, 208),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::reopen_log_request::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xe5ea_916e_b0c3_1336;
+    }
+  }
+
+  pub mod reopen_log_container_results {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::reopen_log_response::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::reopen_log_response::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_response(&mut self, value: crate::conmon_capnp::conmon::reopen_log_response::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_response(self, ) -> crate::conmon_capnp::conmon::reopen_log_response::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_response(&self) -> crate::conmon_capnp::conmon::reopen_log_response::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 36] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(133, 233, 78, 182, 85, 131, 239, 160),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 170, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 114, 101, 111, 112, 101, 110),
+        ::capnp::word(76, 111, 103, 67, 111, 110, 116, 97),
+        ::capnp::word(105, 110, 101, 114, 36, 82, 101, 115),
+        ::capnp::word(117, 108, 116, 115, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 115, 112, 111, 110, 115, 101),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(153, 91, 232, 107, 69, 73, 15, 162),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::reopen_log_response::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xa0ef_8355_b64e_e985;
+    }
+  }
+
+  pub mod set_window_size_container_params {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::set_window_size_request::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::set_window_size_request::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_request(&mut self, value: crate::conmon_capnp::conmon::set_window_size_request::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_request(self, ) -> crate::conmon_capnp::conmon::set_window_size_request::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_request(&self) -> crate::conmon_capnp::conmon::set_window_size_request::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 35] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(231, 97, 187, 2, 69, 205, 108, 199),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 194, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 115, 101, 116, 87, 105, 110),
+        ::capnp::word(100, 111, 119, 83, 105, 122, 101, 67),
+        ::capnp::word(111, 110, 116, 97, 105, 110, 101, 114),
+        ::capnp::word(36, 80, 97, 114, 97, 109, 115, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 113, 117, 101, 115, 116, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(123, 209, 234, 168, 142, 139, 65, 181),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::set_window_size_request::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xc76c_cd45_02bb_61e7;
+    }
+  }
+
+  pub mod set_window_size_container_results {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::set_window_size_response::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::set_window_size_response::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_response(&mut self, value: crate::conmon_capnp::conmon::set_window_size_response::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_response(self, ) -> crate::conmon_capnp::conmon::set_window_size_response::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_response(&self) -> crate::conmon_capnp::conmon::set_window_size_response::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 37] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(85, 112, 71, 17, 38, 82, 14, 224),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 202, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 115, 101, 116, 87, 105, 110),
+        ::capnp::word(100, 111, 119, 83, 105, 122, 101, 67),
+        ::capnp::word(111, 110, 116, 97, 105, 110, 101, 114),
+        ::capnp::word(36, 82, 101, 115, 117, 108, 116, 115),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 115, 112, 111, 110, 115, 101),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(248, 161, 171, 51, 128, 205, 179, 249),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::set_window_size_response::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xe00e_5226_1147_7055;
+    }
+  }
+
+  pub mod create_namespaces_params {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::create_namespaces_request::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::create_namespaces_request::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_request(&mut self, value: crate::conmon_capnp::conmon::create_namespaces_request::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_request(self, ) -> crate::conmon_capnp::conmon::create_namespaces_request::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_request(&self) -> crate::conmon_capnp::conmon::create_namespaces_request::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 35] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(220, 56, 42, 102, 160, 3, 76, 139),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 146, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 99, 114, 101, 97, 116, 101),
+        ::capnp::word(78, 97, 109, 101, 115, 112, 97, 99),
+        ::capnp::word(101, 115, 36, 80, 97, 114, 97, 109),
+        ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 113, 117, 101, 115, 116, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(126, 96, 15, 148, 147, 22, 91, 139),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::create_namespaces_request::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0x8b4c_03a0_662a_38dc;
+    }
+  }
+
+  pub mod create_namespaces_results {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::create_namespaces_response::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::create_namespaces_response::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_response(&mut self, value: crate::conmon_capnp::conmon::create_namespaces_response::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_response(self, ) -> crate::conmon_capnp::conmon::create_namespaces_response::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_response(&self) -> crate::conmon_capnp::conmon::create_namespaces_response::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 36] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(245, 164, 200, 61, 151, 145, 239, 138),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 154, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 99, 114, 101, 97, 116, 101),
+        ::capnp::word(78, 97, 109, 101, 115, 112, 97, 99),
+        ::capnp::word(101, 115, 36, 82, 101, 115, 117, 108),
+        ::capnp::word(116, 115, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 115, 112, 111, 110, 115, 101),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(203, 30, 122, 87, 15, 166, 135, 152),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::create_namespaces_response::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0x8aef_9197_3dc8_a4f5;
+    }
+  }
+
+  pub mod start_fd_socket_params {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::start_fd_socket_request::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_request(self) -> ::capnp::Result<crate::conmon_capnp::conmon::start_fd_socket_request::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_request(&mut self, value: crate::conmon_capnp::conmon::start_fd_socket_request::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_request(self, ) -> crate::conmon_capnp::conmon::start_fd_socket_request::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_request(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_request(&self) -> crate::conmon_capnp::conmon::start_fd_socket_request::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 34] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(107, 11, 200, 20, 9, 63, 115, 206),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 122, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(33, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 115, 116, 97, 114, 116, 70),
+        ::capnp::word(100, 83, 111, 99, 107, 101, 116, 36),
+        ::capnp::word(80, 97, 114, 97, 109, 115, 0, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 66, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 113, 117, 101, 115, 116, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(41, 236, 136, 166, 135, 171, 83, 186),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::start_fd_socket_request::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xce73_3f09_14c8_0b6b;
+    }
+  }
+
+  pub mod start_fd_socket_results {
+    #[derive(Copy, Clone)]
+    pub struct Owned(());
+    impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+    impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+    impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+    pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+    impl <'a,> ::core::marker::Copy for Reader<'a,>  {}
+    impl <'a,> ::core::clone::Clone for Reader<'a,>  {
+      fn clone(&self) -> Self { *self }
+    }
+
+    impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,>  {
+      fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+        Self { reader,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Reader<'a,>> for ::capnp::dynamic_value::Reader<'a>  {
+      fn from(reader: Reader<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::core::fmt::Debug for Reader<'a,>  {
+      fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+        core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,>  {
+      fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(reader.get_struct(default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,>  {
+      fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+        self.reader
+      }
+    }
+
+    impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,>  {
+      fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+        self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> Reader<'a,>  {
+      pub fn reborrow(&self) -> Reader<'_,> {
+        Self { .. *self }
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.reader.total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::start_fd_socket_response::Reader<'a>> {
+        ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.reader.get_pointer_field(0).is_null()
+      }
+    }
+
+    pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+    impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,>  {
+      const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+    }
+    impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,>  {
+      const TYPE_ID: u64 = _private::TYPE_ID;
+    }
+    impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,>  {
+      fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+        Self { builder,  }
+      }
+    }
+
+    impl <'a,> ::core::convert::From<Builder<'a,>> for ::capnp::dynamic_value::Builder<'a>  {
+      fn from(builder: Builder<'a,>) -> Self {
+        Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,>  {
+      fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+        self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+      }
+    }
+
+    impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,>  {
+      fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+        builder.init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE).into()
+      }
+      fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result<Self> {
+        ::core::result::Result::Ok(builder.get_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE, default)?.into())
+      }
+    }
+
+    impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,>  {
+      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,>  {
+      pub fn into_reader(self) -> Reader<'a,> {
+        self.builder.into_reader().into()
+      }
+      pub fn reborrow(&mut self) -> Builder<'_,> {
+        Builder { builder: self.builder.reborrow() }
+      }
+      pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+        self.builder.as_reader().into()
+      }
+
+      pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+        self.builder.as_reader().total_size()
+      }
+      #[inline]
+      pub fn get_response(self) -> ::capnp::Result<crate::conmon_capnp::conmon::start_fd_socket_response::Builder<'a>> {
+        ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+      }
+      #[inline]
+      pub fn set_response(&mut self, value: crate::conmon_capnp::conmon::start_fd_socket_response::Reader<'_>) -> ::capnp::Result<()> {
+        ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+      }
+      #[inline]
+      pub fn init_response(self, ) -> crate::conmon_capnp::conmon::start_fd_socket_response::Builder<'a> {
+        ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+      }
+      #[inline]
+      pub fn has_response(&self) -> bool {
+        !self.builder.is_pointer_field_null(0)
+      }
+    }
+
+    pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+      fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+        Self { _typeless: typeless,  }
+      }
+    }
+    impl Pipeline  {
+      pub fn get_response(&self) -> crate::conmon_capnp::conmon::start_fd_socket_response::Pipeline {
+        ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+      }
+    }
+    mod _private {
+      pub static ENCODED_NODE: [::capnp::Word; 35] = [
+        ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0),
+        ::capnp::word(21, 95, 129, 224, 42, 233, 227, 244),
+        ::capnp::word(26, 0, 0, 0, 1, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(21, 0, 0, 0, 130, 1, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(33, 0, 0, 0, 63, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(112, 114, 111, 116, 111, 47, 99, 111),
+        ::capnp::word(110, 109, 111, 110, 46, 99, 97, 112),
+        ::capnp::word(110, 112, 58, 67, 111, 110, 109, 111),
+        ::capnp::word(110, 46, 115, 116, 97, 114, 116, 70),
+        ::capnp::word(100, 83, 111, 99, 107, 101, 116, 36),
+        ::capnp::word(82, 101, 115, 117, 108, 116, 115, 0),
+        ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(13, 0, 0, 0, 74, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+        ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+        ::capnp::word(114, 101, 115, 112, 111, 110, 115, 101),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(3, 224, 228, 10, 142, 65, 47, 182),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+        ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+      ];
+      pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+        match index {
+          0 => <crate::conmon_capnp::conmon::start_fd_socket_response::Owned as ::capnp::introspect::Introspect>::introspect(),
+          _ => panic!("invalid field index {}", index),
+        }
+      }
+      pub fn get_annotation_types(child_index: Option<u16>, index: u32) -> ::capnp::introspect::Type {
+        panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+      }
+      pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+        encoded_node: &ENCODED_NODE,
+        nonunion_members: NONUNION_MEMBERS,
+        members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+        members_by_name: MEMBERS_BY_NAME,
+      };
+      pub static NONUNION_MEMBERS : &[u16] = &[0];
+      pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+      pub static MEMBERS_BY_NAME : &[u16] = &[0];
+      pub const TYPE_ID: u64 = 0xf4e3_e92a_e081_5f15;
+    }
+  }
+}
+
\ No newline at end of file diff --git a/src/conmon_common/lib.rs.html b/src/conmon_common/lib.rs.html new file mode 100644 index 0000000000..d7f8ecc2f9 --- /dev/null +++ b/src/conmon_common/lib.rs.html @@ -0,0 +1,189 @@ +lib.rs - source

conmon_common/
lib.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
#![allow(clippy::all)]
+pub mod conmon_capnp {
+    include!(concat!(env!("OUT_DIR"), "/proto/conmon_capnp.rs"));
+}
+
+/// Workaround for rustc bug: https://github.com/rust-lang/rust/issues/47493
+///
+/// It shouldn't even be possible to reach this function, thanks to panic=abort,
+/// but libcore is compiled with unwinding enabled and that ends up making unreachable
+/// references to this.
+#[cfg(all(target_os = "linux", target_arch = "s390x", target_env = "musl"))]
+mod unwind {
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_Backtrace() {
+        unimplemented!("_Unwind_Backtrace")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_DeleteException() {
+        unimplemented!("_Unwind_DeleteException")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_GetDataRelBase() {
+        unimplemented!("_Unwind_GetDataRelBase")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_GetIP() {
+        unimplemented!("_Unwind_GetIP")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_GetIPInfo() {
+        unimplemented!("_Unwind_GetIPInfo")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_GetLanguageSpecificData() {
+        unimplemented!("_Unwind_GetLanguageSpecificData")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_GetRegionStart() {
+        unimplemented!("_Unwind_GetRegionStart")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_GetTextRelBase() {
+        unimplemented!("_Unwind_GetTextRelBase")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_RaiseException() {
+        unimplemented!("_Unwind_RaiseException")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_Resume() {
+        unimplemented!("_Unwind_Resume")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_SetGR() {
+        unimplemented!("_Unwind_SetGR")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_SetIP() {
+        unimplemented!("_Unwind_SetIP")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_FindEnclosingFunction() {
+        unimplemented!("_Unwind_FindEnclosingFunction")
+    }
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_GetCFA() {
+        unimplemented!("_Unwind_GetCFA")
+    }
+    #[cfg(target_arch = "arm")]
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_VRS_Get() {
+        unimplemented!("_Unwind_VRS_Get")
+    }
+    #[cfg(target_arch = "arm")]
+    #[no_mangle]
+    unsafe extern "C" fn _Unwind_VRS_Set() {
+        unimplemented!("_Unwind_VRS_Set")
+    }
+    #[cfg(target_arch = "arm")]
+    #[no_mangle]
+    unsafe extern "C" fn __aeabi_unwind_cpp_pr0() {
+        unimplemented!("__aeabi_unwind_cpp_pr0")
+    }
+    #[cfg(target_arch = "arm")]
+    #[no_mangle]
+    unsafe extern "C" fn __aeabi_unwind_cpp_pr1() {
+        unimplemented!("__aeabi_unwind_cpp_pr1")
+    }
+    #[cfg(target_arch = "arm")]
+    #[no_mangle]
+    unsafe extern "C" fn __gnu_unwind_frame() {
+        unimplemented!("__gnu_unwind_frame")
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/attach.rs.html b/src/conmonrs/attach.rs.html new file mode 100644 index 0000000000..bef42ec9da --- /dev/null +++ b/src/conmonrs/attach.rs.html @@ -0,0 +1,655 @@ +attach.rs - source

conmonrs/
attach.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
use crate::{
+    container_io::{Message, Pipe},
+    listener::{DefaultListener, Listener},
+};
+use anyhow::{bail, Context, Result};
+use nix::{
+    errno::Errno,
+    sys::socket::{bind, listen, socket, AddressFamily, SockFlag, SockType, UnixAddr},
+};
+use std::{
+    os::{
+        fd::{AsRawFd, OwnedFd},
+        unix::fs::PermissionsExt,
+    },
+    path::{Path, PathBuf},
+};
+use tokio::{
+    io::{AsyncReadExt, AsyncWriteExt, ErrorKind},
+    net::{
+        unix::{OwnedReadHalf, OwnedWriteHalf},
+        UnixListener,
+    },
+    select,
+    sync::broadcast::{self, Receiver, Sender},
+    task,
+    time::{self, Duration},
+};
+use tokio_util::sync::CancellationToken;
+use tracing::{debug, debug_span, error, Instrument};
+
+#[derive(Debug)]
+/// A shared container attach abstraction.
+pub struct SharedContainerAttach {
+    read_half_rx: Receiver<Vec<u8>>,
+    read_half_tx: Sender<Vec<u8>>,
+    write_half_tx: Sender<Message>,
+}
+
+impl Default for SharedContainerAttach {
+    fn default() -> Self {
+        let (read_half_tx, read_half_rx) = broadcast::channel(4);
+        let (write_half_tx, _) = broadcast::channel(4);
+        Self {
+            read_half_rx,
+            read_half_tx,
+            write_half_tx,
+        }
+    }
+}
+
+impl Clone for SharedContainerAttach {
+    fn clone(&self) -> Self {
+        Self {
+            read_half_rx: self.read_half_tx.subscribe(),
+            read_half_tx: self.read_half_tx.clone(),
+            write_half_tx: self.write_half_tx.clone(),
+        }
+    }
+}
+
+impl SharedContainerAttach {
+    /// Add a new attach endpoint to this shared container attach instance.
+    pub async fn add<T>(
+        &mut self,
+        socket_path: T,
+        token: CancellationToken,
+        stop_after_stdin_eof: bool,
+    ) -> Result<()>
+    where
+        T: AsRef<Path>,
+        PathBuf: From<T>,
+    {
+        Attach::create(
+            socket_path,
+            self.read_half_tx.clone(),
+            self.write_half_tx.clone(),
+            token,
+            stop_after_stdin_eof,
+        )
+        .context("create attach endpoint")
+    }
+
+    /// Read from all attach endpoints standard input and return the first result.
+    pub async fn read(&mut self) -> Result<Vec<u8>> {
+        self.read_half_rx
+            .recv()
+            .await
+            .context("receive attach message")
+    }
+
+    /// Try to read from all attach endpoints standard input and return the first result.
+    pub fn try_read(&mut self) -> Result<Vec<u8>> {
+        self.read_half_rx
+            .try_recv()
+            .context("try to receive attach message")
+    }
+
+    /// Write a buffer to all attach endpoints.
+    pub async fn write(&mut self, m: Message) -> Result<()> {
+        if self.write_half_tx.receiver_count() > 0 {
+            self.write_half_tx
+                .send(m)
+                .context("send data message to attach clients")?;
+        }
+        Ok(())
+    }
+}
+
+#[derive(Clone, Debug)]
+/// Attach handles the attach socket IO of a container.
+struct Attach;
+
+impl Attach {
+    /// The size of an attach packet.
+    const PACKET_BUF_SIZE: usize = 8192;
+
+    /// The packet indicating that we're done writing.
+    const DONE_PACKET: &'static [u8; 1] = &[0];
+
+    /// Create a new attach instance.
+    fn create<T>(
+        socket_path: T,
+        read_half_tx: Sender<Vec<u8>>,
+        write_half_tx: Sender<Message>,
+        token: CancellationToken,
+        stop_after_stdin_eof: bool,
+    ) -> Result<()>
+    where
+        T: AsRef<Path>,
+        PathBuf: From<T>,
+    {
+        let path = socket_path.as_ref();
+
+        if path.exists() {
+            debug!(
+                "Attach path {} already exist, assuming that we're already listening on it",
+                path.display()
+            );
+            return Ok(());
+        }
+
+        debug!("Creating attach socket: {}", path.display());
+        let fd = socket(
+            AddressFamily::Unix,
+            SockType::SeqPacket,
+            SockFlag::SOCK_NONBLOCK | SockFlag::SOCK_CLOEXEC,
+            None,
+        )
+        .context("bind socket")?;
+
+        // keep parent_fd in scope until the bind, or else the socket will not work
+        let (shortened_path, _parent_dir) =
+            Listener::<DefaultListener>::default().shorten_socket_path(path)?;
+        let addr = UnixAddr::new(&shortened_path).context("create socket addr")?;
+        bind(fd.as_raw_fd(), &addr).context("bind socket fd")?;
+
+        let metadata = path.metadata()?;
+        let mut permissions = metadata.permissions();
+        permissions.set_mode(0o700);
+
+        listen(&fd, 10).context("listen on socket fd")?;
+
+        task::spawn(
+            async move {
+                if let Err(e) =
+                    Self::start(fd, read_half_tx, write_half_tx, token, stop_after_stdin_eof).await
+                {
+                    error!("Attach failure: {:#}", e);
+                }
+            }
+            .instrument(debug_span!("attach")),
+        );
+
+        Ok(())
+    }
+
+    async fn start(
+        fd: OwnedFd,
+        read_half_tx: Sender<Vec<u8>>,
+        write_half_tx: Sender<Message>,
+        token: CancellationToken,
+        stop_after_stdin_eof: bool,
+    ) -> Result<()> {
+        debug!("Start listening on attach socket");
+        let listener = UnixListener::from_std(fd.into()).context("create unix listener")?;
+        loop {
+            match listener.accept().await {
+                Ok((stream, _)) => {
+                    debug!("Got new attach stream connection");
+                    let (read, write) = stream.into_split();
+
+                    let read_half_tx_clone = read_half_tx.clone();
+                    let token_clone = token.clone();
+                    task::spawn(
+                        async move {
+                            if let Err(e) = Self::read_loop(
+                                read,
+                                read_half_tx_clone,
+                                token_clone,
+                                stop_after_stdin_eof,
+                            )
+                            .await
+                            {
+                                error!("Attach read loop failure: {:#}", e);
+                            }
+                        }
+                        .instrument(debug_span!("read_loop")),
+                    );
+
+                    let write_half_rx = write_half_tx.subscribe();
+                    task::spawn(
+                        async move {
+                            if let Err(e) = Self::write_loop(write, write_half_rx).await {
+                                error!("Attach write loop failure: {:#}", e);
+                            }
+                        }
+                        .instrument(debug_span!("write_loop")),
+                    );
+                }
+                Err(e) => error!("Unable to accept attach stream: {}", e),
+            }
+        }
+    }
+
+    async fn read_loop(
+        mut read_half: OwnedReadHalf,
+        tx: Sender<Vec<u8>>,
+        token: CancellationToken,
+        stop_after_stdin_eof: bool,
+    ) -> Result<()> {
+        loop {
+            let mut buf = vec![0; Self::PACKET_BUF_SIZE];
+            // In situations we're processing output directly from the I/O streams
+            // we need a mechanism to figure out when to stop that doesn't involve reading the
+            // number of bytes read.
+            // Thus, we need to select on the cancellation token saved in the child.
+            // While this could result in a data race, as select statements are racy,
+            // we won't interleve these two futures, as one ends execution.
+            select! {
+                n = read_half.read(&mut buf) => {
+                    match n {
+                        Ok(n) if n > 0 => {
+                            if let Some(first_zero_idx) = buf.iter().position(|&x| x == 0) {
+                                buf.resize(first_zero_idx, 0);
+                            }
+                            debug!("Read {} stdin bytes from client", buf.len());
+                            tx.send(buf).context("send data message")?;
+                        }
+                        Err(e) => match Errno::from_i32(e.raw_os_error().context("get OS error")?) {
+                            Errno::EIO => {
+                                debug!("Stopping read loop because of IO error");
+                                return Ok(());
+                            }
+                            Errno::EBADF => {
+                                return Err(Errno::EBADFD.into());
+                            }
+                            Errno::EAGAIN => {
+                                continue;
+                            }
+                            _ => error!(
+                                "Unable to read from file descriptor: {} {}",
+                                e,
+                                e.raw_os_error().context("get OS error")?
+                            ),
+                        },
+                        _ if stop_after_stdin_eof => {
+                            debug!("Stopping read loop because there is nothing more to read");
+                            token.cancel();
+                            return Ok(());
+                        }
+                        _ => time::sleep(Duration::from_millis(500)).await, // avoid busy looping
+                    }
+                }
+                _ = token.cancelled() => {
+                    debug!("Exiting because token cancelled");
+                    return Ok(());
+                }
+            }
+        }
+    }
+
+    async fn write_loop(mut write_half: OwnedWriteHalf, mut rx: Receiver<Message>) -> Result<()> {
+        loop {
+            match rx.recv().await.context("receive message")? {
+                Message::Done => {
+                    debug!("Exiting because token cancelled");
+                    match write_half.write(Self::DONE_PACKET).await {
+                        Ok(_) => {
+                            debug!("Wrote done packet to client")
+                        }
+                        Err(ref e)
+                            if e.kind() == ErrorKind::WouldBlock
+                                || e.kind() == ErrorKind::BrokenPipe => {}
+                        Err(e) => bail!("unable to write done packet: {:#}", e),
+                    }
+                    return Ok(());
+                }
+                Message::Data(buf, pipe) => {
+                    let packets = buf
+                        .chunks(Self::PACKET_BUF_SIZE - 1)
+                        .map(|x| {
+                            let mut y = x.to_vec();
+                            let p = match pipe {
+                                Pipe::StdOut => 2,
+                                Pipe::StdErr => 3,
+                            };
+                            y.insert(0, p);
+                            y
+                        })
+                        .collect::<Vec<_>>();
+
+                    let len = packets.len();
+                    for (idx, packet) in packets.iter().enumerate() {
+                        match write_half.write(packet).await {
+                            Ok(_) => {
+                                debug!("Wrote {} packet {}/{} to client", pipe, idx + 1, len)
+                            }
+                            Err(ref e) if e.kind() == ErrorKind::WouldBlock => continue,
+                            Err(ref e) if e.kind() == ErrorKind::BrokenPipe => break,
+                            Err(e) => bail!("unable to write packet {}/{}: {:#}", idx + 1, len, e),
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/capnp_util.rs.html b/src/conmonrs/capnp_util.rs.html new file mode 100644 index 0000000000..d8a1bf03a0 --- /dev/null +++ b/src/conmonrs/capnp_util.rs.html @@ -0,0 +1,169 @@ +capnp_util.rs - source

conmonrs/
capnp_util.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
pub(crate) use map_entry::into_map;
+
+#[allow(unused)]
+pub(crate) use map_entry::set_map;
+
+/// Helper functions to convert between capnp maps (List's of MapEntries) and rust maps
+mod map_entry {
+    use capnp::{
+        struct_list::{Builder, Reader},
+        traits::OwnedStruct,
+    };
+    use conmon_common::conmon_capnp::conmon;
+
+    /// Convert from a MapEntry capnp struct to a (key, value) tuple.
+    pub(crate) trait IntoKeyValue<'a, K, V>: OwnedStruct {
+        fn into_key_value(entry: Self::Reader<'a>) -> capnp::Result<(K, V)>;
+    }
+
+    /// Set the key and value properties of a MapEntry capnp struct.
+    pub(crate) trait SetKeyValue<K, V>: OwnedStruct {
+        fn set_key_value(entry: Self::Builder<'_>, key: K, value: V);
+    }
+
+    impl<'a, K, V> IntoKeyValue<'a, K, V> for conmon::text_text_map_entry::Owned
+    where
+        K: From<&'a str>,
+        V: From<&'a str>,
+    {
+        fn into_key_value(entry: Self::Reader<'a>) -> capnp::Result<(K, V)> {
+            Ok((
+                entry.get_key()?.to_str()?.into(),
+                entry.get_value()?.to_str()?.into(),
+            ))
+        }
+    }
+
+    impl<K, V> SetKeyValue<K, V> for conmon::text_text_map_entry::Owned
+    where
+        K: AsRef<str>,
+        V: AsRef<str>,
+    {
+        fn set_key_value(mut entry: Self::Builder<'_>, key: K, value: V) {
+            entry.set_key(key.as_ref());
+            entry.set_value(value.as_ref());
+        }
+    }
+
+    /// Convert a capnp map reader (`struct_list::Reader`) into a rust map (`impl FromIterator<(K, V)>`).
+    pub(crate) fn into_map<'a, K, V, E, T>(reader: Reader<'a, E>) -> capnp::Result<T>
+    where
+        E: IntoKeyValue<'a, K, V>,
+        T: FromIterator<(K, V)>,
+    {
+        reader.into_iter().map(E::into_key_value).collect()
+    }
+
+    /// Set a capnp map property from a rust map (`impl IntoIterator<Item=(K, V)>`).
+    ///
+    /// The `init` function is used to allocate a `struct_list::Builder`.
+    ///
+    /// ## Example
+    /// Set the `exampleMap` property in the response capnp builder to the rust map `data`
+    /// ```ignore
+    /// set_from_map(data, |size| response.init_example_map(size));
+    /// ```
+    pub(crate) fn set_map<'a, K, V, E, T>(data: T, init: impl FnOnce(u32) -> Builder<'a, E>)
+    where
+        T: IntoIterator<Item = (K, V)>,
+        T::IntoIter: ExactSizeIterator,
+        E: SetKeyValue<K, V>,
+    {
+        let data = data.into_iter();
+        let size = if let Ok(size) = data.len().try_into() {
+            size
+        } else {
+            panic!("map with more then u32::MAX entries")
+        };
+        let mut list = init(size);
+        for (i, (key, value)) in data.enumerate() {
+            let entry = list.reborrow().get(i as u32);
+            E::set_key_value(entry, key, value);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/child.rs.html b/src/conmonrs/child.rs.html new file mode 100644 index 0000000000..dc1ea1cc20 --- /dev/null +++ b/src/conmonrs/child.rs.html @@ -0,0 +1,115 @@ +child.rs - source

conmonrs/
child.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
use crate::container_io::SharedContainerIO;
+use getset::{CopyGetters, Getters};
+use std::path::PathBuf;
+use tokio::time::Instant;
+use tokio_util::sync::CancellationToken;
+
+#[derive(Debug, CopyGetters, Getters)]
+pub struct Child {
+    #[getset(get = "pub")]
+    id: String,
+
+    #[getset(get_copy = "pub")]
+    pid: u32,
+
+    #[getset(get = "pub")]
+    exit_paths: Vec<PathBuf>,
+
+    #[getset(get = "pub")]
+    oom_exit_paths: Vec<PathBuf>,
+
+    #[getset(get = "pub")]
+    timeout: Option<Instant>,
+
+    #[getset(get = "pub")]
+    io: SharedContainerIO,
+
+    #[getset(get = "pub")]
+    cleanup_cmd: Vec<String>,
+
+    #[getset(get = "pub")]
+    token: CancellationToken,
+}
+
+impl Child {
+    #![allow(clippy::too_many_arguments)]
+    pub fn new(
+        id: String,
+        pid: u32,
+        exit_paths: Vec<PathBuf>,
+        oom_exit_paths: Vec<PathBuf>,
+        timeout: Option<Instant>,
+        io: SharedContainerIO,
+        cleanup_cmd: Vec<String>,
+        token: CancellationToken,
+    ) -> Self {
+        Self {
+            id,
+            pid,
+            exit_paths,
+            oom_exit_paths,
+            timeout,
+            io,
+            cleanup_cmd,
+            token,
+        }
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/child_reaper.rs.html b/src/conmonrs/child_reaper.rs.html new file mode 100644 index 0000000000..9aa68dafbb --- /dev/null +++ b/src/conmonrs/child_reaper.rs.html @@ -0,0 +1,1017 @@ +child_reaper.rs - source

conmonrs/
child_reaper.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
//! Child process reaping and management.
+use crate::{
+    child::Child,
+    container_io::{ContainerIO, ContainerIOType, SharedContainerIO},
+    oom_watcher::OOMWatcher,
+};
+use anyhow::{bail, Context, Result};
+use command_fds::{CommandFdExt, FdMapping};
+use getset::{CopyGetters, Getters, Setters};
+use libc::pid_t;
+use multimap::MultiMap;
+use nix::{
+    errno::Errno,
+    sys::{
+        signal::{kill, Signal},
+        wait::{waitpid, WaitPidFlag, WaitStatus},
+    },
+    unistd::{getpgid, Pid},
+};
+use std::{
+    ffi::OsStr,
+    fmt::{Debug, Write},
+    os::fd::{AsRawFd, FromRawFd, OwnedFd, RawFd},
+    path::{Path, PathBuf},
+    process::Stdio,
+    str,
+    sync::{Arc, Mutex},
+};
+use tokio::{
+    fs::{self, File},
+    io::AsyncWriteExt,
+    process::Command,
+    sync::broadcast::{self, Receiver, Sender},
+    task::{self, JoinHandle},
+    time::{self, Instant},
+};
+use tokio_util::sync::CancellationToken;
+use tracing::{debug, debug_span, error, warn, Instrument};
+
+#[derive(Debug, Default, Getters)]
+pub struct ChildReaper {
+    #[getset(get)]
+    grandchildren: Arc<Mutex<MultiMap<String, ReapableChild>>>,
+}
+
+/// first usable file descriptor after stdin, stdout and stderr
+const FIRST_FD_AFTER_STDIO: RawFd = 3;
+
+impl ChildReaper {
+    pub fn get(&self, id: &str) -> Result<ReapableChild> {
+        let locked_grandchildren = &self.grandchildren().clone();
+        let lock = lock!(locked_grandchildren);
+        let r = lock.get(id).context("child not available")?.clone();
+        drop(lock);
+        Ok(r)
+    }
+
+    #[allow(clippy::too_many_arguments)]
+    pub async fn create_child<P, I, S>(
+        &self,
+        cmd: P,
+        args: I,
+        stdin: bool,
+        container_io: &mut ContainerIO,
+        pidfile: &Path,
+        env_vars: Vec<(String, String)>,
+        additional_fds: Vec<OwnedFd>,
+    ) -> Result<(u32, CancellationToken)>
+    where
+        P: AsRef<OsStr> + Debug,
+        I: IntoIterator<Item = S> + Debug,
+        S: AsRef<OsStr>,
+    {
+        debug!("Running: {:?} {:?}", cmd, args);
+        let mut cmd = Command::new(cmd);
+
+        if stdin {
+            cmd.stdin(Stdio::piped());
+        }
+
+        let mut child = cmd
+            .args(args)
+            .stdout(Stdio::piped())
+            .stderr(Stdio::piped())
+            .envs(env_vars)
+            .fd_mappings(
+                additional_fds
+                    .iter()
+                    .enumerate()
+                    .map(|(i, fd)| FdMapping {
+                        parent_fd: unsafe { OwnedFd::from_raw_fd(fd.as_raw_fd()) },
+                        child_fd: i as RawFd + FIRST_FD_AFTER_STDIO,
+                    })
+                    .collect(),
+            )?
+            .spawn()
+            .context("spawn child process: {}")?;
+
+        debug!(
+            "Running child on PID: {}",
+            child.id().map_or("unknown".into(), |x| x.to_string())
+        );
+
+        // close file descriptors after spawn
+        drop(additional_fds);
+
+        let token = CancellationToken::new();
+
+        match container_io.typ_mut() {
+            ContainerIOType::Terminal(ref mut terminal) => {
+                terminal
+                    .wait_connected(stdin, token.clone())
+                    .await
+                    .context("wait for terminal socket connection")?;
+            }
+            ContainerIOType::Streams(streams) => {
+                let stdout = child.stdout.take();
+                let stderr = child.stderr.take();
+                let stdin = child.stdin.take();
+                streams.handle_stdio_receive(stdin, stdout, stderr, token.clone());
+            }
+        };
+
+        let output = child.wait_with_output().await?;
+
+        if !output.status.success() {
+            const BASE_ERR: &str = "child command exited with";
+
+            let mut err_str = match output.status.code() {
+                Some(code) => format!("{BASE_ERR}: {code}"),
+                None => format!("{BASE_ERR} signal"),
+            };
+
+            if !output.stderr.is_empty() {
+                write!(
+                    err_str,
+                    ": {}",
+                    str::from_utf8(&output.stderr).context("convert stderr to utf8")?,
+                )?;
+            }
+            // token must be cancelled here because the child hasn't been registered yet,
+            // meaning there is no other entity that could cancel the read_loops.
+            token.cancel();
+
+            // Wait to ensure that all children do not become zombies.
+            Self::check_child_processes();
+
+            error!("Failed: {err_str}");
+            bail!(err_str)
+        }
+
+        let grandchild_pid = fs::read_to_string(pidfile)
+            .await
+            .context(format!("grandchild pid read error {}", pidfile.display()))?
+            .parse::<u32>()
+            .context(format!("grandchild pid parse error {}", pidfile.display()))?;
+
+        Ok((grandchild_pid, token))
+    }
+
+    fn check_child_processes() {
+        debug!("Checking child processes");
+        let pid = Pid::from_raw(-1);
+        loop {
+            match waitpid(pid, WaitPidFlag::WNOHANG.into()) {
+                Ok(WaitStatus::Exited(p, code)) => {
+                    debug!("PID {p} exited with status: {code}");
+                    break;
+                }
+                Ok(WaitStatus::StillAlive) => {
+                    debug!("PID {pid} is still in same state");
+                    break;
+                }
+                Ok(_) => {
+                    continue;
+                }
+                Err(Errno::EINTR) => {
+                    debug!("Retrying on EINTR for PID {pid}");
+                    continue;
+                }
+                Err(err) => {
+                    error!("Unable to waitpid on {:#}", err);
+                    break;
+                }
+            };
+        }
+    }
+
+    pub fn watch_grandchild(
+        &self,
+        child: Child,
+        leak_fds: Vec<OwnedFd>,
+    ) -> Result<Receiver<ExitChannelData>> {
+        let locked_grandchildren = &self.grandchildren().clone();
+        let mut map = lock!(locked_grandchildren);
+        let mut reapable_grandchild = ReapableChild::from_child(&child);
+
+        let (exit_tx, exit_rx) = reapable_grandchild.watch()?;
+
+        map.insert(child.id().clone(), reapable_grandchild);
+        let cleanup_grandchildren = locked_grandchildren.clone();
+        let pid = child.pid();
+
+        task::spawn(
+            async move {
+                exit_tx.subscribe().recv().await?;
+                drop(leak_fds);
+                Self::forget_grandchild(&cleanup_grandchildren, pid)
+            }
+            .instrument(debug_span!("watch_grandchild", pid)),
+        );
+        Ok(exit_rx)
+    }
+
+    fn forget_grandchild(
+        locked_grandchildren: &Arc<Mutex<MultiMap<String, ReapableChild>>>,
+        grandchild_pid: u32,
+    ) -> Result<()> {
+        lock!(locked_grandchildren).retain(|_, v| v.pid != grandchild_pid);
+        Ok(())
+    }
+
+    pub fn kill_grandchildren(&self, s: Signal) -> Result<()> {
+        debug!("Killing grandchildren");
+        let grandchildren = lock!(self.grandchildren);
+        let grandchildren_iter = grandchildren.iter();
+        for (_, grandchild) in grandchildren_iter {
+            let span = debug_span!("kill_grandchild", pid = grandchild.pid);
+            let _enter = span.enter();
+            debug!("Killing single grandchild");
+            kill_grandchild(grandchild.pid, s);
+            futures::executor::block_on(
+                async {
+                    if let Err(e) = grandchild.close().await {
+                        error!("Unable to close grandchild: {:#}", e)
+                    }
+                }
+                .instrument(debug_span!("close", signal = s.as_str())),
+            );
+            debug!("Done killing single grandchild");
+        }
+        debug!("Done killing all grandchildren");
+        Ok(())
+    }
+}
+
+pub fn kill_grandchild(raw_pid: u32, s: Signal) {
+    let pid = Pid::from_raw(raw_pid as pid_t);
+    if let Ok(pgid) = getpgid(Some(pid)) {
+        // If process_group is 1, we will end up calling
+        // kill(-1), which kills everything conmon is allowed to.
+        let pgid = i32::from(pgid);
+        if pgid > 1 {
+            if let Err(e) = kill(Pid::from_raw(-pgid), s) {
+                error!(
+                    raw_pid,
+                    "Failed to get pgid, falling back to killing pid: {:#}", e
+                );
+            }
+        }
+    }
+    if let Err(e) = kill(pid, s) {
+        debug!("Failed killing pid: {:#}", e);
+    }
+}
+
+type TaskHandle = Arc<Mutex<Option<Vec<JoinHandle<()>>>>>;
+
+#[derive(Clone, CopyGetters, Debug, Getters, Setters)]
+pub struct ReapableChild {
+    #[getset(get)]
+    exit_paths: Vec<PathBuf>,
+
+    #[getset(get)]
+    oom_exit_paths: Vec<PathBuf>,
+
+    #[getset(get_copy)]
+    pid: u32,
+
+    #[getset(get = "pub")]
+    io: SharedContainerIO,
+
+    #[getset(get = "pub")]
+    timeout: Option<Instant>,
+
+    #[getset(get = "pub")]
+    token: CancellationToken,
+
+    task: Option<TaskHandle>,
+
+    #[getset(get = "pub")]
+    cleanup_cmd: Vec<String>,
+}
+
+#[derive(Clone, CopyGetters, Debug, Getters, Setters)]
+pub struct ExitChannelData {
+    #[getset(get = "pub")]
+    pub exit_code: i32,
+
+    #[allow(dead_code)]
+    #[getset(get = "pub")]
+    pub oomed: bool,
+
+    #[getset(get = "pub")]
+    pub timed_out: bool,
+}
+
+impl ReapableChild {
+    pub fn from_child(child: &Child) -> Self {
+        Self {
+            exit_paths: child.exit_paths().clone(),
+            oom_exit_paths: child.oom_exit_paths().clone(),
+            pid: child.pid(),
+            io: child.io().clone(),
+            timeout: *child.timeout(),
+            token: child.token().clone(),
+            task: None,
+            cleanup_cmd: child.cleanup_cmd().to_vec(),
+        }
+    }
+
+    pub async fn close(&self) -> Result<()> {
+        debug!("Waiting for tasks to close");
+        if let Some(t) = self.task.clone() {
+            let tasks = lock!(t).take().context("no tasks available")?;
+            for t in tasks.into_iter() {
+                debug!("Task await");
+                if let Err(e) = t.await {
+                    warn!("Unable to wait for task: {:#}", e)
+                }
+                debug!("Task finished");
+            }
+        }
+        debug!("All tasks done");
+        Ok(())
+    }
+
+    fn watch(&mut self) -> Result<(Sender<ExitChannelData>, Receiver<ExitChannelData>)> {
+        let exit_paths = self.exit_paths().clone();
+        let oom_exit_paths = self.oom_exit_paths().clone();
+        let pid = self.pid();
+        // Only one exit code will be written.
+        let (exit_tx, exit_rx) = broadcast::channel(1);
+        let exit_tx_clone = exit_tx.clone();
+        let timeout = *self.timeout();
+        let stop_token = self.token().clone();
+        let cleanup_cmd_raw = self.cleanup_cmd().clone();
+
+        let task = task::spawn(
+            async move {
+                debug!("Running task");
+                let mut exit_code: i32 = -1;
+                let mut oomed = false;
+                let mut timed_out = false;
+                let (oom_tx, mut oom_rx) = tokio::sync::mpsc::channel(1);
+                let oom_watcher = OOMWatcher::new(&stop_token, pid, &oom_exit_paths, oom_tx).await;
+
+                let span = debug_span!("wait_for_exit_code");
+                let wait_for_exit_code = task::spawn_blocking(move || {
+                    let _enter = span.enter();
+                    Self::wait_for_exit_code(&stop_token, pid)
+                });
+
+                let closure = async {
+                    let (code, oom) = tokio::join!(wait_for_exit_code, oom_rx.recv());
+                    if let Ok(code) = code {
+                        exit_code = code;
+                    }
+                    if let Some(event) = oom {
+                        oomed = event.oom;
+                    }
+                };
+                if let Some(timeout) = timeout {
+                    if time::timeout_at(timeout, closure).await.is_err() {
+                        timed_out = true;
+                        exit_code = -3;
+                        kill_grandchild(pid, Signal::SIGKILL);
+                    }
+                } else {
+                    closure.await;
+                }
+                oom_watcher.stop().await;
+
+                let exit_channel_data = ExitChannelData {
+                    exit_code,
+                    oomed,
+                    timed_out,
+                };
+                debug!(
+                    "Write to exit paths: {}",
+                    exit_paths
+                        .iter()
+                        .map(|x| x.display().to_string())
+                        .collect::<Vec<_>>()
+                        .join(", ")
+                );
+                if let Err(e) = Self::write_to_exit_paths(exit_code, &exit_paths).await {
+                    error!(pid, "Could not write exit paths: {:#}", e);
+                }
+
+                if !cleanup_cmd_raw.is_empty() {
+                    Self::spawn_cleanup_process(&cleanup_cmd_raw).await;
+                }
+
+                debug!("Sending exit struct to channel: {:?}", exit_channel_data);
+                if exit_tx_clone.send(exit_channel_data).is_err() {
+                    debug!("Unable to send exit status");
+                }
+                debug!("Task done");
+            }
+            .instrument(debug_span!("watch", pid)),
+        );
+
+        let tasks = Arc::new(Mutex::new(Some(Vec::new())));
+        lock!(tasks)
+            .as_mut()
+            .context("no tasks available")?
+            .push(task);
+        self.task = Some(tasks);
+
+        Ok((exit_tx, exit_rx))
+    }
+
+    async fn spawn_cleanup_process(raw_cmd: &[String]) {
+        let mut cleanup_cmd = Command::new(&raw_cmd[0]);
+
+        cleanup_cmd.args(&raw_cmd[1..]);
+
+        tokio::spawn(async move {
+            match cleanup_cmd.status().await {
+                Ok(status) => {
+                    if !status.success() {
+                        error!("Failed to execute cleanup command successfully: {}", status);
+                    }
+                }
+                Err(e) => error!(
+                    "Failed to spawn and execute cleanup command process successfully: {}",
+                    e
+                ),
+            }
+        });
+    }
+
+    fn wait_for_exit_code(token: &CancellationToken, pid: u32) -> i32 {
+        debug!("Waiting for exit code");
+        const FAILED_EXIT_CODE: i32 = -3;
+        loop {
+            match waitpid(Pid::from_raw(pid as pid_t), None) {
+                Ok(WaitStatus::Exited(_, exit_code)) => {
+                    debug!("Exited {}", exit_code);
+                    token.cancel();
+                    return exit_code;
+                }
+                Ok(WaitStatus::Signaled(_, sig, _)) => {
+                    debug!("Signaled: {sig}");
+                    token.cancel();
+                    return (sig as i32) + 128;
+                }
+                Ok(_) => {
+                    continue;
+                }
+                Err(Errno::EINTR) => {
+                    debug!("Failed to wait for pid on EINTR, retrying");
+                    continue;
+                }
+                Err(err) => {
+                    error!("Unable to waitpid on {:#}", err);
+                    token.cancel();
+                    return FAILED_EXIT_CODE;
+                }
+            };
+        }
+    }
+
+    async fn write_to_exit_paths(code: i32, paths: &[PathBuf]) -> Result<()> {
+        let paths = paths.to_owned();
+        let tasks: Vec<_> = paths
+            .into_iter()
+            .map(|path_buf| {
+                let path = path_buf.display().to_string();
+                tokio::spawn(
+                    async move {
+                        let code_str = format!("{code}");
+                        debug!("Creating exit file");
+                        if let Ok(mut fp) = File::create(&path_buf).await {
+                            debug!(code, "Writing exit code to file");
+                            if let Err(e) = fp.write_all(code_str.as_bytes()).await {
+                                error!("Could not write exit file to path: {:#}", e);
+                            }
+                            debug!("Flushing file");
+                            if let Err(e) = fp.flush().await {
+                                error!("Unable to flush {}: {:#}", path_buf.display(), e);
+                            }
+                            debug!("Done writing exit file");
+                        }
+                    }
+                    .instrument(debug_span!("write_exit_path", path)),
+                )
+            })
+            .collect();
+
+        for task in tasks {
+            task.await?;
+        }
+
+        Ok(())
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/config.rs.html b/src/conmonrs/config.rs.html new file mode 100644 index 0000000000..cce1d6200e --- /dev/null +++ b/src/conmonrs/config.rs.html @@ -0,0 +1,747 @@ +config.rs - source

conmonrs/
config.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
//! Configuration related structures
+use anyhow::{bail, Context, Result};
+use clap::{Parser, Subcommand, ValueEnum};
+use getset::{CopyGetters, Getters, Setters};
+use serde::{Deserialize, Serialize};
+use std::{fs, path::PathBuf};
+use strum::{AsRefStr, Display, EnumIter, EnumString, IntoStaticStr};
+
+macro_rules! prefix {
+    () => {
+        "CONMON_"
+    };
+}
+
+#[derive(CopyGetters, Debug, Deserialize, Eq, Getters, Parser, PartialEq, Serialize, Setters)]
+#[serde(rename_all = "kebab-case")]
+#[command(
+    after_help("More info at: https://github.com/containers/conmon-rs"),
+    disable_version_flag(true)
+)]
+/// An OCI container runtime monitor.
+pub struct Config {
+    #[get = "pub"]
+    #[command(subcommand)]
+    /// Possible subcommands.
+    command: Option<Commands>,
+
+    #[get_copy = "pub"]
+    #[arg(
+        default_missing_value("default"),
+        env(concat!(prefix!(), "VERSION")),
+        long("version"),
+        num_args(0..=1),
+        short('v'),
+        value_enum,
+        value_name("VERBOSITY")
+    )]
+    /// Show version information, specify "full" for verbose output.
+    version: Option<Verbosity>,
+
+    #[get = "pub"]
+    #[arg(
+        default_value_t,
+        env(concat!(prefix!(), "LOG_LEVEL")),
+        long("log-level"),
+        short('l'),
+        value_enum,
+        value_name("LEVEL")
+    )]
+    /// The logging level of the conmon server.
+    log_level: LogLevel,
+
+    #[get_copy = "pub"]
+    #[arg(
+        default_value_t,
+        env(concat!(prefix!(), "LOG_DRIVER")),
+        long("log-driver"),
+        short('d'),
+        value_enum,
+        value_name("DRIVER")
+    )]
+    /// The logging driver used by the conmon server.
+    log_driver: LogDriver,
+
+    #[get = "pub"]
+    #[arg(
+        default_value(" "),
+        env(concat!(prefix!(), "RUNTIME")),
+        long("runtime"),
+        short('r'),
+        value_name("RUNTIME")
+    )]
+    /// Binary path of the OCI runtime to use to operate on the containers.
+    runtime: PathBuf,
+
+    #[get = "pub"]
+    #[arg(
+        default_value(" "),
+        env(concat!(prefix!(), "RUNTIME_DIR")),
+        long("runtime-dir"),
+        value_name("RUNTIME_DIR")
+    )]
+    /// Path of the directory for conmonrs to hold files at runtime.
+    runtime_dir: PathBuf,
+
+    #[get = "pub"]
+    #[arg(
+        env(concat!(prefix!(), "RUNTIME_ROOT")),
+        long("runtime-root"),
+        value_name("RUNTIME_ROOT")
+    )]
+    /// Root directory used by the OCI runtime to operate on containers.
+    runtime_root: Option<PathBuf>,
+
+    #[get_copy = "pub"]
+    #[arg(
+        env(concat!(prefix!(), "SKIP_FORK")),
+        long("skip-fork"),
+        value_name("SKIP_FORK")
+    )]
+    /// Do not fork if true.
+    skip_fork: bool,
+
+    // TODO: remove in next major release
+    #[arg(default_value(""), long("cgroup-manager"), short('c'), hide(true))]
+    /// (ignored for backwards compatibility)
+    cgroup_manager: String,
+
+    #[get_copy = "pub"]
+    #[arg(
+        env(concat!(prefix!(), "ENABLE_TRACING")),
+        long("enable-tracing"),
+        short('e'),
+    )]
+    /// Enable OpenTelemetry tracing.
+    enable_tracing: bool,
+
+    #[get = "pub"]
+    #[arg(
+        default_value("http://127.0.0.1:4317"),
+        env(concat!(prefix!(), "TRACING_ENDPOINT")),
+        long("tracing-endpoint"),
+        short('t'),
+        value_name("URL")
+    )]
+    /// OpenTelemetry GRPC endpoint to be used for tracing.
+    tracing_endpoint: String,
+}
+
+#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, Subcommand)]
+/// Possible subcommands.
+pub enum Commands {
+    /// Run pause, which bind mounts selected namespaces to the local file system.
+    ///
+    /// If a namespace is not selected by one of the flags, then it will fallback to the host
+    /// namespace and still create the bind mount to it. All namespaces are mounted to
+    /// /var/run/[ipc,pid,net,user,uts]ns/$POD_ID, whereas the POD_ID is being passed from the
+    /// client.
+    ///
+    /// Tracking of the pause PID will be done by using a file in /var/run/conmonrs/$POD_ID.pid,
+    /// which gets removed together with the mounted namespaces if `conmonrs pause` terminates.
+    ///
+    /// UID and GID mappings are required if unsharing of the user namespace (via `--user`) is
+    /// selected.
+    Pause {
+        #[arg(
+            default_value("/var/run"),
+            env(concat!(prefix!(), "PAUSE_BASE_PATH")),
+            long("base-path"),
+            short('p'),
+            value_name("PATH")
+        )]
+        /// The base path for pinning the namespaces.
+        base_path: PathBuf,
+
+        #[arg(
+            env(concat!(prefix!(), "PAUSE_POD_ID")),
+            long("pod-id"),
+        )]
+        /// The unique pod identifier for referring to the namespaces.
+        pod_id: String,
+
+        #[arg(long("ipc"))]
+        /// Unshare the IPC namespace.
+        ipc: bool,
+
+        #[arg(long("pid"))]
+        /// Unshare the PID namespace.
+        pid: bool,
+
+        #[arg(long("net"))]
+        /// Unshare the network namespace.
+        net: bool,
+
+        #[arg(long("user"))]
+        /// Unshare the user namespace.
+        user: bool,
+
+        #[arg(long("uts"))]
+        /// Unshare the UTS namespace.
+        uts: bool,
+
+        #[arg(long("uid-mappings"), required_if_eq("user", "true"), short('u'))]
+        /// User ID mappings for unsahring the user namespace.
+        /// Allows multiple mappings in the format: "CONTAINER_ID HOST_ID SIZE".
+        uid_mappings: Vec<String>,
+
+        #[arg(long("gid-mappings"), required_if_eq("user", "true"), short('g'))]
+        /// Group ID mappings for unsahring the user namespace.
+        /// Allows multiple mappings in the format: "CONTAINER_ID HOST_ID SIZE".
+        gid_mappings: Vec<String>,
+    },
+}
+
+#[derive(
+    AsRefStr,
+    Clone,
+    Copy,
+    Debug,
+    Deserialize,
+    Display,
+    EnumIter,
+    EnumString,
+    Eq,
+    Hash,
+    IntoStaticStr,
+    PartialEq,
+    Serialize,
+    ValueEnum,
+)]
+#[strum(serialize_all = "lowercase")]
+/// Available log levels.
+pub enum LogLevel {
+    /// Trace level, the most verbose one.
+    Trace,
+
+    /// Debug level, less verbose than trace.
+    Debug,
+
+    /// Info level, less verbose than debug.
+    Info,
+
+    /// Warn level, less verbose than info.
+    Warn,
+
+    /// Error level, showing only errors.
+    Error,
+
+    /// Disable logging.
+    Off,
+}
+
+impl Default for LogLevel {
+    fn default() -> Self {
+        Self::Info
+    }
+}
+
+#[derive(
+    AsRefStr,
+    Clone,
+    Copy,
+    Debug,
+    Deserialize,
+    Display,
+    EnumIter,
+    EnumString,
+    Eq,
+    Hash,
+    IntoStaticStr,
+    PartialEq,
+    Serialize,
+    ValueEnum,
+)]
+#[strum(serialize_all = "lowercase")]
+/// Available verbosity levels.
+pub enum Verbosity {
+    /// The default output verbosity.
+    Default,
+
+    /// The full output verbosity.
+    Full,
+}
+
+#[derive(
+    AsRefStr,
+    Clone,
+    Copy,
+    Debug,
+    Deserialize,
+    Display,
+    EnumIter,
+    EnumString,
+    Eq,
+    Hash,
+    IntoStaticStr,
+    PartialEq,
+    Serialize,
+    ValueEnum,
+)]
+#[strum(serialize_all = "lowercase")]
+/// Available log drivers.
+pub enum LogDriver {
+    /// Use stdout as log driver.
+    Stdout,
+
+    /// Use systemd journald as log driver
+    Systemd,
+}
+
+impl Default for LogDriver {
+    fn default() -> Self {
+        Self::Systemd
+    }
+}
+
+impl Default for Config {
+    fn default() -> Self {
+        Self::parse()
+    }
+}
+
+// Sync with `pkg/client/client.go`
+const SOCKET: &str = "conmon.sock";
+const PIDFILE: &str = "pidfile";
+const FD_SOCKET: &str = "conmon-fd.sock";
+
+impl Config {
+    /// Validate the configuration integrity.
+    pub fn validate(&self) -> Result<()> {
+        const RUNTIME_FLAG: &str = "--runtime";
+        if self
+            .runtime()
+            .to_str()
+            .context(format!("{} does not parse as string", RUNTIME_FLAG))?
+            .trim()
+            .is_empty()
+        {
+            bail!("{} flag not set", RUNTIME_FLAG)
+        }
+
+        const RUNTIME_DIR_FLAG: &str = "--runtime-dir";
+        if self
+            .runtime_dir()
+            .to_str()
+            .context(format!("{} does not parse as string", RUNTIME_DIR_FLAG))?
+            .trim()
+            .is_empty()
+        {
+            bail!("{} flag not set", RUNTIME_DIR_FLAG)
+        }
+
+        if !self.runtime().exists() {
+            bail!(
+                "{} '{}' does not exist",
+                RUNTIME_FLAG,
+                self.runtime().display()
+            )
+        }
+
+        const RUNTIME_ROOT_FLAG: &str = "--runtime-root";
+        if !self.runtime_dir().exists() {
+            fs::create_dir_all(self.runtime_dir())?;
+        }
+
+        if let Some(rr) = self.runtime_root() {
+            if !rr.exists() {
+                fs::create_dir_all(rr)?;
+            } else if !rr.is_dir() {
+                bail!("{} '{}' does not exist", RUNTIME_ROOT_FLAG, rr.display())
+            }
+        }
+
+        if self.socket().exists() {
+            fs::remove_file(self.socket())?;
+        }
+
+        if self.fd_socket().exists() {
+            fs::remove_file(self.fd_socket())?;
+        }
+
+        Ok(())
+    }
+    pub fn socket(&self) -> PathBuf {
+        self.runtime_dir().join(SOCKET)
+    }
+    pub fn conmon_pidfile(&self) -> PathBuf {
+        self.runtime_dir().join(PIDFILE)
+    }
+    pub fn fd_socket(&self) -> PathBuf {
+        self.runtime_dir().join(FD_SOCKET)
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/container_io.rs.html b/src/conmonrs/container_io.rs.html new file mode 100644 index 0000000000..eb334f8259 --- /dev/null +++ b/src/conmonrs/container_io.rs.html @@ -0,0 +1,705 @@ +container_io.rs - source

conmonrs/
container_io.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
use crate::{
+    attach::SharedContainerAttach, container_log::SharedContainerLog, streams::Streams,
+    terminal::Terminal,
+};
+use anyhow::{bail, Context, Result};
+use getset::{Getters, MutGetters};
+use nix::errno::Errno;
+use std::{
+    fmt,
+    path::{Path, PathBuf},
+    sync::Arc,
+};
+use strum::AsRefStr;
+use tempfile::Builder;
+use tokio::{
+    io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt},
+    select,
+    sync::{
+        mpsc::{UnboundedReceiver, UnboundedSender},
+        RwLock,
+    },
+    time::{self, Instant},
+};
+use tokio_util::sync::CancellationToken;
+use tracing::{debug, error};
+
+/// A shared container IO abstraction.
+#[derive(Debug, Clone)]
+pub struct SharedContainerIO(Arc<RwLock<ContainerIO>>);
+
+impl SharedContainerIO {
+    /// Create a new SharedContainerIO instance from the provided ContainerIO.
+    pub fn new(io: ContainerIO) -> Self {
+        Self(Arc::new(RwLock::new(io)))
+    }
+
+    pub async fn read_all_with_timeout(
+        &self,
+        timeout: Option<Instant>,
+    ) -> Result<(Vec<u8>, Vec<u8>, bool)> {
+        self.0.write().await.read_all_with_timeout(timeout).await
+    }
+
+    /// Resize the shared container IO to the provided with and height.
+    /// Errors in case of no terminal containers.
+    pub async fn resize(&self, width: u16, height: u16) -> Result<()> {
+        match self.0.read().await.typ() {
+            ContainerIOType::Terminal(t) => t.resize(width, height).context("resize terminal"),
+            ContainerIOType::Streams(_) => bail!("container has no terminal"),
+        }
+    }
+
+    /// Retrieve the underlying SharedContainerLog instance.
+    pub async fn logger(&self) -> SharedContainerLog {
+        self.0.read().await.logger().clone()
+    }
+
+    /// Retrieve the underlying SharedContainerAttach instance.
+    pub async fn attach(&self) -> SharedContainerAttach {
+        self.0.read().await.attach().clone()
+    }
+}
+
+#[derive(Debug, Getters, MutGetters)]
+pub struct ContainerIO {
+    #[getset(get = "pub", get_mut = "pub")]
+    typ: ContainerIOType,
+
+    #[getset(get = "pub")]
+    logger: SharedContainerLog,
+
+    #[getset(get = "pub")]
+    attach: SharedContainerAttach,
+}
+
+#[derive(Debug)]
+/// A generic abstraction over various container input-output types
+pub enum ContainerIOType {
+    Terminal(Terminal),
+    Streams(Streams),
+}
+
+/// A message to be sent through the ContainerIO.
+#[derive(Clone, Debug, PartialEq, Eq)]
+pub enum Message {
+    Data(Vec<u8>, Pipe),
+    Done,
+}
+
+#[derive(AsRefStr, Clone, Copy, Debug, PartialEq, Eq)]
+#[strum(serialize_all = "lowercase")]
+/// Available pipe types.
+pub enum Pipe {
+    /// Standard output.
+    StdOut,
+
+    /// Standard error.
+    StdErr,
+}
+
+impl fmt::Display for Pipe {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "{}", self.as_ref())
+    }
+}
+
+impl From<Terminal> for ContainerIOType {
+    fn from(c: Terminal) -> Self {
+        Self::Terminal(c)
+    }
+}
+
+impl From<Streams> for ContainerIOType {
+    fn from(i: Streams) -> Self {
+        Self::Streams(i)
+    }
+}
+
+impl ContainerIO {
+    const MAX_STDIO_STREAM_SIZE: usize = 16 * 1024 * 1024;
+
+    /// Create a new container IO instance.
+    pub fn new(terminal: bool, logger: SharedContainerLog) -> Result<Self> {
+        let logger_clone = logger.clone();
+        let attach = SharedContainerAttach::default();
+        let attach_clone = attach.clone();
+        let typ = if terminal {
+            Terminal::new(logger_clone, attach_clone)
+                .context("create new terminal")?
+                .into()
+        } else {
+            Streams::new(logger_clone, attach_clone)
+                .context("create new streams")?
+                .into()
+        };
+        Ok(Self {
+            typ,
+            logger,
+            attach,
+        })
+    }
+
+    /// Generate a the temp file name without creating the file.
+    pub fn temp_file_name(directory: Option<&Path>, prefix: &str, suffix: &str) -> Result<PathBuf> {
+        let mut file = Builder::new();
+        file.prefix(prefix).suffix(suffix).rand_bytes(7);
+        let file = match directory {
+            Some(d) => file.tempfile_in(d),
+            None => file.tempfile(),
+        }
+        .context("create tempfile")?;
+
+        let path: PathBuf = file.path().into();
+        drop(file);
+        Ok(path)
+    }
+
+    pub async fn read_all_with_timeout(
+        &mut self,
+        time_to_timeout: Option<Instant>,
+    ) -> Result<(Vec<u8>, Vec<u8>, bool)> {
+        match self.typ_mut() {
+            ContainerIOType::Terminal(t) => {
+                if let Some(message_rx) = t.message_rx_mut() {
+                    let (stdout, timed_out) =
+                        Self::read_stream_with_timeout(time_to_timeout, message_rx).await;
+                    Ok((stdout, vec![], timed_out))
+                } else {
+                    bail!("read_all_with_timeout called before message_rx was registered");
+                }
+            }
+            ContainerIOType::Streams(s) => {
+                let stdout_rx = &mut s.message_rx_stdout;
+                let stderr_rx = &mut s.message_rx_stderr;
+                let (stdout, stderr) = tokio::join!(
+                    Self::read_stream_with_timeout(time_to_timeout, stdout_rx),
+                    Self::read_stream_with_timeout(time_to_timeout, stderr_rx),
+                );
+                let timed_out = stdout.1 || stderr.1;
+                Ok((stdout.0, stderr.0, timed_out))
+            }
+        }
+    }
+
+    async fn read_stream_with_timeout(
+        time_to_timeout: Option<Instant>,
+        receiver: &mut UnboundedReceiver<Message>,
+    ) -> (Vec<u8>, bool) {
+        let mut stdio = vec![];
+        let mut timed_out = false;
+        loop {
+            let msg = if let Some(time_to_timeout) = time_to_timeout {
+                {
+                    match time::timeout_at(time_to_timeout, receiver.recv()).await {
+                        Ok(Some(msg)) => msg,
+                        Err(_) => {
+                            timed_out = true;
+                            Message::Done
+                        }
+                        Ok(None) => unreachable!(),
+                    }
+                }
+            } else {
+                {
+                    match receiver.recv().await {
+                        Some(msg) => msg,
+                        None => Message::Done,
+                    }
+                }
+            };
+            match msg {
+                Message::Data(data, _) => {
+                    if let Some(future_len) = stdio.len().checked_add(data.len()) {
+                        if future_len < Self::MAX_STDIO_STREAM_SIZE {
+                            stdio.extend(data)
+                        } else {
+                            break;
+                        }
+                    } else {
+                        break;
+                    }
+                }
+                Message::Done => break,
+            }
+        }
+        (stdio, timed_out)
+    }
+
+    pub async fn read_loop<T>(
+        mut reader: T,
+        pipe: Pipe,
+        logger: SharedContainerLog,
+        message_tx: UnboundedSender<Message>,
+        mut attach: SharedContainerAttach,
+    ) -> Result<()>
+    where
+        T: AsyncRead + Unpin,
+    {
+        let mut buf = vec![0; 1024];
+
+        loop {
+            match reader.read(&mut buf).await {
+                Ok(0) => {
+                    debug!("Nothing more to read");
+
+                    attach
+                        .write(Message::Done)
+                        .await
+                        .context("write to attach endpoints")?;
+
+                    if !message_tx.is_closed() {
+                        message_tx
+                            .send(Message::Done)
+                            .context("send done message")?;
+                    }
+
+                    return Ok(());
+                }
+
+                Ok(n) => {
+                    debug!("Read {} bytes", n);
+                    let data = &buf[..n];
+
+                    let mut locked_logger = logger.write().await;
+                    locked_logger
+                        .write(pipe, data)
+                        .await
+                        .context("write to log file")?;
+
+                    attach
+                        .write(Message::Data(data.into(), pipe))
+                        .await
+                        .context("write to attach endpoints")?;
+
+                    if !message_tx.is_closed() {
+                        message_tx
+                            .send(Message::Data(data.into(), pipe))
+                            .context("send data message")?;
+                    }
+                }
+
+                Err(e) => match Errno::from_i32(e.raw_os_error().context("get OS error")?) {
+                    Errno::EIO => {
+                        debug!("Stopping read loop");
+                        attach
+                            .write(Message::Done)
+                            .await
+                            .context("write to attach endpoints")?;
+
+                        if !message_tx.is_closed() {
+                            message_tx
+                                .send(Message::Done)
+                                .context("send done message")?;
+                        }
+                        return Ok(());
+                    }
+                    Errno::EBADF => bail!(e),
+                    Errno::EAGAIN => continue,
+                    _ => error!(
+                        "Unable to read from file descriptor: {} {}",
+                        e,
+                        e.raw_os_error().context("get OS error")?
+                    ),
+                },
+            }
+        }
+    }
+
+    pub async fn read_loop_stdin(
+        mut writer: impl AsyncWrite + Unpin,
+        mut attach: SharedContainerAttach,
+        token: CancellationToken,
+    ) -> Result<()> {
+        loop {
+            // While we're not processing input from a caller, and logically should be able to
+            // catch a Message::Done here, it doesn't quite work that way.
+            // Every child has an io instance that starts this function, though not
+            // all children have input to process. If there is no input from the child
+            // then we leak this function, causing memory to balloon over time.
+            // Thus, we need the select statement and token.
+            select! {
+                res = attach.read() => {
+                    match res {
+                        Ok(data) => {
+                            Self::handle_stdin_data(&data, &mut writer).await?;
+                        }
+                        Err(e) => {
+                            return Err(e).context("read from stdin attach endpoints");
+                        }
+                    }
+                }
+                _ = token.cancelled() => {
+                    // Closing immediately may race with outstanding data on stdin for short lived
+                    // containers. This means we try to read once again.
+                    if let Ok(data) = attach.try_read() {
+                        Self::handle_stdin_data(&data, &mut writer).await?;
+                    }
+                    return Ok(());
+                }
+            }
+        }
+    }
+
+    async fn handle_stdin_data(data: &[u8], mut writer: impl AsyncWrite + Unpin) -> Result<()> {
+        debug!("Got {} attach bytes", data.len());
+
+        writer
+            .write_all(data)
+            .await
+            .context("write attach stdin to stream")
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/container_log/cri.rs.html b/src/conmonrs/container_log/cri.rs.html new file mode 100644 index 0000000000..c9264c1065 --- /dev/null +++ b/src/conmonrs/container_log/cri.rs.html @@ -0,0 +1,603 @@ +cri.rs - source

conmonrs/container_log/
cri.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
//! File logging functionalities.
+
+use crate::container_io::Pipe;
+use anyhow::{Context, Result};
+use getset::{CopyGetters, Getters, Setters};
+use memchr::memchr;
+use std::path::{Path, PathBuf};
+use tokio::{
+    fs::{File, OpenOptions},
+    io::{AsyncBufRead, AsyncBufReadExt, AsyncWriteExt, BufReader, BufWriter},
+};
+use tracing::{debug, trace};
+use tz::{DateTime, TimeZone};
+
+#[derive(Debug, CopyGetters, Getters, Setters)]
+/// The main structure used for container log handling.
+pub struct CriLogger {
+    #[getset(get)]
+    /// Path to the file on disk.
+    path: PathBuf,
+
+    #[getset(set)]
+    /// Open file handle of the `path`.
+    file: Option<BufWriter<File>>,
+
+    #[getset(get_copy)]
+    /// Maximum allowed log size in bytes.
+    max_log_size: Option<usize>,
+
+    #[getset(get_copy, set)]
+    /// Current bytes written to the log file.
+    bytes_written: usize,
+}
+
+impl CriLogger {
+    const ERR_UNINITIALIZED: &'static str = "logger not initialized";
+
+    /// Create a new file logger instance.
+    pub fn new<T: AsRef<Path>>(path: T, max_log_size: Option<usize>) -> Result<CriLogger> {
+        Ok(Self {
+            path: path.as_ref().into(),
+            file: None,
+            max_log_size,
+            bytes_written: 0,
+        })
+    }
+
+    /// Asynchronously initialize the CRI logger.
+    pub async fn init(&mut self) -> Result<()> {
+        debug!("Initializing CRI logger in path {}", self.path().display());
+        self.set_file(Self::open(self.path()).await?.into());
+        Ok(())
+    }
+
+    /// Write the contents of the provided reader into the file logger.
+    pub async fn write<T>(&mut self, pipe: Pipe, bytes: T) -> Result<()>
+    where
+        T: AsyncBufRead + Unpin,
+    {
+        let mut reader = BufReader::new(bytes);
+
+        // Get the RFC3339 timestamp
+        let local_tz = TimeZone::local().context("get local timezone")?;
+        let timestamp = DateTime::now(local_tz.as_ref())
+            .context("get local datetime")?
+            .to_string();
+        let min_log_len = timestamp
+            .len()
+            .checked_add(10) // len of " stdout " + "P "
+            .context("min log line len exceeds usize")?;
+
+        loop {
+            // Read the line
+            let mut line_buf = Vec::with_capacity(min_log_len);
+            let (read, partial) = Self::read_line(&mut reader, &mut line_buf).await?;
+
+            if read == 0 {
+                break;
+            }
+
+            let mut bytes_to_be_written = read + min_log_len;
+            if partial {
+                bytes_to_be_written += 1; // the added newline
+            }
+
+            let mut new_bytes_written = self
+                .bytes_written()
+                .checked_add(bytes_to_be_written)
+                .unwrap_or_default();
+
+            if new_bytes_written == 0 {
+                self.reopen()
+                    .await
+                    .context("reopen logs because of overflowing bytes_written")?;
+            }
+
+            if let Some(max_log_size) = self.max_log_size() {
+                trace!(
+                    "Verifying log size: max_log_size = {}, bytes_written = {},  bytes_to_be_written = {}, new_bytes_written = {}", 
+                    max_log_size, self.bytes_written(),  bytes_to_be_written, new_bytes_written,
+                );
+
+                if new_bytes_written > max_log_size {
+                    new_bytes_written = 0;
+                    self.reopen()
+                        .await
+                        .context("reopen logs because of exceeded size")?;
+                }
+            }
+
+            // Write the timestamp
+            let file = self.file.as_mut().context(Self::ERR_UNINITIALIZED)?;
+            file.write_all(timestamp.as_bytes()).await?;
+
+            // Add the pipe name
+            match pipe {
+                Pipe::StdOut => file.write_all(b" stdout ").await,
+                Pipe::StdErr => file.write_all(b" stderr ").await,
+            }?;
+
+            // Output log tag for partial or newline
+            if partial {
+                file.write_all(b"P ").await?;
+            } else {
+                file.write_all(b"F ").await?;
+            }
+
+            // Output the actual contents
+            file.write_all(&line_buf).await?;
+
+            // Output a newline for partial
+            if partial {
+                file.write_all(b"\n").await?;
+            }
+
+            self.set_bytes_written(new_bytes_written);
+            trace!("Wrote log line of length {}", bytes_to_be_written);
+        }
+
+        self.flush().await
+    }
+
+    /// Reopen the container log file.
+    pub async fn reopen(&mut self) -> Result<()> {
+        debug!("Reopen container log {}", self.path().display());
+        self.file
+            .as_mut()
+            .context(Self::ERR_UNINITIALIZED)?
+            .get_ref()
+            .sync_all()
+            .await?;
+        self.init().await
+    }
+
+    /// Ensures that all content is written to disk.
+    pub async fn flush(&mut self) -> Result<()> {
+        self.file
+            .as_mut()
+            .context(Self::ERR_UNINITIALIZED)?
+            .flush()
+            .await
+            .context("flush file writer")
+    }
+
+    /// Open the provided path with the default options.
+    async fn open<T: AsRef<Path>>(path: T) -> Result<BufWriter<File>> {
+        Ok(BufWriter::new(
+            OpenOptions::new()
+                .create(true)
+                .read(true)
+                .truncate(true)
+                .write(true)
+                .mode(0o600)
+                .open(&path)
+                .await
+                .context(format!("open log file path '{}'", path.as_ref().display()))?,
+        ))
+    }
+
+    async fn read_line<T>(r: &mut BufReader<T>, buf: &mut Vec<u8>) -> Result<(usize, bool)>
+    where
+        T: AsyncBufRead + Unpin,
+    {
+        let (partial, read) = {
+            let available = r.fill_buf().await?;
+            match memchr(b'\n', available) {
+                Some(i) => {
+                    buf.extend_from_slice(&available[..=i]);
+                    (false, i + 1)
+                }
+                None => {
+                    buf.extend_from_slice(available);
+                    (true, available.len())
+                }
+            }
+        };
+        r.consume(read);
+        Ok((read, partial))
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use std::fs;
+    use tempfile::NamedTempFile;
+    use time::{format_description::well_known::Rfc3339, OffsetDateTime};
+
+    #[tokio::test]
+    async fn write_stdout_success() -> Result<()> {
+        let buffer = "this is a line\nand another line\n";
+        let bytes = buffer.as_bytes();
+
+        let file = NamedTempFile::new()?;
+        let path = file.path();
+        let mut sut = CriLogger::new(path, None)?;
+        sut.init().await?;
+
+        sut.write(Pipe::StdOut, bytes).await?;
+
+        let res = fs::read_to_string(path)?;
+        assert!(res.contains(" stdout F this is a line"));
+        assert!(res.contains(" stdout F and another line"));
+
+        let timestamp = res.split_whitespace().next().context("no timestamp")?;
+        OffsetDateTime::parse(timestamp, &Rfc3339).context("unable to parse timestamp")?;
+        Ok(())
+    }
+
+    #[tokio::test]
+    async fn write_stdout_stderr_success() -> Result<()> {
+        let buffer = "a\nb\nc\n";
+        let bytes1 = buffer.as_bytes();
+        let bytes2 = buffer.as_bytes();
+
+        let file = NamedTempFile::new()?;
+        let path = file.path();
+        let mut sut = CriLogger::new(path, None)?;
+        sut.init().await?;
+
+        sut.write(Pipe::StdOut, bytes1).await?;
+        sut.write(Pipe::StdErr, bytes2).await?;
+
+        let res = fs::read_to_string(path)?;
+        assert!(res.contains(" stdout F a"));
+        assert!(res.contains(" stdout F b"));
+        assert!(res.contains(" stdout F c"));
+        assert!(res.contains(" stderr F a"));
+        assert!(res.contains(" stderr F b"));
+        assert!(res.contains(" stderr F c"));
+        Ok(())
+    }
+
+    #[tokio::test]
+    async fn write_reopen() -> Result<()> {
+        let buffer = "a\nb\nc\nd\ne\nf\n";
+        let bytes = buffer.as_bytes();
+
+        let file = NamedTempFile::new()?;
+        let path = file.path();
+        let mut sut = CriLogger::new(path, Some(150))?;
+        sut.init().await?;
+
+        sut.write(Pipe::StdOut, bytes).await?;
+
+        let res = fs::read_to_string(path)?;
+        assert!(!res.contains(" stdout F a"));
+        assert!(!res.contains(" stdout F b"));
+        assert!(!res.contains(" stdout F c"));
+        assert!(res.contains(" stdout F d"));
+        assert!(res.contains(" stdout F e"));
+        assert!(res.contains(" stdout F f"));
+        Ok(())
+    }
+
+    #[tokio::test]
+    async fn write_multi_reopen() -> Result<()> {
+        let file = NamedTempFile::new()?;
+        let path = file.path();
+        let mut sut = CriLogger::new(path, Some(150))?;
+        sut.init().await?;
+
+        sut.write(Pipe::StdOut, "abcd\nabcd\nabcd\n".as_bytes())
+            .await?;
+        sut.write(Pipe::StdErr, "a\nb\nc\n".as_bytes()).await?;
+
+        let res = fs::read_to_string(path)?;
+        assert!(!res.contains(" stdout "));
+        assert!(res.contains(" stderr F a"));
+        assert!(res.contains(" stderr F b"));
+        assert!(res.contains(" stderr F c"));
+        Ok(())
+    }
+
+    #[tokio::test]
+    async fn init_failure() -> Result<()> {
+        let mut sut = CriLogger::new("/file/does/not/exist", None)?;
+        assert!(sut.init().await.is_err());
+        Ok(())
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/container_log/journald.rs.html b/src/conmonrs/container_log/journald.rs.html new file mode 100644 index 0000000000..a0bf64b583 --- /dev/null +++ b/src/conmonrs/container_log/journald.rs.html @@ -0,0 +1,167 @@ +journald.rs - source

conmonrs/container_log/
journald.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
use crate::{container_io::Pipe, journal::Journal};
+use anyhow::{Context, Result};
+use std::io::Write;
+use tokio::io::{AsyncBufRead, AsyncBufReadExt};
+use tracing::debug;
+
+#[derive(Debug)]
+pub struct JournaldLogger;
+
+impl JournaldLogger {
+    pub fn new(_: Option<usize>) -> Result<Self> {
+        Ok(Self)
+    }
+
+    pub async fn init(&mut self) -> Result<()> {
+        debug!("Initializing journald logger");
+        Ok(())
+    }
+
+    pub async fn write<T>(&mut self, _: Pipe, mut bytes: T) -> Result<()>
+    where
+        T: AsyncBufRead + Unpin,
+    {
+        let mut line_buf = String::new();
+        while bytes.read_line(&mut line_buf).await? > 0 {
+            Journal
+                .write_all(line_buf.as_bytes())
+                .context("write to journal")?;
+            line_buf.clear();
+        }
+
+        Ok(())
+    }
+
+    pub async fn reopen(&mut self) -> Result<()> {
+        debug!("Reopen journald log");
+        Ok(())
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use std::io::Cursor;
+
+    #[tokio::test]
+    async fn test_journald_logger_new() {
+        JournaldLogger::new(Some(1000)).unwrap();
+    }
+
+    #[tokio::test]
+    async fn test_journald_logger_init() {
+        let mut logger = JournaldLogger::new(Some(1000)).unwrap();
+        assert!(logger.init().await.is_ok());
+    }
+
+    #[tokio::test]
+    async fn test_journald_logger_write() {
+        let mut logger = JournaldLogger::new(Some(1000)).unwrap();
+        logger.init().await.unwrap();
+
+        let cursor = Cursor::new(b"Test log message\n".to_vec());
+        assert!(logger.write(Pipe::StdOut, cursor).await.is_ok());
+
+        // Verifying the actual log message in Journald might require additional setup or permissions.
+    }
+
+    #[tokio::test]
+    async fn test_journald_logger_reopen() {
+        let mut logger = JournaldLogger::new(Some(1000)).unwrap();
+        logger.init().await.unwrap();
+
+        let cursor = Cursor::new(b"Test log message before reopen\n".to_vec());
+        assert!(logger.write(Pipe::StdOut, cursor).await.is_ok());
+
+        assert!(logger.reopen().await.is_ok());
+
+        let cursor = Cursor::new(b"Test log message after reopen\n".to_vec());
+        assert!(logger.write(Pipe::StdOut, cursor).await.is_ok());
+
+        // As with the write test, verifying the actual log messages in Journald might require additional setup or permissions.
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/container_log/json.rs.html b/src/conmonrs/container_log/json.rs.html new file mode 100644 index 0000000000..40202534e9 --- /dev/null +++ b/src/conmonrs/container_log/json.rs.html @@ -0,0 +1,359 @@ +json.rs - source

conmonrs/container_log/
json.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
use crate::container_io::Pipe;
+use anyhow::{Context, Result};
+use getset::{CopyGetters, Getters, Setters};
+use serde_json::json;
+use std::path::{Path, PathBuf};
+use tokio::{
+    fs::{File, OpenOptions},
+    io::{AsyncBufRead, AsyncBufReadExt, AsyncWriteExt, BufReader, BufWriter},
+};
+use tracing::debug;
+
+#[derive(Debug, CopyGetters, Getters, Setters)]
+pub struct JsonLogger {
+    #[getset(get)]
+    path: PathBuf,
+
+    #[getset(set)]
+    file: Option<BufWriter<File>>,
+
+    #[getset(get_copy)]
+    max_log_size: Option<usize>,
+
+    #[getset(get_copy, set)]
+    bytes_written: usize,
+}
+
+impl JsonLogger {
+    const ERR_UNINITIALIZED: &'static str = "logger not initialized";
+
+    pub fn new<T: AsRef<Path>>(path: T, max_log_size: Option<usize>) -> Result<JsonLogger> {
+        Ok(Self {
+            path: path.as_ref().into(),
+            file: None,
+            max_log_size,
+            bytes_written: 0,
+        })
+    }
+
+    pub async fn init(&mut self) -> Result<()> {
+        debug!("Initializing JSON logger in path {}", self.path().display());
+        self.set_file(Self::open(self.path()).await?.into());
+        Ok(())
+    }
+
+    pub async fn write<T>(&mut self, pipe: Pipe, bytes: T) -> Result<()>
+    where
+        T: AsyncBufRead + Unpin,
+    {
+        let mut reader = BufReader::new(bytes);
+        let mut line_buf = Vec::new();
+
+        while reader.read_until(b'\n', &mut line_buf).await? > 0 {
+            let log_entry = json!({
+                "timestamp": format!("{:?}", std::time::SystemTime::now()),
+                "pipe": match pipe {
+                    Pipe::StdOut => "stdout",
+                    Pipe::StdErr => "stderr",
+                },
+                "message": String::from_utf8_lossy(&line_buf).trim().to_string()
+            });
+
+            let log_str = log_entry.to_string();
+            let bytes = log_str.as_bytes();
+            self.bytes_written += bytes.len();
+
+            if let Some(max_size) = self.max_log_size {
+                if self.bytes_written > max_size {
+                    self.reopen().await?;
+                    self.bytes_written = 0;
+                }
+            }
+
+            let file = self.file.as_mut().context(Self::ERR_UNINITIALIZED)?;
+            file.write_all(bytes).await?;
+            file.write_all(b"\n").await?;
+            self.flush().await?;
+            line_buf.clear();
+        }
+
+        Ok(())
+    }
+
+    pub async fn reopen(&mut self) -> Result<()> {
+        debug!("Reopen JSON log {}", self.path().display());
+        self.file
+            .as_mut()
+            .context(Self::ERR_UNINITIALIZED)?
+            .get_ref()
+            .sync_all()
+            .await?;
+        self.init().await
+    }
+
+    pub async fn flush(&mut self) -> Result<()> {
+        self.file
+            .as_mut()
+            .context(Self::ERR_UNINITIALIZED)?
+            .flush()
+            .await
+            .context("flush file writer")
+    }
+
+    async fn open<T: AsRef<Path>>(path: T) -> Result<BufWriter<File>> {
+        Ok(BufWriter::new(
+            OpenOptions::new()
+                .create(true)
+                .read(true)
+                .truncate(true)
+                .write(true)
+                .open(&path)
+                .await
+                .context(format!("open log file path '{}'", path.as_ref().display()))?,
+        ))
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use std::io::Cursor;
+    use tokio::io::AsyncReadExt;
+
+    #[tokio::test]
+    async fn test_json_logger_new() {
+        let logger = JsonLogger::new("/tmp/test.log", Some(1000)).unwrap();
+        assert_eq!(logger.path().to_str().unwrap(), "/tmp/test.log");
+        assert_eq!(logger.max_log_size().unwrap(), 1000);
+    }
+
+    #[tokio::test]
+    async fn test_json_logger_init() {
+        let mut logger = JsonLogger::new("/tmp/test_init.log", Some(1000)).unwrap();
+        logger.init().await.unwrap();
+        assert!(logger.file.is_some());
+    }
+
+    #[tokio::test]
+    async fn test_json_logger_write() {
+        let mut logger = JsonLogger::new("/tmp/test_write.log", Some(1000)).unwrap();
+        logger.init().await.unwrap();
+
+        let cursor = Cursor::new(b"Test log message\n".to_vec());
+        logger.write(Pipe::StdOut, cursor).await.unwrap();
+
+        // Read back from the file
+        let mut file = File::open("/tmp/test_write.log").await.unwrap();
+        let mut contents = String::new();
+        file.read_to_string(&mut contents).await.unwrap();
+
+        // Check if the file contains the logged message
+        assert!(contents.contains("Test log message"));
+    }
+
+    #[tokio::test]
+    async fn test_json_logger_reopen() {
+        let mut logger = JsonLogger::new("/tmp/test_reopen.log", Some(1000)).unwrap();
+        logger.init().await.unwrap();
+
+        // Write to the file
+        let cursor = Cursor::new(b"Test log message before reopen\n".to_vec());
+        logger.write(Pipe::StdOut, cursor).await.unwrap();
+
+        // Reopen the file
+        logger.reopen().await.unwrap();
+
+        // Write to the file again
+        let cursor = Cursor::new(b"Test log message after reopen\n".to_vec());
+        logger.write(Pipe::StdOut, cursor).await.unwrap();
+
+        // Read back from the file
+        let mut file = File::open("/tmp/test_reopen.log").await.unwrap();
+        let mut contents = String::new();
+        file.read_to_string(&mut contents).await.unwrap();
+
+        // Check if the file contains the logged message
+        assert!(contents.contains("Test log message after reopen"));
+        assert!(!contents.contains("Test log message before reopen"));
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/container_log/mod.rs.html b/src/conmonrs/container_log/mod.rs.html new file mode 100644 index 0000000000..47d9b020e6 --- /dev/null +++ b/src/conmonrs/container_log/mod.rs.html @@ -0,0 +1,301 @@ +mod.rs - source

conmonrs/container_log/
mod.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
mod cri;
+mod journald;
+mod json;
+
+use crate::{
+    container_io::Pipe, container_log::cri::CriLogger, container_log::journald::JournaldLogger,
+    container_log::json::JsonLogger,
+};
+use anyhow::Result;
+use capnp::struct_list::Reader;
+use conmon_common::conmon_capnp::conmon::log_driver::{Owned, Type};
+use futures::{future::join_all, FutureExt};
+use std::sync::Arc;
+use tokio::{io::AsyncBufRead, sync::RwLock};
+
+pub type SharedContainerLog = Arc<RwLock<ContainerLog>>;
+
+#[derive(Debug, Default)]
+pub struct ContainerLog {
+    drivers: Vec<LogDriver>,
+}
+
+#[derive(Debug)]
+enum LogDriver {
+    ContainerRuntimeInterface(CriLogger),
+    Journald(JournaldLogger),
+    Json(JsonLogger),
+}
+
+impl ContainerLog {
+    /// Create a new default SharedContainerLog.
+    pub fn new() -> SharedContainerLog {
+        Arc::new(RwLock::new(Self::default()))
+    }
+
+    /// Create a new SharedContainerLog from an owned reader.
+    pub fn from(reader: Reader<Owned>) -> Result<SharedContainerLog> {
+        let drivers = reader
+            .iter()
+            .map(|x| -> Result<_> {
+                match x.get_type()? {
+                    Type::ContainerRuntimeInterface => {
+                        Ok(LogDriver::ContainerRuntimeInterface(CriLogger::new(
+                            x.get_path()?.to_str()?,
+                            if x.get_max_size() > 0 {
+                                Some(x.get_max_size() as usize)
+                            } else {
+                                None
+                            },
+                        )?))
+                    }
+                    Type::Json => Ok(LogDriver::Json(JsonLogger::new(
+                        x.get_path()?.to_str()?,
+                        if x.get_max_size() > 0 {
+                            Some(x.get_max_size() as usize)
+                        } else {
+                            None
+                        },
+                    )?)),
+                    Type::Journald => Ok(LogDriver::Journald(JournaldLogger::new(
+                        if x.get_max_size() > 0 {
+                            Some(x.get_max_size() as usize)
+                        } else {
+                            None
+                        },
+                    )?)),
+                }
+            })
+            .collect::<Result<Vec<_>>>()?;
+        Ok(Arc::new(RwLock::new(Self { drivers })))
+    }
+
+    /// Asynchronously initialize all loggers.
+    pub async fn init(&mut self) -> Result<()> {
+        join_all(
+            self.drivers
+                .iter_mut()
+                .map(|x| match x {
+                    LogDriver::ContainerRuntimeInterface(ref mut cri_logger) => {
+                        cri_logger.init().boxed()
+                    }
+                    LogDriver::Json(ref mut json_logger) => json_logger.init().boxed(),
+                    LogDriver::Journald(ref mut journald_logger) => journald_logger.init().boxed(),
+                })
+                .collect::<Vec<_>>(),
+        )
+        .await
+        .into_iter()
+        .collect::<Result<Vec<_>>>()?;
+        Ok(())
+    }
+
+    /// Reopen the container logs.
+    pub async fn reopen(&mut self) -> Result<()> {
+        join_all(
+            self.drivers
+                .iter_mut()
+                .map(|x| match x {
+                    LogDriver::ContainerRuntimeInterface(ref mut cri_logger) => {
+                        cri_logger.reopen().boxed()
+                    }
+                    LogDriver::Json(ref mut json_logger) => json_logger.reopen().boxed(),
+                    LogDriver::Journald(ref mut journald_logger) => {
+                        journald_logger.reopen().boxed()
+                    }
+                })
+                .collect::<Vec<_>>(),
+        )
+        .await
+        .into_iter()
+        .collect::<Result<Vec<_>>>()?;
+        Ok(())
+    }
+
+    /// Write the contents of the provided reader into all loggers.
+    pub async fn write<T>(&mut self, pipe: Pipe, bytes: T) -> Result<()>
+    where
+        T: AsyncBufRead + Unpin + Clone,
+    {
+        let futures = self
+            .drivers
+            .iter_mut()
+            .map(|x| {
+                async fn box_future<T: AsyncBufRead + Unpin + Clone>(
+                    logger: &mut LogDriver,
+                    pipe: Pipe,
+                    bytes: T,
+                ) -> Result<()> {
+                    match logger {
+                        LogDriver::ContainerRuntimeInterface(cri_logger) => {
+                            cri_logger.write(pipe, bytes).await
+                        }
+                        LogDriver::Journald(journald_logger) => {
+                            journald_logger.write(pipe, bytes).await
+                        }
+                        LogDriver::Json(json_logger) => json_logger.write(pipe, bytes).await,
+                    }
+                }
+
+                box_future(x, pipe, bytes.clone())
+            })
+            .collect::<Vec<_>>();
+
+        join_all(futures)
+            .await
+            .into_iter()
+            .collect::<Result<Vec<_>>>()?;
+        Ok(())
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/fd_socket.rs.html b/src/conmonrs/fd_socket.rs.html new file mode 100644 index 0000000000..7822200f35 --- /dev/null +++ b/src/conmonrs/fd_socket.rs.html @@ -0,0 +1,523 @@ +fd_socket.rs - source

conmonrs/
fd_socket.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
//! File descriptor passing via UDS (unix socket).
+//!
+//! ## File descriptor socket protocol
+//!
+//! Connect via a unix `SOCK_SEQPACKET` socket.
+//!
+//! **Request:**
+//! Pass file descriptors via `SCM_RIGHTS` ancillary message.
+//!
+//! `request_id: u32`: Request id selected by client
+//! `num_fds: u8`: Number of file descriptors
+//!
+//! ```txt
+//! u64: (request_id << 32) | num_fds
+//! ```
+//!
+//! **Response:**
+//! ```txt
+//! u64: (request_id << 32) | num_fds
+//! u64: slot for file descriptor 0
+//! u64: slot for file descriptor 1
+//! ...
+//! u64: slot for file descriptor num_fds-1
+//! ```
+//!
+//! On error `num_fds` will be set to 0xffff_ffff and the rest of the message
+//! is an error message string.
+//! ```txt
+//! u64: (request_id << 32) | 0xffff_ffff
+//! ...: error message
+//! ```
+//!
+//! **Close file descriptors:**
+//! Received file descriptors will be closed on disconnect
+//! or with an empty request (`request_id` = 0 and `num_fds` = 0).
+//!
+//! An empty request does **not** receive a response.
+
+use crate::listener::{Listener, SeqpacketListener};
+use anyhow::Result;
+use std::{
+    collections::{hash_map, HashMap},
+    io::{IoSliceMut, Write},
+    mem,
+    num::Wrapping,
+    os::fd::OwnedFd,
+    path::PathBuf,
+    sync::{Arc, Mutex},
+};
+use tokio::{runtime::Handle, sync::Mutex as AsyncMutex, task};
+use tokio_seqpacket::{ancillary::OwnedAncillaryMessage, UnixSeqpacket};
+use tracing::{debug_span, Instrument};
+
+#[derive(Debug, Default)]
+pub struct FdSocket {
+    server: AsyncMutex<Option<Server>>,
+    state: Mutex<State>,
+}
+
+impl FdSocket {
+    pub async fn start(self: Arc<Self>, path: PathBuf) -> Result<PathBuf> {
+        let mut server = self.server.lock().await;
+        if let Some(server) = server.as_ref() {
+            Ok(server.path.clone())
+        } else {
+            *server = Server::start(path.clone(), self.clone()).await?.into();
+            Ok(path)
+        }
+    }
+
+    #[allow(dead_code)]
+    pub fn take(&self, slot: u64) -> Result<OwnedFd> {
+        lock!(self.state).take(slot)
+    }
+
+    pub fn take_all<I>(&self, slots: I) -> Result<Vec<OwnedFd>>
+    where
+        I: IntoIterator<Item = u64>,
+        I::IntoIter: ExactSizeIterator,
+    {
+        let slots = slots.into_iter();
+        if slots.len() == 0 {
+            Ok(Vec::new())
+        } else {
+            let mut state = lock!(self.state);
+            slots.into_iter().map(|slot| state.take(slot)).collect()
+        }
+    }
+}
+
+#[derive(Debug, Default)]
+struct State {
+    last: Wrapping<u64>,
+    fds: HashMap<u64, OwnedFd>,
+}
+
+impl State {
+    fn add(&mut self, fd: OwnedFd) -> u64 {
+        let mut slot = self.last;
+        loop {
+            slot += 1;
+            match self.fds.entry(slot.0) {
+                hash_map::Entry::Occupied(_) => continue,
+                hash_map::Entry::Vacant(entry) => {
+                    entry.insert(fd);
+                    break;
+                }
+            }
+        }
+        println!("add {slot}: {:?}", self.fds);
+        self.last = slot;
+        slot.0
+    }
+
+    fn take(&mut self, slot: u64) -> Result<OwnedFd> {
+        println!("take {slot}: {:?}", self.fds);
+        self.fds
+            .remove(&slot)
+            .ok_or_else(|| anyhow::anyhow!("no file descriptor in slot {slot}"))
+    }
+}
+
+#[derive(Debug)]
+struct Server {
+    path: PathBuf,
+}
+
+struct ListenerGuard(Arc<FdSocket>);
+
+impl Drop for ListenerGuard {
+    fn drop(&mut self) {
+        if let Ok(handle) = Handle::try_current() {
+            let fd_socket = self.0.clone();
+            handle.spawn(async move {
+                *fd_socket.server.lock().await = None;
+            });
+        } else {
+            *self.0.server.blocking_lock() = None;
+        }
+    }
+}
+
+struct ConnectionGuard {
+    fd_socket: Arc<FdSocket>,
+    slots: Vec<u64>,
+}
+
+impl Drop for ConnectionGuard {
+    fn drop(&mut self) {
+        let _ = self.close();
+    }
+}
+
+impl ConnectionGuard {
+    fn close(&mut self) -> Result<()> {
+        let mut state = lock!(self.fd_socket.state);
+        println!("close... {state:?}");
+        for slot in mem::take(&mut self.slots) {
+            state.fds.remove(&slot);
+        }
+        println!("closed: {state:?}");
+        Ok(())
+    }
+}
+
+impl Server {
+    async fn start(path: PathBuf, fd_socket: Arc<FdSocket>) -> Result<Self> {
+        let server = Self { path };
+
+        let mut listener = Listener::<SeqpacketListener>::default().bind_long_path(&server.path)?;
+        let guard = ListenerGuard(fd_socket);
+
+        task::spawn(
+            async move {
+                while let Ok(conn) = listener.accept().await {
+                    let fd_socket = guard.0.clone();
+                    task::spawn(
+                        Self::serve(conn, fd_socket).instrument(debug_span!("fd_socket_serve")),
+                    );
+                }
+                drop(guard);
+            }
+            .instrument(debug_span!("fd_socket_server")),
+        );
+
+        Ok(server)
+    }
+
+    async fn serve(conn: UnixSeqpacket, fd_socket: Arc<FdSocket>) -> Result<()> {
+        let mut guard = ConnectionGuard {
+            fd_socket,
+            slots: Vec::new(),
+        };
+        loop {
+            let mut buf = [0; 9];
+            let mut ancillary_buf = [0; 1024];
+            let (n, ancillary) = conn
+                .recv_vectored_with_ancillary(&mut [IoSliceMut::new(&mut buf)], &mut ancillary_buf)
+                .await?;
+
+            let id_and_num_fds = match n {
+                0 => break Ok(()), // EOF
+                8 => u64::from_le_bytes(buf[..8].try_into().unwrap()),
+                _ => continue, // ignore invalid message
+            };
+
+            if id_and_num_fds == 0 {
+                guard.close()?;
+                continue;
+            }
+
+            let num_fds = (id_and_num_fds & 0xff) as usize;
+
+            let result: Result<_> = async {
+                let mut received_fds = Vec::with_capacity(num_fds);
+                for msg in ancillary.into_messages() {
+                    if let OwnedAncillaryMessage::FileDescriptors(msg) = msg {
+                        received_fds.extend(msg);
+                    } else {
+                        // ignore other messages
+                    }
+                }
+
+                if received_fds.len() != num_fds {
+                    anyhow::bail!(
+                        "received {} fds, but expected {num_fds} fds",
+                        received_fds.len()
+                    )
+                }
+
+                let mut state = lock!(guard.fd_socket.state);
+                let start = guard.slots.len();
+                guard
+                    .slots
+                    .extend(received_fds.into_iter().map(|fd| state.add(fd)));
+                Ok(&guard.slots[start..])
+            }
+            .await;
+
+            match result {
+                Ok(slots) => {
+                    let mut buf = vec![0; 8 + slots.len() * 8];
+                    let mut chunks = buf.chunks_exact_mut(8);
+                    chunks
+                        .next()
+                        .unwrap()
+                        .copy_from_slice(&id_and_num_fds.to_le_bytes());
+                    for slot in slots {
+                        chunks.next().unwrap().copy_from_slice(&slot.to_le_bytes());
+                    }
+                    conn.send(&buf).await?;
+                }
+                Err(err) => {
+                    let mut buf = (id_and_num_fds | 0xff).to_le_bytes().to_vec();
+                    write!(buf, "{err}")?;
+                    conn.send(&buf).await?;
+                }
+            }
+        }
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/init.rs.html b/src/conmonrs/init.rs.html new file mode 100644 index 0000000000..782080648f --- /dev/null +++ b/src/conmonrs/init.rs.html @@ -0,0 +1,353 @@ +init.rs - source

conmonrs/
init.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
use anyhow::{bail, Result};
+use libc::{c_char, c_int, setlocale, LC_ALL};
+use nix::sys::stat::{umask, Mode};
+use std::{
+    ffi::CString,
+    fs::File,
+    io::{self, ErrorKind, Write},
+    path::Path,
+};
+
+#[cfg(test)]
+use mockall::{automock, predicate::*};
+
+#[derive(Debug, Default)]
+pub struct Init<T> {
+    imp: T,
+}
+
+impl<T> Init<T>
+where
+    T: InitImpl,
+{
+    /// Unset the locale for the current process.
+    pub fn unset_locale(&self) -> Result<()> {
+        self.imp.setlocale(LC_ALL, CString::new("")?.as_ptr());
+        Ok(())
+    }
+
+    /// Helper to adjust the OOM score of the currently running process.
+    pub fn set_oom_score<S: AsRef<str>>(&self, score: S) -> Result<()> {
+        // Attempt adjustment with best-effort.
+        let mut file = self.imp.create_file("/proc/self/oom_score_adj")?;
+        if let Err(err) = self
+            .imp
+            .write_all_file(&mut file, score.as_ref().as_bytes())
+        {
+            match err.kind() {
+                ErrorKind::PermissionDenied => {
+                    println!("Missing sufficient privileges to adjust OOM score")
+                }
+                _ => bail!("adjusting OOM score {}", err),
+            }
+        }
+        Ok(())
+    }
+
+    /// Set the default umask
+    pub fn set_default_umask(&self) {
+        self.imp.umask(Mode::from_bits_truncate(0o022))
+    }
+}
+
+#[cfg_attr(test, automock)]
+pub trait InitImpl {
+    fn setlocale(&self, category: c_int, locale: *const c_char) -> *mut c_char;
+    fn create_file<P: 'static + AsRef<Path>>(&self, path: P) -> io::Result<File>;
+    fn write_all_file(&self, file: &mut File, buf: &[u8]) -> io::Result<()>;
+    fn umask(&self, mode: Mode);
+}
+
+#[derive(Debug, Default)]
+pub struct DefaultInit;
+
+impl InitImpl for DefaultInit {
+    fn setlocale(&self, category: c_int, locale: *const c_char) -> *mut c_char {
+        unsafe { setlocale(category, locale) }
+    }
+
+    fn create_file<P: AsRef<Path>>(&self, path: P) -> io::Result<File> {
+        File::create(path)
+    }
+
+    fn write_all_file(&self, file: &mut File, buf: &[u8]) -> io::Result<()> {
+        file.write_all(buf)
+    }
+
+    fn umask(&self, mode: Mode) {
+        umask(mode);
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use std::{ptr, str};
+    use tempfile::tempfile;
+
+    fn new_sut(mock: MockInitImpl) -> Init<MockInitImpl> {
+        Init::<MockInitImpl> { imp: mock }
+    }
+
+    #[test]
+    fn unset_locale() -> Result<()> {
+        let mut mock = MockInitImpl::new();
+        mock.expect_setlocale()
+            .withf(|x, _| *x == LC_ALL)
+            .returning(|_, _| ptr::null_mut());
+
+        let sut = new_sut(mock);
+
+        sut.unset_locale()
+    }
+
+    #[test]
+    fn set_oom_success() -> Result<()> {
+        let mut mock = MockInitImpl::new();
+
+        mock.expect_create_file()
+            .with(eq("/proc/self/oom_score_adj"))
+            .returning(|_: &str| tempfile());
+
+        mock.expect_write_all_file()
+            .withf(|_, x| x == "-1000".as_bytes())
+            .returning(|_, _| Ok(()));
+
+        let sut = new_sut(mock);
+        sut.set_oom_score("-1000")
+    }
+
+    #[test]
+    fn set_oom_success_write_all_fails_permission_denied() -> Result<()> {
+        let mut mock = MockInitImpl::new();
+
+        mock.expect_create_file()
+            .with(eq("/proc/self/oom_score_adj"))
+            .returning(|_: &str| tempfile());
+
+        mock.expect_write_all_file()
+            .withf(|_, x| x == "-1000".as_bytes())
+            .returning(|_, _| Err(io::Error::new(ErrorKind::PermissionDenied, "")));
+
+        let sut = new_sut(mock);
+        sut.set_oom_score("-1000")
+    }
+
+    #[test]
+    fn set_oom_failed_create_file() {
+        let mut mock = MockInitImpl::new();
+
+        mock.expect_create_file()
+            .with(eq("/proc/self/oom_score_adj"))
+            .returning(|_: &str| Err(io::Error::new(ErrorKind::Other, "")));
+
+        let sut = new_sut(mock);
+        let res = sut.set_oom_score("-1000");
+
+        assert!(res.is_err());
+    }
+
+    #[test]
+    fn set_oom_failed_write_all_file() {
+        let mut mock = MockInitImpl::new();
+
+        mock.expect_create_file()
+            .with(eq("/proc/self/oom_score_adj"))
+            .returning(|_: &str| tempfile());
+
+        mock.expect_write_all_file()
+            .withf(|_, x| x == "-1000".as_bytes())
+            .returning(|_, _| Err(io::Error::new(ErrorKind::Other, "")));
+
+        let sut = new_sut(mock);
+        let res = sut.set_oom_score("-1000");
+
+        assert!(res.is_err());
+    }
+
+    #[test]
+    fn umask() {
+        let mut mock = MockInitImpl::new();
+        mock.expect_umask().returning(|_| ());
+
+        let sut = new_sut(mock);
+        sut.set_default_umask();
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/journal.rs.html b/src/conmonrs/journal.rs.html new file mode 100644 index 0000000000..3fa813a4d0 --- /dev/null +++ b/src/conmonrs/journal.rs.html @@ -0,0 +1,71 @@ +journal.rs - source

conmonrs/
journal.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
use libsystemd::logging::{journal_print, Priority};
+use std::{
+    io::{self, Error, ErrorKind, Write},
+    str,
+};
+use tracing_subscriber::fmt::writer::MakeWriter;
+
+macro_rules! io_err {
+    ($x:expr) => {
+        $x.map_err(|e| Error::new(ErrorKind::Other, e.to_string()))?
+    };
+}
+
+#[derive(Default)]
+pub struct Journal;
+
+impl Write for Journal {
+    fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+        let s = io_err!(str::from_utf8(buf));
+        io_err!(journal_print(Priority::Notice, s));
+        Ok(s.len())
+    }
+
+    fn flush(&mut self) -> io::Result<()> {
+        Ok(())
+    }
+}
+
+impl<'a> MakeWriter<'a> for Journal {
+    type Writer = Journal;
+
+    fn make_writer(&'a self) -> Self::Writer {
+        Journal
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/lib.rs.html b/src/conmonrs/lib.rs.html new file mode 100644 index 0000000000..9e259cc6d5 --- /dev/null +++ b/src/conmonrs/lib.rs.html @@ -0,0 +1,59 @@ +lib.rs - source

conmonrs/
lib.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
#![allow(clippy::needless_return)]
+#![doc = include_str!("../../../README.md")]
+#![doc = include_str!("../../../usage.md")]
+
+pub use server::Server;
+pub use version::Version;
+
+#[macro_use]
+mod macros;
+
+mod attach;
+mod capnp_util;
+mod child;
+mod child_reaper;
+mod config;
+mod container_io;
+mod container_log;
+mod fd_socket;
+mod init;
+mod journal;
+mod listener;
+mod oom_watcher;
+mod pause;
+mod rpc;
+mod server;
+mod streams;
+mod telemetry;
+mod terminal;
+mod version;
+
\ No newline at end of file diff --git a/src/conmonrs/listener.rs.html b/src/conmonrs/listener.rs.html new file mode 100644 index 0000000000..fdac4e7cdd --- /dev/null +++ b/src/conmonrs/listener.rs.html @@ -0,0 +1,403 @@ +listener.rs - source

conmonrs/
listener.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
use anyhow::{Context, Result};
+use std::{
+    fs::{self, File},
+    io,
+    os::unix::io::AsRawFd,
+    path::{Path, PathBuf},
+};
+use tokio::net::UnixListener;
+use tokio_seqpacket::UnixSeqpacketListener;
+
+#[cfg(test)]
+use mockall::{automock, predicate::*};
+
+#[derive(Debug, Default)]
+/// The main structure for this module.
+pub struct Listener<T> {
+    imp: T,
+}
+
+impl<T> Listener<T>
+where
+    T: ListenerImpl,
+{
+    pub fn bind_long_path<P>(&self, path: P) -> Result<T::Listener>
+    where
+        P: AsRef<Path>,
+    {
+        // keep parent_fd in scope until the bind, or else the socket will not work
+        let (path, _parent_dir) = self.shorten_socket_path(path)?;
+        self.imp.bind(path.as_ref()).context("bind server socket")
+    }
+
+    pub fn shorten_socket_path<P>(&self, path: P) -> Result<(PathBuf, File)>
+    where
+        P: AsRef<Path>,
+    {
+        let path = path.as_ref();
+
+        let parent = path.parent().context(format!(
+            "tried to specify / as socket to bind to: {}",
+            path.display()
+        ))?;
+        let name = path.file_name().context(format!(
+            "tried to specify '..' as socket to bind to: {}",
+            path.display(),
+        ))?;
+
+        self.imp
+            .create_dir_all(parent)
+            .context("create parent directory")?;
+
+        let parent = self.imp.open(parent).context("open parent directory")?;
+        let fd = parent.as_raw_fd();
+
+        Ok((
+            PathBuf::from("/proc/self/fd")
+                .join(fd.to_string())
+                .join(name),
+            parent,
+        ))
+    }
+}
+
+#[cfg_attr(test, automock(type Listener = UnixListener;))]
+pub trait ListenerImpl {
+    type Listener;
+    fn bind(&self, path: &Path) -> io::Result<Self::Listener>;
+    fn create_dir_all(&self, path: &Path) -> io::Result<()>;
+    fn open(&self, path: &Path) -> io::Result<File>;
+}
+
+#[derive(Debug, Default)]
+/// The default implementation for the Listener.
+pub struct DefaultListener;
+
+impl ListenerImpl for DefaultListener {
+    type Listener = UnixListener;
+    fn bind(&self, path: &Path) -> io::Result<Self::Listener> {
+        UnixListener::bind(path)
+    }
+
+    fn create_dir_all(&self, path: &Path) -> io::Result<()> {
+        fs::create_dir_all(path)
+    }
+
+    fn open(&self, path: &Path) -> io::Result<File> {
+        File::open(path)
+    }
+}
+
+#[derive(Debug, Default)]
+/// The default implementation for the Listener.
+pub struct SeqpacketListener;
+
+impl ListenerImpl for SeqpacketListener {
+    type Listener = UnixSeqpacketListener;
+    fn bind(&self, path: &Path) -> io::Result<Self::Listener> {
+        UnixSeqpacketListener::bind(path)
+    }
+
+    fn create_dir_all(&self, path: &Path) -> io::Result<()> {
+        fs::create_dir_all(path)
+    }
+
+    fn open(&self, path: &Path) -> io::Result<File> {
+        File::open(path)
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use std::io::ErrorKind;
+    use tempfile::{tempdir, tempfile};
+
+    fn new_sut(mock: MockListenerImpl) -> Listener<MockListenerImpl> {
+        Listener::<MockListenerImpl> { imp: mock }
+    }
+
+    fn permission_denied<T>() -> Result<T, io::Error> {
+        Err(io::Error::new(ErrorKind::PermissionDenied, ""))
+    }
+
+    #[tokio::test]
+    async fn bind_long_path_success() -> Result<()> {
+        let mut mock = MockListenerImpl::new();
+
+        mock.expect_create_dir_all().returning(|_| Ok(()));
+        mock.expect_open().returning(|_| tempfile());
+        mock.expect_bind()
+            .returning(|_| UnixListener::bind(tempdir()?.path().join("foo")));
+
+        let sut = new_sut(mock);
+        let first = "foo";
+        let listener = sut.bind_long_path(PathBuf::from(first).join("bar"))?;
+
+        let addr = listener.local_addr()?;
+        assert!(addr.as_pathname().context("no path name")?.ends_with(first));
+
+        Ok(())
+    }
+
+    #[tokio::test]
+    async fn bind_long_path_failure_on_bind() {
+        let mut mock = MockListenerImpl::new();
+
+        mock.expect_create_dir_all().returning(|_| Ok(()));
+        mock.expect_open().returning(|_| tempfile());
+        mock.expect_bind().returning(|_| permission_denied());
+
+        let sut = new_sut(mock);
+        assert!(sut
+            .bind_long_path(PathBuf::from("foo").join("bar"))
+            .is_err());
+    }
+
+    #[test]
+    fn shorten_socket_path_success() -> Result<()> {
+        let mut mock = MockListenerImpl::new();
+
+        mock.expect_create_dir_all().returning(|_| Ok(()));
+        mock.expect_open().returning(|_| tempfile());
+
+        let sut = new_sut(mock);
+        let last = "bar";
+        let (res_file_path, res_parent) =
+            sut.shorten_socket_path(PathBuf::from("/foo").join(last))?;
+
+        assert!(res_file_path.ends_with(last));
+        assert!(res_file_path
+            .display()
+            .to_string()
+            .contains(&res_parent.as_raw_fd().to_string()));
+
+        Ok(())
+    }
+
+    #[test]
+    fn shorten_socket_path_failure_on_open() {
+        let mut mock = MockListenerImpl::new();
+
+        mock.expect_create_dir_all().returning(|_| Ok(()));
+        mock.expect_open().returning(|_| permission_denied());
+
+        let sut = new_sut(mock);
+
+        assert!(sut.shorten_socket_path("/foo/bar").is_err());
+    }
+
+    #[test]
+    fn shorten_socket_path_failure_on_create_dir_all() {
+        let mut mock = MockListenerImpl::new();
+
+        mock.expect_create_dir_all()
+            .returning(|_| permission_denied());
+
+        let sut = new_sut(mock);
+
+        assert!(sut.shorten_socket_path("/foo/bar").is_err());
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/macros.rs.html b/src/conmonrs/macros.rs.html new file mode 100644 index 0000000000..441ac51ad2 --- /dev/null +++ b/src/conmonrs/macros.rs.html @@ -0,0 +1,25 @@ +macros.rs - source

conmonrs/
macros.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
/// Lock a mutex and return a possible poison error converted to an `anyhow::Error`.
+/// ```ignore
+/// let mutex = Mutex::new(vec![]);
+/// // needs to be inside of a function that returns an anyhow::Result
+/// lock!(mutex).push(42);
+/// assert_eq!(lock!(mutex).pop(), Some(42));
+/// ```
+macro_rules! lock {
+    ($mutex:expr) => {
+        $mutex.lock().map_err(|e| anyhow::anyhow!("{e}"))?
+    };
+}
+
\ No newline at end of file diff --git a/src/conmonrs/oom_watcher.rs.html b/src/conmonrs/oom_watcher.rs.html new file mode 100644 index 0000000000..63c5303cd3 --- /dev/null +++ b/src/conmonrs/oom_watcher.rs.html @@ -0,0 +1,927 @@ +oom_watcher.rs - source

conmonrs/
oom_watcher.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
use anyhow::{bail, Context, Result};
+use lazy_static::lazy_static;
+use nix::sys::statfs::{statfs, FsType};
+use notify::{Error, Event, RecommendedWatcher, RecursiveMode, Watcher};
+use regex::Regex;
+use std::{
+    os::unix::prelude::AsRawFd,
+    path::{Path, PathBuf},
+};
+use tokio::{
+    fs::{File, OpenOptions},
+    io::{AsyncBufReadExt, AsyncReadExt, AsyncWriteExt, BufReader, ErrorKind},
+    sync::mpsc::{channel, Receiver, Sender},
+    task::{self, JoinHandle},
+};
+use tokio_eventfd::EventFd;
+use tokio_util::sync::CancellationToken;
+use tracing::{debug, debug_span, error, trace, Instrument};
+
+#[cfg(all(target_os = "linux", target_env = "musl"))]
+pub const CGROUP2_SUPER_MAGIC: FsType = FsType(libc::CGROUP2_SUPER_MAGIC as u64);
+#[cfg(all(target_os = "linux", target_arch = "s390x", not(target_env = "musl")))]
+pub const CGROUP2_SUPER_MAGIC: FsType = FsType(libc::CGROUP2_SUPER_MAGIC as u32);
+#[cfg(all(
+    target_os = "linux",
+    any(
+        all(target_arch = "arm", not(target_env = "musl")),
+        target_arch = "x86",
+    )
+))]
+pub const CGROUP2_SUPER_MAGIC: FsType = FsType(libc::CGROUP2_SUPER_MAGIC as i32);
+#[cfg(all(
+    target_os = "linux",
+    not(target_arch = "s390x"),
+    not(target_arch = "arm"),
+    not(target_arch = "x86"),
+    not(target_env = "musl")
+))]
+pub const CGROUP2_SUPER_MAGIC: FsType = FsType(libc::CGROUP2_SUPER_MAGIC);
+
+static CGROUP_ROOT: &str = "/sys/fs/cgroup";
+
+lazy_static! {
+    static ref IS_CGROUP_V2: bool = {
+        if let Ok(sts) = statfs(CGROUP_ROOT) {
+            return sts.filesystem_type() == CGROUP2_SUPER_MAGIC;
+        }
+        false
+    };
+}
+
+pub struct OOMWatcher {
+    pid: u32,
+    token: CancellationToken,
+    task: JoinHandle<()>,
+}
+
+#[derive(Debug)]
+pub struct OOMEvent {
+    pub oom: bool,
+}
+
+impl OOMWatcher {
+    pub async fn new(
+        token: &CancellationToken,
+        pid: u32,
+        exit_paths: &[PathBuf],
+        tx: Sender<OOMEvent>,
+    ) -> OOMWatcher {
+        let exit_paths = exit_paths.to_owned();
+        let token = token.clone();
+        let task = {
+            let stop = token.clone();
+            task::spawn(
+                async move {
+                    if let Err(e) = if *IS_CGROUP_V2 {
+                        Self::oom_handling_cgroup_v2(stop, pid, &exit_paths, tx)
+                            .await
+                            .context("setup cgroupv2 oom handling")
+                    } else {
+                        Self::oom_handling_cgroup_v1(stop, pid, &exit_paths, tx)
+                            .await
+                            .context("setup cgroupv1 oom handling")
+                    } {
+                        error!("Failed to watch OOM: {:#}", e)
+                    }
+                }
+                .instrument(debug_span!("cgroup_handling")),
+            )
+        };
+        OOMWatcher { pid, token, task }
+    }
+
+    pub async fn stop(self) {
+        self.token.cancel();
+        if let Err(e) = self.task.await {
+            error!(pid = self.pid, "Stop failed: {:#}", e);
+        }
+    }
+
+    async fn oom_handling_cgroup_v1(
+        token: CancellationToken,
+        pid: u32,
+        exit_paths: &[PathBuf],
+        tx: Sender<OOMEvent>,
+    ) -> Result<()> {
+        let span = debug_span!("oom_handling_cgroup_v1", pid);
+        let _enter = span.enter();
+
+        let memory_cgroup_path = if let Some(path) =
+            Self::process_cgroup_subsystem_path_cgroup_v1(pid, "memory")
+                .await
+                .context("process cgroup memory subsystem path")?
+        {
+            path
+        } else {
+            debug!("Stopping OOM handler because no cgroup subsystem path exists");
+            return Ok(());
+        };
+
+        let memory_cgroup_file_oom_path = memory_cgroup_path.join("memory.oom_control");
+        let event_control_path = memory_cgroup_path.join("cgroup.event_control");
+        let path = memory_cgroup_file_oom_path.to_str();
+
+        debug!(path, "Setup cgroup v1 oom handling");
+
+        let oom_cgroup_file = OpenOptions::new()
+            .write(true)
+            .open(memory_cgroup_file_oom_path)
+            .await
+            .context("opening cgroup oom file")?;
+        let mut oom_event_fd = EventFd::new(0, false).context("creating eventfd")?;
+
+        let mut event_control = OpenOptions::new()
+            .write(true)
+            .open(event_control_path)
+            .await
+            .context("opening cgroup event control file")?;
+        event_control
+            .write_all(
+                format!(
+                    "{} {}",
+                    oom_event_fd.as_raw_fd(),
+                    oom_cgroup_file.as_raw_fd()
+                )
+                .as_bytes(),
+            )
+            .await
+            .context("writing control data")?;
+        event_control.flush().await.context("flush control data")?;
+
+        debug!("Successfully setup cgroup v1 oom detection");
+
+        let mut buffer = [0u8; 16];
+        tokio::select! {
+            _ = token.cancelled() => {
+                debug!("Loop cancelled");
+                let _ = tx.try_send(OOMEvent{ oom: false });
+            }
+            _ = oom_event_fd.read(&mut buffer) => {
+                debug!("Got oom event");
+                if let Err(e) = Self::write_oom_files(exit_paths).await {
+                    error!("Writing oom files failed: {:#}", e);
+                } else {
+                    debug!("Successfully wrote oom files");
+                }
+                let _ = tx.try_send(OOMEvent{ oom: true });
+            }
+        }
+
+        debug!("Done watching for ooms");
+        Ok(())
+    }
+
+    fn async_watcher() -> Result<(RecommendedWatcher, Receiver<notify::Result<Event>>)> {
+        let (tx, rx) = channel(1);
+
+        let watcher = notify::recommended_watcher(move |res: Result<Event, Error>| {
+            futures::executor::block_on(async {
+                if let Err(e) = tx.send(res).await {
+                    error!("Unable to send event result: {:#}", e)
+                }
+            })
+        })
+        .context("get recommended watcher")?;
+
+        Ok((watcher, rx))
+    }
+
+    async fn oom_handling_cgroup_v2(
+        token: CancellationToken,
+        pid: u32,
+        exit_paths: &[PathBuf],
+        tx: Sender<OOMEvent>,
+    ) -> Result<()> {
+        let span = debug_span!("oom_handling_cgroup_v2", pid);
+        let _enter = span.enter();
+
+        let subsystem_path = if let Some(path) = Self::process_cgroup_subsystem_path_cgroup_v2(pid)
+            .await
+            .context("process cgroup subsystem path")?
+        {
+            path
+        } else {
+            debug!("Stopping OOM handler because no cgroup subsystem path exists");
+            return Ok(());
+        };
+
+        let memory_events_file_path = subsystem_path.join("memory.events");
+        let mut last_counter: u64 = 0;
+
+        let path = memory_events_file_path.to_str();
+        debug!(path, "Setup cgroup v2 handling");
+
+        let (mut watcher, mut rx) = Self::async_watcher().context("get async watcher")?;
+        watcher
+            .watch(&memory_events_file_path, RecursiveMode::NonRecursive)
+            .context("watch memory events file")?;
+
+        loop {
+            tokio::select! {
+                _ = token.cancelled() => {
+                    debug!("Loop cancelled");
+                    if let Err(e) = tx.try_send(OOMEvent{ oom: false }) {
+                        error!("try_send failed: {:#}", e);
+                    };
+
+                    debug!("Last resort check for OOM");
+                    match Self::check_for_oom(&memory_events_file_path, last_counter).await {
+                        Ok((counter, is_oom)) => {
+                            if !is_oom {
+                                debug!("No OOM found in event");
+                                break;
+                            }
+                            debug!("Found OOM event count {counter}");
+                            if let Err(e) = Self::write_oom_files(exit_paths).await {
+                                error!("Writing OOM files failed: {:#}", e)
+                            }
+                            if let Err(e) = tx.try_send(OOMEvent{ oom: true }) {
+                                error!("Try send failed: {:#}", e)
+                            };
+                        }
+                        // It is still possible to miss an OOM event here if the memory events file
+                        // got removed between the notify event below and the token cancellation.
+                        Err(e) => debug!("Checking for last resort OOM failed: {:#}", e),
+                    }
+
+                    break;
+                }
+                Some(res) = rx.recv() => {
+                    match res {
+                        Ok(event) => {
+                            debug!("Got OOM file event: {:?}", event);
+                            if event.kind.is_remove() {
+                                debug!("Got remove event");
+                                if let Err(e) = tx.try_send(OOMEvent{ oom: false }) {
+                                    error!("try_send failed: {:#}", e);
+                                };
+                                break
+                            }
+                            match Self::check_for_oom(&memory_events_file_path, last_counter).await {
+                                Ok((counter, is_oom)) => {
+                                    if !is_oom {
+                                        debug!("No OOM found in event");
+                                        continue;
+                                    }
+                                    debug!("Found OOM event count {}", counter);
+                                    if let Err(e) = Self::write_oom_files(exit_paths).await {
+                                        error!("Writing OOM files failed: {:#}", e);
+                                    }
+                                    last_counter = counter;
+                                    match tx.try_send(OOMEvent{ oom: true }) {
+                                        Ok(_) => break,
+                                        Err(e) => error!("try_send failed: {:#}", e)
+                                    };
+                                }
+                                Err(e) => {
+                                    error!("Checking for OOM failed: {:#}", e);
+
+                                    let mut oom = false;
+                                    if Self::file_not_found(&memory_events_file_path).await {
+                                        debug!("Assuming memory slice removal race, still reporting one OOM event");
+                                        if let Err(e) = Self::write_oom_files(exit_paths).await {
+                                            error!("Writing OOM files failed: {:#}", e);
+                                        }
+                                        last_counter = 1;
+                                        oom = true;
+                                    }
+
+                                    match tx.try_send(OOMEvent{ oom }) {
+                                        Ok(_) => break,
+                                        Err(e) => error!("try_send failed: {:#}", e)
+                                    };
+                                }
+                            };
+                        },
+                        Err(e) => {
+                            debug!("Watch error: {:#}", e);
+                            match tx.try_send(OOMEvent{ oom: false }) {
+                                Ok(_) => break,
+                                Err(e) => error!("try_send failed: {:#}", e)
+                            };
+                            break;
+                        },
+                    };
+                }
+            }
+        }
+        watcher
+            .unwatch(&memory_events_file_path)
+            .context("unwatch memory events file")?;
+
+        debug!("Done watching for ooms");
+
+        Ok(())
+    }
+
+    /// Checks if a file does not exist on disk.
+    async fn file_not_found(f: impl AsRef<Path>) -> bool {
+        // TODO: use is_err_and if we can use Rust 1.70.0:
+        // https://doc.rust-lang.org/std/result/enum.Result.html#method.is_err_and
+        match tokio::fs::metadata(f).await {
+            Err(e) => e.kind() == ErrorKind::NotFound,
+            _ => false,
+        }
+    }
+
+    async fn check_for_oom(
+        memory_events_file_path: &Path,
+        last_counter: u64,
+    ) -> Result<(u64, bool)> {
+        debug!(
+            "Checking for possible OOM in {}",
+            memory_events_file_path.display()
+        );
+        let mut new_counter: u64 = 0;
+        let mut found_oom = false;
+        let fp = File::open(memory_events_file_path).await.context(format!(
+            "open memory events file: {}",
+            memory_events_file_path.display()
+        ))?;
+        let reader = BufReader::new(fp);
+        let mut lines = reader.lines();
+        while let Some(line) = lines.next_line().await.context("get next line")? {
+            trace!(line);
+            if let Some(counter) = line.strip_prefix("oom ").or(line.strip_prefix("oom_kill ")) {
+                let counter = counter
+                    .to_string()
+                    .parse::<u64>()
+                    .context("parse u64 counter")?;
+                debug!("New oom counter: {counter}, last counter: {last_counter}",);
+                if counter != last_counter {
+                    debug!("Updating OOM counter to {counter}");
+                    new_counter = counter;
+                    found_oom = true;
+                    break;
+                }
+            }
+        }
+        Ok((new_counter, found_oom))
+    }
+
+    async fn write_oom_files(exit_paths: &[PathBuf]) -> Result<()> {
+        let paths = exit_paths.to_owned();
+        let tasks: Vec<_> = paths
+            .into_iter()
+            .map(|path| {
+                tokio::spawn(
+                    async move {
+                        debug!("Writing OOM file: {}", path.display());
+                        if let Err(e) = File::create(&path).await {
+                            error!("Could not write oom file to {}: {:#}", path.display(), e);
+                        }
+                    }
+                    .instrument(debug_span!("write_oom_file")),
+                )
+            })
+            .collect();
+        for task in tasks {
+            task.await.context("wait for task to be finished")?;
+        }
+        Ok(())
+    }
+
+    async fn process_cgroup_subsystem_path_cgroup_v1(
+        pid: u32,
+        subsystem: &str,
+    ) -> Result<Option<PathBuf>> {
+        lazy_static! {
+            static ref RE: Regex = Regex::new(".*:(.*):/(.*)").expect("could not compile regex");
+        }
+
+        if let Some(fp) = Self::try_open_cgroup_path(pid).await? {
+            let reader = BufReader::new(fp);
+
+            let mut lines = reader.lines();
+            while let Some(line) = lines.next_line().await.context("read line from buffer")? {
+                if let Some(caps) = RE.captures(&line) {
+                    let system = caps
+                        .get(1)
+                        .context("no first capture group in regex match")?
+                        .as_str();
+                    let path = caps
+                        .get(2)
+                        .context("no second capture group in regex match")?
+                        .as_str();
+                    if system.contains(subsystem) || system.is_empty() {
+                        return Ok(PathBuf::from(CGROUP_ROOT).join(subsystem).join(path).into());
+                    }
+                }
+            }
+
+            bail!("no path found")
+        }
+
+        Ok(None)
+    }
+
+    async fn process_cgroup_subsystem_path_cgroup_v2(pid: u32) -> Result<Option<PathBuf>> {
+        lazy_static! {
+            static ref RE: Regex = Regex::new(".*:.*:/(.*)").expect("could not compile regex");
+        }
+
+        if let Some(fp) = Self::try_open_cgroup_path(pid).await? {
+            let mut buffer = String::new();
+            let mut reader = BufReader::new(fp);
+
+            reader
+                .read_line(&mut buffer)
+                .await
+                .context("read line from buffer")?;
+
+            if let Some(caps) = RE.captures(&buffer) {
+                return Ok(Path::new(CGROUP_ROOT)
+                    .join(
+                        caps.get(1)
+                            .context("no first capture group in regex match")?
+                            .as_str(),
+                    )
+                    .into());
+            }
+
+            bail!("invalid cgroup")
+        }
+
+        Ok(None)
+    }
+
+    async fn try_open_cgroup_path(pid: u32) -> Result<Option<File>> {
+        let cgroup_path = PathBuf::from("/proc").join(pid.to_string()).join("cgroup");
+        debug!("Using cgroup path: {}", cgroup_path.display());
+
+        match File::open(&cgroup_path).await {
+            Ok(file) => Ok(file.into()),
+            // Short lived processes will not be handled as an error
+            Err(error) if error.kind() == ErrorKind::NotFound => {
+                trace!("Cgroup path not found: {}", cgroup_path.display());
+                Ok(None)
+            }
+            Err(error) => bail!("open cgroup path {}: {}", cgroup_path.display(), error),
+        }
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/pause.rs.html b/src/conmonrs/pause.rs.html new file mode 100644 index 0000000000..3d33ee0db3 --- /dev/null +++ b/src/conmonrs/pause.rs.html @@ -0,0 +1,797 @@ +pause.rs - source

conmonrs/
pause.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
use anyhow::{bail, Context, Result};
+use capnp::enum_list::Reader;
+use conmon_common::conmon_capnp::conmon;
+use getset::{CopyGetters, Getters};
+use libc::pid_t;
+use nix::{
+    mount::{mount, umount, MsFlags},
+    sched::{unshare, CloneFlags},
+    sys::signal::{kill, Signal},
+    unistd::{fork, setresgid, setresuid, ForkResult, Gid, Pid, Uid},
+};
+use once_cell::sync::OnceCell;
+use signal_hook::{consts::TERM_SIGNALS, iterator::Signals};
+use std::{
+    env,
+    fs::{self, File},
+    io::{Read, Write},
+    os::unix::net::UnixStream,
+    path::{Path, PathBuf},
+    process::{exit, Command},
+};
+use strum::{AsRefStr, Display, EnumIter, EnumString, IntoEnumIterator, IntoStaticStr};
+use tracing::{debug, info, trace, warn};
+
+/// The main structure for this module.
+#[derive(Debug, CopyGetters, Getters)]
+pub struct Pause {
+    #[get = "pub"]
+    base_path: PathBuf,
+
+    #[get = "pub"]
+    pod_id: String,
+
+    #[get = "pub"]
+    namespaces: Vec<Namespace>,
+
+    #[get_copy]
+    pid: Pid,
+}
+
+/// The global shared multiple pause instance.
+static PAUSE: OnceCell<Pause> = OnceCell::new();
+
+impl Pause {
+    /// Retrieve the global instance of pause
+    pub fn init_shared(
+        base_path: &str,
+        pod_id: &str,
+        namespaces: Reader<conmon::Namespace>,
+        uid_mappings: Vec<String>,
+        gid_mappings: Vec<String>,
+    ) -> Result<&'static Pause> {
+        PAUSE.get_or_try_init(|| {
+            Self::init(base_path, pod_id, namespaces, uid_mappings, gid_mappings)
+                .context("init pause")
+        })
+    }
+
+    /// Retrieve the global instance of pause if initialized.
+    pub fn maybe_shared() -> Option<&'static Pause> {
+        PAUSE.get()
+    }
+
+    /// Stop the global pause instance.
+    pub fn stop(&self) {
+        info!("Stopping pause");
+        for namespace in self.namespaces() {
+            if let Err(e) = namespace.umount(self.base_path(), self.pod_id()) {
+                debug!("Unable to umount namespace {namespace}: {:#}", e);
+            }
+        }
+
+        info!("Killing pause PID: {}", self.pid());
+        if let Err(e) = kill(self.pid(), Signal::SIGTERM) {
+            warn!("Unable to kill pause PID {}: {:#}", self.pid(), e);
+        }
+
+        let pause_pid_path = Self::pause_pid_path(self.base_path(), self.pod_id());
+        if let Err(e) = fs::remove_file(&pause_pid_path) {
+            debug!(
+                "Unable to remove pause PID path {}: {:#}",
+                pause_pid_path.display(),
+                e
+            );
+        }
+    }
+
+    /// Initialize a new pause instance.
+    fn init(
+        base_path: &str,
+        pod_id: &str,
+        init_namespaces: Reader<conmon::Namespace>,
+        uid_mappings: Vec<String>,
+        gid_mappings: Vec<String>,
+    ) -> Result<Self> {
+        debug!("Initializing pause");
+
+        let mut args: Vec<String> = vec![format!("--pod-id={pod_id}")];
+        let mut namespaces = vec![];
+
+        for namespace in init_namespaces.iter() {
+            match namespace? {
+                conmon::Namespace::Ipc => {
+                    args.push("--ipc".into());
+                    namespaces.push(Namespace::Ipc);
+                }
+                conmon::Namespace::Net => {
+                    args.push("--net".into());
+                    namespaces.push(Namespace::Net);
+                }
+                conmon::Namespace::Pid => {
+                    args.push("--pid".into());
+                    namespaces.push(Namespace::Pid);
+                }
+                conmon::Namespace::Uts => {
+                    args.push("--uts".into());
+                    namespaces.push(Namespace::Uts);
+                }
+                conmon::Namespace::User => {
+                    if uid_mappings.is_empty() {
+                        bail!("user ID mappings are empty")
+                    }
+
+                    if gid_mappings.is_empty() {
+                        bail!("group ID mappings are empty")
+                    }
+
+                    args.push("--user".into());
+
+                    for mapping in &uid_mappings {
+                        args.push(format!("--uid-mappings={mapping}"));
+                    }
+
+                    for mapping in &gid_mappings {
+                        args.push(format!("--gid-mappings={mapping}"));
+                    }
+
+                    namespaces.push(Namespace::User);
+                }
+            }
+        }
+        debug!("Pause namespaces: {:?}", namespaces);
+        debug!("Pause args: {:?}", args);
+
+        let base_path = PathBuf::from(base_path);
+        fs::create_dir_all(&base_path).context("create base path")?;
+        debug!("Pause base path: {}", base_path.display());
+
+        let program = env::args().next().context("no args set")?;
+        let mut child = Command::new(program)
+            .arg("pause")
+            .arg("--base-path")
+            .arg(&base_path)
+            .args(args)
+            .spawn()
+            .context("run pause")?;
+
+        let status = child.wait().context("wait for pause child")?;
+        if !status.success() {
+            bail!("exit status not ok: {status}")
+        }
+
+        let pid = fs::read_to_string(Self::pause_pid_path(&base_path, pod_id))
+            .context("read pause PID path")?
+            .trim()
+            .parse::<u32>()
+            .context("parse pause PID")?;
+        info!("Pause PID is: {pid}");
+
+        Ok(Self {
+            base_path,
+            pod_id: pod_id.to_owned(),
+            namespaces: Namespace::iter().collect(),
+            pid: Pid::from_raw(pid as pid_t),
+        })
+    }
+
+    /// Retrieve the pause PID path for a base and pod ID.
+    fn pause_pid_path<T: AsRef<Path>>(base_path: T, pod_id: &str) -> PathBuf {
+        base_path
+            .as_ref()
+            .join("conmonrs")
+            .join(format!("{pod_id}.pid"))
+    }
+
+    #[allow(clippy::too_many_arguments)]
+    /// Run a new pause instance.
+    pub fn run<T: AsRef<Path> + Copy>(
+        base_path: T,
+        pod_id: &str,
+        ipc: bool,
+        pid: bool,
+        net: bool,
+        user: bool,
+        uts: bool,
+        uid_mappings: &[String],
+        gid_mappings: &[String],
+    ) -> Result<()> {
+        let mut flags = CloneFlags::empty();
+        if ipc {
+            flags.insert(CloneFlags::CLONE_NEWIPC);
+        }
+        if pid {
+            flags.insert(CloneFlags::CLONE_NEWPID);
+        }
+        if net {
+            flags.insert(CloneFlags::CLONE_NEWNET);
+        }
+        if user {
+            // CLONE_NEWNS is intentional here, because we need a new mount namespace for user
+            // namespace handling as well. The CLONE_NEWUSER will be done before calling unshare
+            // with the rest of the flags.
+            flags.insert(CloneFlags::CLONE_NEWNS);
+        }
+        if uts {
+            flags.insert(CloneFlags::CLONE_NEWUTS);
+        }
+
+        if !user {
+            unshare(flags).context("unshare with clone flags")?;
+        }
+
+        let (mut sock_parent, mut sock_child) =
+            UnixStream::pair().context("create unix socket pair")?;
+        const MSG: &[u8] = &[1];
+        let mut res = [0];
+
+        match unsafe { fork().context("forking process")? } {
+            ForkResult::Parent { child } => {
+                let pause_pid_path = Self::pause_pid_path(base_path, pod_id);
+                fs::create_dir_all(
+                    pause_pid_path
+                        .parent()
+                        .context("no parent for pause PID path")?,
+                )
+                .context("create pause PID parent path")?;
+                let mut file = File::create(pause_pid_path).context("create pause PID file")?;
+                write!(file, "{child}").context("write child to pause file")?;
+
+                if user {
+                    // Wait for user namespace creation
+                    sock_parent.read_exact(&mut res)?;
+
+                    // Write mappings
+                    Self::write_mappings(gid_mappings, child, true).context("write gid maps")?;
+                    Self::write_mappings(uid_mappings, child, false).context("write uid maps")?;
+
+                    // Notify that user mappings have been written
+                    sock_parent.write_all(MSG)?;
+                }
+
+                // Wait for mounts to be created
+                sock_parent.read_exact(&mut res)?;
+
+                exit(0);
+            }
+
+            ForkResult::Child if user => {
+                unshare(CloneFlags::CLONE_NEWUSER).context("unshare into user namespace")?;
+
+                // Notify that the user namespace is now created
+                sock_child.write_all(MSG)?;
+
+                // Wait for the mappings to be written
+                sock_child.read_exact(&mut res)?;
+
+                // Set the UID and GID
+                let uid = Uid::from_raw(0);
+                setresuid(uid, uid, uid).context("set root uid")?;
+
+                let gid = Gid::from_raw(0);
+                setresgid(gid, gid, gid).context("set root gid")?;
+
+                // Unshare the rest of the namespaces
+                unshare(flags).context("unshare with other clone flags")?;
+            }
+
+            _ => (),
+        }
+
+        // We bind all namespaces, if not unshared then we use the host namespace.
+        for namespace in Namespace::iter() {
+            namespace.bind(base_path, pod_id).context(format!(
+                "bind namespace to path: {}",
+                namespace.path(base_path, pod_id).display(),
+            ))?;
+        }
+
+        // Notify that all mounts are created
+        sock_child.write_all(MSG)?;
+
+        let mut signals = Signals::new(TERM_SIGNALS).context("register signals")?;
+        signals.forever().next().context("no signal number")?;
+        Ok(())
+    }
+
+    /// Write user or group ID mappings.
+    fn write_mappings(mappings: &[String], pid: Pid, is_group: bool) -> Result<()> {
+        let path = PathBuf::from("/proc")
+            .join(pid.to_string())
+            .join(if is_group { "gid_map" } else { "uid_map" });
+
+        let mut file = File::options()
+            .write(true)
+            .open(path)
+            .context("open mapping file")?;
+
+        for mapping in mappings {
+            // Validate the mapping
+            let mut split = mapping.split_whitespace();
+            if split.clone().count() != 3 {
+                bail!("mapping '{mapping}' has wrong format, expected 'CONTAINER_ID HOST_ID SIZE'");
+            }
+            if !split.all(|x| x.parse::<u32>().is_ok()) {
+                bail!("mapping '{mapping}' has wrong format, expected all to be u32");
+            }
+
+            file.write_all(format!("{mapping}\n").as_bytes())
+                .context("write mapping")?;
+        }
+
+        Ok(())
+    }
+}
+
+#[derive(
+    AsRefStr, Clone, Copy, Debug, Display, EnumIter, EnumString, Eq, IntoStaticStr, PartialEq,
+)]
+#[strum(serialize_all = "lowercase")]
+/// All available linux namespaces.
+pub enum Namespace {
+    /// IPC namespace. This creates new namespace for System V IPC POSIX message queues and
+    /// similar.
+    Ipc,
+
+    /// The PID namespace. The child process becomes PID 1.
+    Pid,
+
+    /// The network namespace. The namespace is empty and has no connectivity, even localhost
+    /// network, unless some setup is done afterwards.
+    Net,
+
+    /// The user namespace, which allows to segregate the user ID.
+    User,
+
+    /// The UTS namespace, which allows to change hostname of the new container.
+    Uts,
+}
+
+impl Namespace {
+    /// Bind the namespace to the provided base path and pod ID.
+    pub fn bind<T: AsRef<Path>>(&self, path: T, pod_id: &str) -> Result<()> {
+        let bind_path = self.path(path, pod_id);
+        fs::create_dir_all(
+            bind_path
+                .parent()
+                .context("no parent namespace bind path")?,
+        )
+        .context("create namespace parent path")?;
+        File::create(&bind_path).context("create namespace bind path")?;
+        let source_path = PathBuf::from("/proc/self/ns").join(self.as_ref());
+
+        mount(
+            Some(&source_path),
+            &bind_path,
+            None::<&Path>,
+            MsFlags::MS_BIND,
+            None::<&[u8]>,
+        )
+        .context("mount namespace")?;
+
+        Ok(())
+    }
+
+    /// Umount the namespace.
+    pub fn umount<T: AsRef<Path>>(&self, path: T, pod_id: &str) -> Result<()> {
+        let bind_path = self.path(path, pod_id);
+        if let Err(e) = umount(&bind_path) {
+            trace!("Unable to umount namespace {self}: {:#}", e);
+        }
+        fs::remove_file(&bind_path).context("remove namespace bind path")
+    }
+
+    /// Retrieve the bind path of the namespace for the provided base path and pod ID.
+    pub fn path<T: AsRef<Path>>(&self, path: T, pod_id: &str) -> PathBuf {
+        path.as_ref().join(format!("{self}ns")).join(pod_id)
+    }
+
+    pub fn to_capnp_namespace(self) -> conmon::Namespace {
+        match self {
+            Namespace::Ipc => conmon::Namespace::Ipc,
+            Namespace::Pid => conmon::Namespace::Pid,
+            Namespace::Net => conmon::Namespace::Net,
+            Namespace::User => conmon::Namespace::User,
+            Namespace::Uts => conmon::Namespace::Uts,
+        }
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/rpc.rs.html b/src/conmonrs/rpc.rs.html new file mode 100644 index 0000000000..670be7acbc --- /dev/null +++ b/src/conmonrs/rpc.rs.html @@ -0,0 +1,931 @@ +rpc.rs - source

conmonrs/
rpc.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
use crate::{
+    capnp_util,
+    child::Child,
+    container_io::{ContainerIO, SharedContainerIO},
+    container_log::ContainerLog,
+    pause::Pause,
+    server::{GenerateRuntimeArgs, Server},
+    telemetry::Telemetry,
+    version::Version,
+};
+use anyhow::{format_err, Context};
+use capnp::{capability::Promise, Error};
+use capnp_rpc::pry;
+use conmon_common::conmon_capnp::conmon;
+use std::{
+    path::{Path, PathBuf},
+    process, str,
+    time::Duration,
+};
+use tokio::time::Instant;
+use tracing::{debug, debug_span, error, Instrument};
+use uuid::Uuid;
+
+macro_rules! pry_err {
+    ($x:expr) => {
+        pry!(capnp_err!($x))
+    };
+}
+
+macro_rules! capnp_err {
+    ($x:expr) => {
+        $x.map_err(|e| Error::failed(format!("{:#}", e)))
+    };
+}
+
+macro_rules! new_root_span {
+    ($name:expr, $container_id:expr) => {
+        debug_span!(
+            $name,
+            container_id = $container_id,
+            uuid = Uuid::new_v4().to_string().as_str()
+        )
+    };
+}
+
+/// capnp_text_list takes text_list as an input and outputs list of text.
+macro_rules! capnp_text_list {
+    ($x:expr) => {
+        pry!(pry!($x).iter().collect::<Result<Vec<_>, _>>())
+    };
+}
+
+macro_rules! capnp_vec_str {
+    ($x:expr) => {
+        pry!(capnp_text_list!($x)
+            .iter()
+            .map(|s| s.to_string())
+            .collect::<Result<Vec<_>, _>>())
+    };
+}
+
+macro_rules! capnp_vec_path {
+    ($x:expr) => {
+        pry!(capnp_text_list!($x)
+            .iter()
+            .map(|s| s.to_str().map(|x| PathBuf::from(x)))
+            .collect::<Result<Vec<_>, _>>())
+    };
+}
+
+impl conmon::Server for Server {
+    /// Retrieve version information from the server.
+    fn version(
+        &mut self,
+        params: conmon::VersionParams,
+        mut results: conmon::VersionResults,
+    ) -> Promise<(), capnp::Error> {
+        debug!("Got a version request");
+        let req = pry!(pry!(params.get()).get_request());
+
+        let span = debug_span!("version", uuid = Uuid::new_v4().to_string().as_str());
+        let _enter = span.enter();
+        pry_err!(Telemetry::set_parent_context(pry!(req.get_metadata())));
+
+        let version = Version::new(req.get_verbose());
+        let mut response = results.get().init_response();
+        response.set_process_id(process::id());
+        response.set_version(version.version());
+        response.set_tag(version.tag());
+        response.set_commit(version.commit());
+        response.set_build_date(version.build_date());
+        response.set_target(version.target());
+        response.set_rust_version(version.rust_version());
+        response.set_cargo_version(version.cargo_version());
+        response.set_cargo_tree(version.cargo_tree());
+
+        Promise::ok(())
+    }
+
+    /// Create a new container for the provided parameters.
+    fn create_container(
+        &mut self,
+        params: conmon::CreateContainerParams,
+        mut results: conmon::CreateContainerResults,
+    ) -> Promise<(), capnp::Error> {
+        let req = pry!(pry!(params.get()).get_request());
+        let id = pry!(pry!(req.get_id()).to_string());
+
+        let span = new_root_span!("create_container", id.as_str());
+        let _enter = span.enter();
+        pry_err!(Telemetry::set_parent_context(pry!(req.get_metadata())));
+
+        let cleanup_cmd: Vec<String> = capnp_vec_str!(req.get_cleanup_cmd());
+
+        debug!("Got a create container request");
+
+        let log_drivers = pry!(req.get_log_drivers());
+        let container_log = pry_err!(ContainerLog::from(log_drivers));
+        let mut container_io =
+            pry_err!(ContainerIO::new(req.get_terminal(), container_log.clone()));
+
+        let bundle_path = Path::new(pry!(pry!(req.get_bundle_path()).to_str()));
+        let pidfile = bundle_path.join("pidfile");
+        debug!("PID file is {}", pidfile.display());
+
+        let child_reaper = self.reaper().clone();
+        let global_args = pry!(req.get_global_args());
+        let command_args = pry!(req.get_command_args());
+        let cgroup_manager = pry!(req.get_cgroup_manager());
+        let args = GenerateRuntimeArgs {
+            config: self.config(),
+            id: &id,
+            container_io: &container_io,
+            pidfile: &pidfile,
+            cgroup_manager,
+        };
+        let args = pry_err!(args.create_args(bundle_path, global_args, command_args));
+        let stdin = req.get_stdin();
+        let runtime = self.config().runtime().clone();
+        let exit_paths = capnp_vec_path!(req.get_exit_paths());
+        let oom_exit_paths = capnp_vec_path!(req.get_oom_exit_paths());
+        let env_vars = pry!(req.get_env_vars().and_then(capnp_util::into_map));
+
+        let additional_fds = pry_err!(self.fd_socket().take_all(pry!(req.get_additional_fds())));
+        let leak_fds = pry_err!(self.fd_socket().take_all(pry!(req.get_leak_fds())));
+
+        Promise::from_future(
+            async move {
+                capnp_err!(container_log.write().await.init().await)?;
+
+                let (grandchild_pid, token) = capnp_err!(match child_reaper
+                    .create_child(
+                        runtime,
+                        args,
+                        stdin,
+                        &mut container_io,
+                        &pidfile,
+                        env_vars,
+                        additional_fds,
+                    )
+                    .await
+                {
+                    Err(e) => {
+                        // Attach the stderr output to the error message
+                        let (_, stderr, _) =
+                            capnp_err!(container_io.read_all_with_timeout(None).await)?;
+                        if !stderr.is_empty() {
+                            let stderr_str = str::from_utf8(&stderr)?;
+                            Err(format_err!("{:#}: {}", e, stderr_str))
+                        } else {
+                            Err(e)
+                        }
+                    }
+                    res => res,
+                })?;
+
+                // register grandchild with server
+                let io = SharedContainerIO::new(container_io);
+                let child = Child::new(
+                    id,
+                    grandchild_pid,
+                    exit_paths,
+                    oom_exit_paths,
+                    None,
+                    io,
+                    cleanup_cmd,
+                    token,
+                );
+                capnp_err!(child_reaper.watch_grandchild(child, leak_fds))?;
+
+                results
+                    .get()
+                    .init_response()
+                    .set_container_pid(grandchild_pid);
+                Ok(())
+            }
+            .instrument(debug_span!("promise")),
+        )
+    }
+
+    /// Execute a command in sync inside of a container.
+    fn exec_sync_container(
+        &mut self,
+        params: conmon::ExecSyncContainerParams,
+        mut results: conmon::ExecSyncContainerResults,
+    ) -> Promise<(), capnp::Error> {
+        let req = pry!(pry!(params.get()).get_request());
+        let id = pry!(pry!(req.get_id()).to_string());
+
+        let span = new_root_span!("exec_sync_container", id.as_str());
+        let _enter = span.enter();
+        pry_err!(Telemetry::set_parent_context(pry!(req.get_metadata())));
+
+        let timeout = req.get_timeout_sec();
+
+        let pidfile = pry_err!(ContainerIO::temp_file_name(
+            Some(self.config().runtime_dir()),
+            "exec_sync",
+            "pid"
+        ));
+
+        debug!("Got exec sync container request with timeout {}", timeout);
+
+        let runtime = self.config().runtime().clone();
+        let child_reaper = self.reaper().clone();
+
+        let logger = ContainerLog::new();
+        let mut container_io = pry_err!(ContainerIO::new(req.get_terminal(), logger));
+
+        let command = pry!(req.get_command());
+        let env_vars = pry!(req.get_env_vars().and_then(capnp_util::into_map));
+        let cgroup_manager = pry!(req.get_cgroup_manager());
+
+        let args = GenerateRuntimeArgs {
+            config: self.config(),
+            id: &id,
+            container_io: &container_io,
+            pidfile: &pidfile,
+            cgroup_manager,
+        };
+        let args = pry_err!(args.exec_sync_args(command));
+
+        Promise::from_future(
+            async move {
+                match child_reaper
+                    .create_child(
+                        &runtime,
+                        &args,
+                        false,
+                        &mut container_io,
+                        &pidfile,
+                        env_vars,
+                        vec![],
+                    )
+                    .await
+                {
+                    Ok((grandchild_pid, token)) => {
+                        let time_to_timeout = if timeout > 0 {
+                            Some(Instant::now() + Duration::from_secs(timeout))
+                        } else {
+                            None
+                        };
+                        let mut resp = results.get().init_response();
+                        // register grandchild with server
+                        let io = SharedContainerIO::new(container_io);
+                        let io_clone = io.clone();
+                        let child = Child::new(
+                            id,
+                            grandchild_pid,
+                            vec![],
+                            vec![],
+                            time_to_timeout,
+                            io_clone,
+                            vec![],
+                            token.clone(),
+                        );
+
+                        let mut exit_rx = capnp_err!(child_reaper.watch_grandchild(child, vec![]))?;
+
+                        let (stdout, stderr, timed_out) =
+                            capnp_err!(io.read_all_with_timeout(time_to_timeout).await)?;
+
+                        let exit_data = capnp_err!(exit_rx.recv().await)?;
+                        resp.set_stdout(&stdout);
+                        resp.set_stderr(&stderr);
+                        resp.set_exit_code(*exit_data.exit_code());
+                        if timed_out || exit_data.timed_out {
+                            resp.set_timed_out(true);
+                        }
+                    }
+                    Err(e) => {
+                        error!("Unable to create child: {:#}", e);
+                        let mut resp = results.get().init_response();
+                        resp.set_exit_code(-2);
+                    }
+                }
+                Ok(())
+            }
+            .instrument(debug_span!("promise")),
+        )
+    }
+
+    /// Attach to a running container.
+    fn attach_container(
+        &mut self,
+        params: conmon::AttachContainerParams,
+        _: conmon::AttachContainerResults,
+    ) -> Promise<(), capnp::Error> {
+        let req = pry!(pry!(params.get()).get_request());
+        let id = pry_err!(pry_err!(req.get_id()).to_str());
+
+        let span = new_root_span!("attach_container", id);
+        let _enter = span.enter();
+        pry_err!(Telemetry::set_parent_context(pry!(req.get_metadata())));
+
+        debug!("Got a attach container request",);
+
+        let exec_session_id = pry_err!(pry_err!(req.get_exec_session_id()).to_str());
+        if !exec_session_id.is_empty() {
+            debug!("Using exec session id {}", exec_session_id);
+        }
+
+        let socket_path = pry!(pry!(req.get_socket_path()).to_string());
+        let child = pry_err!(self.reaper().get(id));
+        let stop_after_stdin_eof = req.get_stop_after_stdin_eof();
+
+        Promise::from_future(
+            async move {
+                capnp_err!(
+                    child
+                        .io()
+                        .attach()
+                        .await
+                        .add(&socket_path, child.token().clone(), stop_after_stdin_eof)
+                        .await
+                )
+            }
+            .instrument(debug_span!("promise")),
+        )
+    }
+
+    /// Rotate all log drivers for a running container.
+    fn reopen_log_container(
+        &mut self,
+        params: conmon::ReopenLogContainerParams,
+        _: conmon::ReopenLogContainerResults,
+    ) -> Promise<(), capnp::Error> {
+        let req = pry!(pry!(params.get()).get_request());
+        let id = pry_err!(pry_err!(req.get_id()).to_str());
+
+        let span = new_root_span!("reopen_log_container", id);
+        let _enter = span.enter();
+        pry_err!(Telemetry::set_parent_context(pry!(req.get_metadata())));
+
+        debug!("Got a reopen container log request");
+
+        let child = pry_err!(self.reaper().get(id));
+
+        Promise::from_future(
+            async move { capnp_err!(child.io().logger().await.write().await.reopen().await) }
+                .instrument(debug_span!("promise")),
+        )
+    }
+
+    /// Adjust the window size of a container running inside of a terminal.
+    fn set_window_size_container(
+        &mut self,
+        params: conmon::SetWindowSizeContainerParams,
+        _: conmon::SetWindowSizeContainerResults,
+    ) -> Promise<(), capnp::Error> {
+        let req = pry!(pry!(params.get()).get_request());
+        let id = pry_err!(pry_err!(req.get_id()).to_str());
+
+        let span = new_root_span!("set_window_size_container", id);
+        let _enter = span.enter();
+        pry_err!(Telemetry::set_parent_context(pry!(req.get_metadata())));
+
+        debug!("Got a set window size container request");
+
+        let child = pry_err!(self.reaper().get(id));
+        let width = req.get_width();
+        let height = req.get_height();
+
+        Promise::from_future(
+            async move { capnp_err!(child.io().resize(width, height).await) }
+                .instrument(debug_span!("promise")),
+        )
+    }
+
+    /// Create a new set of namespaces.
+    fn create_namespaces(
+        &mut self,
+        params: conmon::CreateNamespacesParams,
+        mut results: conmon::CreateNamespacesResults,
+    ) -> Promise<(), capnp::Error> {
+        debug!("Got a create namespaces request");
+        let req = pry!(pry!(params.get()).get_request());
+        let pod_id = pry_err!(pry_err!(req.get_pod_id()).to_str());
+
+        if pod_id.is_empty() {
+            return Promise::err(Error::failed("no pod ID provided".into()));
+        }
+
+        let span = new_root_span!("create_namespaces", pod_id);
+        let _enter = span.enter();
+        pry_err!(Telemetry::set_parent_context(pry!(req.get_metadata())));
+
+        let pause = pry_err!(Pause::init_shared(
+            pry!(pry!(req.get_base_path()).to_str()),
+            pod_id,
+            pry!(req.get_namespaces()),
+            capnp_vec_str!(req.get_uid_mappings()),
+            capnp_vec_str!(req.get_gid_mappings()),
+        ));
+
+        let response = results.get().init_response();
+        let mut namespaces =
+            response.init_namespaces(pry_err!(pause.namespaces().len().try_into()));
+
+        for (idx, namespace) in pause.namespaces().iter().enumerate() {
+            let mut ns = namespaces.reborrow().get(pry_err!(idx.try_into()));
+            ns.set_path(
+                namespace
+                    .path(pause.base_path(), pod_id)
+                    .display()
+                    .to_string(),
+            );
+            ns.set_type(namespace.to_capnp_namespace());
+        }
+
+        Promise::ok(())
+    }
+
+    fn start_fd_socket(
+        &mut self,
+        params: conmon::StartFdSocketParams,
+        mut results: conmon::StartFdSocketResults,
+    ) -> Promise<(), capnp::Error> {
+        let req = pry!(pry!(params.get()).get_request());
+
+        let span = debug_span!(
+            "start_fd_socket",
+            uuid = Uuid::new_v4().to_string().as_str()
+        );
+        let _enter = span.enter();
+        pry_err!(Telemetry::set_parent_context(pry!(req.get_metadata())));
+
+        debug!("Got a start fd socket request");
+
+        let path = self.config().fd_socket();
+        let fd_socket = self.fd_socket().clone();
+
+        Promise::from_future(
+            async move {
+                let path = capnp_err!(fd_socket.start(path).await)?;
+
+                let mut resp = results.get().init_response();
+                resp.set_path(capnp_err!(path.to_str().context("fd_socket path to str"))?);
+
+                Ok(())
+            }
+            .instrument(debug_span!("promise")),
+        )
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/server.rs.html b/src/conmonrs/server.rs.html new file mode 100644 index 0000000000..be9d7d5cf7 --- /dev/null +++ b/src/conmonrs/server.rs.html @@ -0,0 +1,837 @@ +server.rs - source

conmonrs/
server.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
#![deny(missing_docs)]
+
+use crate::{
+    child_reaper::ChildReaper,
+    config::{Commands, Config, LogDriver, LogLevel, Verbosity},
+    container_io::{ContainerIO, ContainerIOType},
+    fd_socket::FdSocket,
+    init::{DefaultInit, Init},
+    journal::Journal,
+    listener::{DefaultListener, Listener},
+    pause::Pause,
+    telemetry::Telemetry,
+    version::Version,
+};
+use anyhow::{format_err, Context, Result};
+use capnp::text_list::Reader;
+use capnp_rpc::{rpc_twoparty_capnp::Side, twoparty, RpcSystem};
+use conmon_common::conmon_capnp::conmon::{self, CgroupManager};
+use futures::{AsyncReadExt, FutureExt};
+use getset::Getters;
+use nix::{
+    errno,
+    libc::_exit,
+    sys::signal::Signal,
+    unistd::{fork, ForkResult},
+};
+use opentelemetry::trace::FutureExt as OpenTelemetryFutureExt;
+use std::{fs::File, io::Write, path::Path, process, str::FromStr, sync::Arc};
+use tokio::{
+    fs,
+    runtime::{Builder, Handle},
+    signal::unix::{signal, SignalKind},
+    sync::oneshot,
+    task::{self, LocalSet},
+};
+use tokio_util::compat::TokioAsyncReadCompatExt;
+use tracing::{debug, debug_span, info, Instrument};
+use tracing_opentelemetry::OpenTelemetrySpanExt;
+use tracing_subscriber::{filter::LevelFilter, layer::SubscriberExt, prelude::*};
+use twoparty::VatNetwork;
+
+#[derive(Debug, Getters)]
+/// The main server structure.
+pub struct Server {
+    /// Server configuration.
+    #[getset(get = "pub(crate)")]
+    config: Config,
+
+    /// Child reaper instance.
+    #[getset(get = "pub(crate)")]
+    reaper: Arc<ChildReaper>,
+
+    /// Fd socket instance.
+    #[getset(get = "pub(crate)")]
+    fd_socket: Arc<FdSocket>,
+}
+
+impl Server {
+    /// Create a new `Server` instance.
+    pub fn new() -> Result<Self> {
+        let server = Self {
+            config: Default::default(),
+            reaper: Default::default(),
+            fd_socket: Default::default(),
+        };
+
+        if let Some(v) = server.config().version() {
+            Version::new(v == Verbosity::Full).print();
+            process::exit(0);
+        }
+
+        if let Some(Commands::Pause {
+            base_path,
+            pod_id,
+            ipc,
+            pid,
+            net,
+            user,
+            uts,
+            uid_mappings,
+            gid_mappings,
+        }) = server.config().command()
+        {
+            Pause::run(
+                base_path,
+                pod_id,
+                *ipc,
+                *pid,
+                *net,
+                *user,
+                *uts,
+                uid_mappings,
+                gid_mappings,
+            )
+            .context("run pause")?;
+            process::exit(0);
+        }
+
+        server.config().validate().context("validate config")?;
+
+        Self::init().context("init self")?;
+        Ok(server)
+    }
+
+    /// Start the `Server` instance and consume it.
+    pub fn start(self) -> Result<()> {
+        // We need to fork as early as possible, especially before setting up tokio.
+        // If we don't, the child will have a strange thread space and we're at risk of deadlocking.
+        // We also have to treat the parent as the child (as described in [1]) to ensure we don't
+        // interrupt the child's execution.
+        // 1: https://docs.rs/nix/0.23.0/nix/unistd/fn.fork.html#safety
+        if !self.config().skip_fork() {
+            match unsafe { fork()? } {
+                ForkResult::Parent { child, .. } => {
+                    let child_str = format!("{child}");
+                    File::create(self.config().conmon_pidfile())?
+                        .write_all(child_str.as_bytes())?;
+                    unsafe { _exit(0) };
+                }
+                ForkResult::Child => (),
+            }
+        }
+
+        // now that we've forked, set self to childreaper
+        prctl::set_child_subreaper(true)
+            .map_err(errno::from_i32)
+            .context("set child subreaper")?;
+
+        let enable_tracing = self.config().enable_tracing();
+
+        let rt = Builder::new_multi_thread().enable_all().build()?;
+        rt.block_on(self.spawn_tasks())?;
+
+        if enable_tracing {
+            Telemetry::shutdown();
+        }
+
+        rt.shutdown_background();
+        Ok(())
+    }
+
+    fn init() -> Result<()> {
+        let init = Init::<DefaultInit>::default();
+        init.unset_locale()?;
+        init.set_default_umask();
+        // While we could configure this, standard practice has it as -1000,
+        // so it may be YAGNI to add configuration.
+        init.set_oom_score("-1000")
+    }
+
+    fn init_logging(&self) -> Result<()> {
+        let level = LevelFilter::from_str(self.config().log_level().as_ref())
+            .context("convert log level filter")?;
+
+        let telemetry_layer = if self.config().enable_tracing() {
+            Telemetry::layer(self.config().tracing_endpoint())
+                .context("build telemetry layer")?
+                .into()
+        } else {
+            None
+        };
+
+        let registry = tracing_subscriber::registry().with(telemetry_layer);
+
+        match self.config().log_driver() {
+            LogDriver::Stdout => {
+                let layer = tracing_subscriber::fmt::layer()
+                    .with_target(true)
+                    .with_line_number(true)
+                    .with_filter(level);
+                registry
+                    .with(layer)
+                    .try_init()
+                    .context("init stdout fmt layer")?;
+                info!("Using stdout logger");
+            }
+            LogDriver::Systemd => {
+                let layer = tracing_subscriber::fmt::layer()
+                    .with_target(true)
+                    .with_line_number(true)
+                    .without_time()
+                    .with_writer(Journal)
+                    .with_filter(level);
+                registry
+                    .with(layer)
+                    .try_init()
+                    .context("init journald fmt layer")?;
+                info!("Using systemd/journald logger");
+            }
+        }
+        info!("Set log level to: {}", self.config().log_level());
+        Ok(())
+    }
+
+    /// Spawns all required tokio tasks.
+    async fn spawn_tasks(self) -> Result<()> {
+        self.init_logging().context("init logging")?;
+
+        let (shutdown_tx, shutdown_rx) = oneshot::channel();
+        let socket = self.config().socket();
+        let fd_socket = self.config().fd_socket();
+        let reaper = self.reaper.clone();
+
+        let signal_handler_span = debug_span!("signal_handler");
+        task::spawn(
+            Self::start_signal_handler(reaper, socket, fd_socket, shutdown_tx)
+                .with_context(signal_handler_span.context())
+                .instrument(signal_handler_span),
+        );
+
+        let backend_span = debug_span!("backend");
+        task::spawn_blocking(move || {
+            Handle::current().block_on(
+                LocalSet::new()
+                    .run_until(self.start_backend(shutdown_rx))
+                    .with_context(backend_span.context())
+                    .instrument(backend_span),
+            )
+        })
+        .await?
+    }
+
+    async fn start_signal_handler<T: AsRef<Path>>(
+        reaper: Arc<ChildReaper>,
+        socket: T,
+        fd_socket: T,
+        shutdown_tx: oneshot::Sender<()>,
+    ) -> Result<()> {
+        let mut sigterm = signal(SignalKind::terminate())?;
+        let mut sigint = signal(SignalKind::interrupt())?;
+        let handled_sig: Signal;
+
+        tokio::select! {
+            _ = sigterm.recv() => {
+                info!("Received SIGTERM");
+                handled_sig = Signal::SIGTERM;
+            }
+            _ = sigint.recv() => {
+                info!("Received SIGINT");
+                handled_sig = Signal::SIGINT;
+            }
+        }
+
+        if let Some(pause) = Pause::maybe_shared() {
+            pause.stop();
+        }
+
+        debug!("Starting grandchildren cleanup task");
+        reaper
+            .kill_grandchildren(handled_sig)
+            .context("unable to kill grandchildren")?;
+
+        debug!("Sending shutdown message");
+        shutdown_tx
+            .send(())
+            .map_err(|_| format_err!("unable to send shutdown message"))?;
+
+        debug!("Removing socket file {}", socket.as_ref().display());
+        fs::remove_file(socket)
+            .await
+            .context("remove existing socket file")?;
+
+        debug!("Removing fd socket file {}", fd_socket.as_ref().display());
+        fs::remove_file(fd_socket)
+            .await
+            .or_else(|err| {
+                if err.kind() == std::io::ErrorKind::NotFound {
+                    Ok(())
+                } else {
+                    Err(err)
+                }
+            })
+            .context("remove existing fd socket file")
+    }
+
+    async fn start_backend(self, mut shutdown_rx: oneshot::Receiver<()>) -> Result<()> {
+        let listener =
+            Listener::<DefaultListener>::default().bind_long_path(self.config().socket())?;
+        let client: conmon::Client = capnp_rpc::new_client(self);
+
+        loop {
+            let stream = tokio::select! {
+                _ = &mut shutdown_rx => {
+                    debug!("Received shutdown message");
+                    return Ok(())
+                }
+                stream = listener.accept() => {
+                    stream?.0
+                },
+            };
+            let (reader, writer) = TokioAsyncReadCompatExt::compat(stream).split();
+            let network = Box::new(VatNetwork::new(
+                reader,
+                writer,
+                Side::Server,
+                Default::default(),
+            ));
+            let rpc_system = RpcSystem::new(network, Some(client.clone().client));
+            task::spawn_local(Box::pin(rpc_system.map(|_| ())));
+        }
+    }
+}
+
+pub(crate) struct GenerateRuntimeArgs<'a> {
+    pub(crate) config: &'a Config,
+    pub(crate) id: &'a str,
+    pub(crate) container_io: &'a ContainerIO,
+    pub(crate) pidfile: &'a Path,
+    pub(crate) cgroup_manager: CgroupManager,
+}
+
+impl GenerateRuntimeArgs<'_> {
+    const SYSTEMD_CGROUP_ARG: &'static str = "--systemd-cgroup";
+    const RUNTIME_CRUN: &'static str = "crun";
+    const LOG_LEVEL_FLAG_CRUN: &'static str = "--log-level";
+
+    /// Generate the OCI runtime CLI arguments from the provided parameters.
+    pub fn create_args(
+        self,
+        bundle_path: &Path,
+        global_args: Reader,
+        command_args: Reader,
+    ) -> Result<Vec<String>> {
+        let mut args = self.default_args().context("build default runtime args")?;
+
+        if let Some(rr) = self.config.runtime_root() {
+            args.push(format!("--root={}", rr.display()));
+        }
+
+        if self.cgroup_manager == CgroupManager::Systemd {
+            args.push(Self::SYSTEMD_CGROUP_ARG.into());
+        }
+
+        for arg in global_args {
+            args.push(arg?.to_string()?);
+        }
+
+        args.extend([
+            "create".to_string(),
+            "--bundle".to_string(),
+            bundle_path.display().to_string(),
+            "--pid-file".to_string(),
+            self.pidfile.display().to_string(),
+        ]);
+
+        for arg in command_args {
+            args.push(arg?.to_string()?);
+        }
+
+        if let ContainerIOType::Terminal(terminal) = self.container_io.typ() {
+            args.push(format!("--console-socket={}", terminal.path().display()));
+        }
+
+        args.push(self.id.into());
+
+        debug!("Runtime args {:?}", args.join(" "));
+        Ok(args)
+    }
+
+    /// Generate the OCI runtime CLI arguments from the provided parameters.
+    pub(crate) fn exec_sync_args(&self, command: Reader) -> Result<Vec<String>> {
+        let mut args = self.default_args().context("build default runtime args")?;
+
+        args.push("exec".to_string());
+        args.push("-d".to_string());
+
+        if let ContainerIOType::Terminal(terminal) = self.container_io.typ() {
+            args.push(format!("--console-socket={}", terminal.path().display()));
+            args.push("--tty".to_string());
+        }
+
+        args.push(format!("--pid-file={}", self.pidfile.display()));
+        args.push(self.id.into());
+
+        for arg in command {
+            args.push(arg?.to_string()?);
+        }
+
+        debug!("Exec args {:?}", args.join(" "));
+        Ok(args)
+    }
+
+    /// Build the default arguments for any provided runtime.
+    fn default_args(&self) -> Result<Vec<String>> {
+        let mut args = vec![];
+
+        if self
+            .config
+            .runtime()
+            .file_name()
+            .context("no filename in path")?
+            == Self::RUNTIME_CRUN
+        {
+            debug!("Found crun used as runtime");
+            args.push(format!("--log=journald:{}", self.id));
+
+            match self.config.log_level() {
+                &LogLevel::Debug | &LogLevel::Error => args.push(format!(
+                    "{}={}",
+                    Self::LOG_LEVEL_FLAG_CRUN,
+                    self.config.log_level()
+                )),
+                &LogLevel::Warn => args.push(format!("{}=warning", Self::LOG_LEVEL_FLAG_CRUN)),
+                _ => {}
+            }
+        }
+
+        if let Some(rr) = self.config.runtime_root() {
+            args.push(format!("--root={}", rr.display()));
+        }
+
+        if self.cgroup_manager == CgroupManager::Systemd {
+            args.push(Self::SYSTEMD_CGROUP_ARG.into());
+        }
+
+        Ok(args)
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/streams.rs.html b/src/conmonrs/streams.rs.html new file mode 100644 index 0000000000..e23033be02 --- /dev/null +++ b/src/conmonrs/streams.rs.html @@ -0,0 +1,363 @@ +streams.rs - source

conmonrs/
streams.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
//! Pseudo terminal implementation.
+
+use crate::{
+    attach::SharedContainerAttach,
+    container_io::{ContainerIO, Message, Pipe},
+    container_log::SharedContainerLog,
+};
+use anyhow::Result;
+use getset::Getters;
+use tokio::{
+    process::{ChildStderr, ChildStdin, ChildStdout},
+    sync::mpsc::{self, UnboundedReceiver, UnboundedSender},
+    task,
+};
+use tokio_util::sync::CancellationToken;
+use tracing::{debug, debug_span, error, Instrument};
+
+#[derive(Debug, Getters)]
+pub struct Streams {
+    #[getset(get = "pub")]
+    logger: SharedContainerLog,
+
+    #[getset(get = "pub")]
+    attach: SharedContainerAttach,
+
+    pub message_rx_stdout: UnboundedReceiver<Message>,
+
+    #[getset(get = "pub")]
+    message_tx_stdout: UnboundedSender<Message>,
+
+    pub message_rx_stderr: UnboundedReceiver<Message>,
+
+    #[getset(get = "pub")]
+    message_tx_stderr: UnboundedSender<Message>,
+}
+
+impl Streams {
+    /// Create a new Streams instance.
+    pub fn new(logger: SharedContainerLog, attach: SharedContainerAttach) -> Result<Self> {
+        debug!("Creating new IO streams");
+
+        let (message_tx_stdout, message_rx_stdout) = mpsc::unbounded_channel();
+        let (message_tx_stderr, message_rx_stderr) = mpsc::unbounded_channel();
+
+        Ok(Self {
+            logger,
+            attach,
+            message_rx_stdout,
+            message_tx_stdout,
+            message_rx_stderr,
+            message_tx_stderr,
+        })
+    }
+
+    pub fn handle_stdio_receive(
+        &self,
+        stdin: Option<ChildStdin>,
+        stdout: Option<ChildStdout>,
+        stderr: Option<ChildStderr>,
+        token: CancellationToken,
+    ) {
+        debug!("Start reading from IO streams");
+        let logger = self.logger().clone();
+        let attach = self.attach().clone();
+        let message_tx = self.message_tx_stdout().clone();
+
+        if let Some(stdin) = stdin {
+            task::spawn(
+                async move {
+                    if let Err(e) = ContainerIO::read_loop_stdin(stdin, attach, token).await {
+                        error!("Stdin read loop failure: {:#}", e);
+                    }
+                }
+                .instrument(debug_span!("stdin")),
+            );
+        }
+
+        let attach = self.attach().clone();
+        if let Some(stdout) = stdout {
+            task::spawn(
+                async move {
+                    if let Err(e) =
+                        ContainerIO::read_loop(stdout, Pipe::StdOut, logger, message_tx, attach)
+                            .await
+                    {
+                        error!("Stdout read loop failure: {:#}", e);
+                    }
+                }
+                .instrument(debug_span!("stdout")),
+            );
+        }
+
+        let logger = self.logger().clone();
+        let attach = self.attach().clone();
+        let message_tx = self.message_tx_stderr().clone();
+        if let Some(stderr) = stderr {
+            task::spawn(
+                async move {
+                    if let Err(e) =
+                        ContainerIO::read_loop(stderr, Pipe::StdErr, logger, message_tx, attach)
+                            .await
+                    {
+                        error!("Stderr read loop failure: {:#}", e);
+                    }
+                }
+                .instrument(debug_span!("stderr")),
+            );
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::container_log::ContainerLog;
+    use anyhow::{bail, Context};
+    use std::{process::Stdio, str::from_utf8};
+    use tokio::process::Command;
+
+    fn msg_string(message: Message) -> Result<String> {
+        match message {
+            Message::Data(v, _) => Ok(from_utf8(&v)?.into()),
+            _ => bail!("no data in message"),
+        }
+    }
+
+    #[tokio::test(flavor = "multi_thread")]
+    async fn new_success() -> Result<()> {
+        let logger = ContainerLog::new();
+        let attach = SharedContainerAttach::default();
+        let token = CancellationToken::new();
+
+        let mut sut = Streams::new(logger, attach)?;
+
+        let expected = "hello world";
+        let mut child = Command::new("echo")
+            .arg("-n")
+            .arg(expected)
+            .stdin(Stdio::piped())
+            .stdout(Stdio::piped())
+            .stderr(Stdio::piped())
+            .spawn()?;
+
+        sut.handle_stdio_receive(
+            child.stdin.take(),
+            child.stdout.take(),
+            child.stderr.take(),
+            token.clone(),
+        );
+
+        let msg = sut
+            .message_rx_stdout
+            .recv()
+            .await
+            .context("no message on stdout")?;
+
+        assert_eq!(msg_string(msg)?, expected);
+
+        // There is no child_reaper instance paying attention to the child we've created,
+        // so the read_loops must be cancelled here instead.
+        token.cancel();
+
+        let msg = sut
+            .message_rx_stdout
+            .recv()
+            .await
+            .context("no message on stdout")?;
+        assert_eq!(msg, Message::Done);
+        assert!(sut.message_rx_stdout.try_recv().is_err());
+
+        let msg = sut
+            .message_rx_stderr
+            .recv()
+            .await
+            .context("no message on stderr")?;
+        assert_eq!(msg, Message::Done);
+        assert!(sut.message_rx_stderr.try_recv().is_err());
+
+        Ok(())
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/telemetry.rs.html b/src/conmonrs/telemetry.rs.html new file mode 100644 index 0000000000..26a59b07af --- /dev/null +++ b/src/conmonrs/telemetry.rs.html @@ -0,0 +1,185 @@ +telemetry.rs - source

conmonrs/
telemetry.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
/// Open Telemetry related source code.
+use crate::capnp_util;
+use anyhow::{Context, Result};
+use capnp::struct_list::Reader;
+use clap::crate_name;
+use conmon_common::conmon_capnp::conmon;
+use nix::unistd::gethostname;
+use opentelemetry::{global, propagation::Extractor, KeyValue};
+use opentelemetry_otlp::{ExportConfig, WithExportConfig};
+use opentelemetry_sdk::{
+    propagation::TraceContextPropagator,
+    runtime::Tokio,
+    trace::{self, Tracer},
+    Resource,
+};
+use opentelemetry_semantic_conventions::resource::{HOST_NAME, PROCESS_PID, SERVICE_NAME};
+use std::{collections::HashMap, process};
+use tracing::{Span, Subscriber};
+use tracing_opentelemetry::{OpenTelemetryLayer, OpenTelemetrySpanExt};
+use tracing_subscriber::registry::LookupSpan;
+
+/// The main structure of this module.
+pub struct Telemetry;
+
+impl Telemetry {
+    /// Return the telemetry layer if tracing is enabled.
+    pub fn layer<T>(endpoint: &str) -> Result<OpenTelemetryLayer<T, Tracer>>
+    where
+        T: Subscriber + for<'span> LookupSpan<'span>,
+    {
+        global::set_text_map_propagator(TraceContextPropagator::new());
+
+        let exporter = opentelemetry_otlp::new_exporter()
+            .tonic()
+            .with_export_config(ExportConfig {
+                endpoint: endpoint.into(),
+                ..Default::default()
+            });
+
+        let hostname = gethostname()
+            .context("get hostname")?
+            .to_str()
+            .context("convert hostname to string")?
+            .to_string();
+
+        let tracer = opentelemetry_otlp::new_pipeline()
+            .tracing()
+            .with_exporter(exporter)
+            .with_trace_config(trace::config().with_resource(Resource::new(vec![
+                KeyValue::new(SERVICE_NAME, crate_name!()),
+                KeyValue::new(PROCESS_PID, process::id() as i64),
+                KeyValue::new(HOST_NAME, hostname),
+            ])))
+            .install_batch(Tokio)
+            .context("install tracer")?;
+
+        Ok(tracing_opentelemetry::layer().with_tracer(tracer))
+    }
+
+    /// Shutdown the global tracer provider.
+    pub fn shutdown() {
+        global::shutdown_tracer_provider();
+    }
+
+    /// Set a new parent context from the provided slice data.
+    pub fn set_parent_context(reader: Reader<conmon::text_text_map_entry::Owned>) -> Result<()> {
+        if reader.is_empty() {
+            // Make it a noop if no data is provided.
+            return Ok(());
+        }
+
+        let metadata = Metadata(capnp_util::into_map(reader)?);
+        let ctx = global::get_text_map_propagator(|prop| prop.extract(&metadata));
+        Span::current().set_parent(ctx);
+
+        Ok(())
+    }
+}
+
+/// Additional telemetry metadata to carry.
+struct Metadata<'a>(HashMap<&'a str, &'a str>);
+
+impl Extractor for Metadata<'_> {
+    fn get(&self, key: &str) -> Option<&str> {
+        self.0.get(key).copied()
+    }
+
+    /// Collect all the keys from the MetadataMap.
+    fn keys(&self) -> Vec<&str> {
+        self.0.keys().copied().collect()
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/terminal.rs.html b/src/conmonrs/terminal.rs.html new file mode 100644 index 0000000000..019aad76a7 --- /dev/null +++ b/src/conmonrs/terminal.rs.html @@ -0,0 +1,735 @@ +terminal.rs - source

conmonrs/
terminal.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
//! Terminal console functionalities.
+
+use crate::{
+    attach::SharedContainerAttach,
+    container_io::{ContainerIO, Message, Pipe},
+    container_log::SharedContainerLog,
+    listener::{DefaultListener, Listener},
+};
+use anyhow::{format_err, Context as _, Result};
+use getset::{Getters, MutGetters, Setters};
+use libc::{winsize, TIOCSWINSZ};
+use nix::{
+    fcntl::{self, FcntlArg, OFlag},
+    sys::termios::{self, OutputFlags, SetArg},
+};
+use sendfd::RecvWithFd;
+use std::{
+    io::{self, ErrorKind, Read, Write},
+    os::{
+        fd::{AsFd, AsRawFd, BorrowedFd, FromRawFd, OwnedFd},
+        unix::{fs::PermissionsExt, io::RawFd},
+    },
+    path::PathBuf,
+    pin::Pin,
+    sync::{mpsc::Sender as StdSender, Arc, Weak},
+    task::{ready, Context, Poll},
+};
+use tokio::{
+    fs,
+    io::{unix::AsyncFd, AsyncRead, AsyncWrite, AsyncWriteExt, Interest, ReadBuf},
+    net::UnixStream,
+    sync::mpsc::{self, Receiver, Sender, UnboundedReceiver},
+    task,
+};
+use tokio_util::sync::CancellationToken;
+use tracing::{debug, debug_span, error, trace, Instrument};
+
+#[derive(Debug, Getters, MutGetters, Setters)]
+pub struct Terminal {
+    #[getset(get = "pub")]
+    path: PathBuf,
+
+    connected_rx: Receiver<OwnedFd>,
+
+    #[getset(get = "pub", get_mut = "pub")]
+    message_rx: Option<UnboundedReceiver<Message>>,
+
+    #[getset(get, set)]
+    tty: Option<Weak<TerminalFd>>,
+
+    logger: SharedContainerLog,
+    attach: SharedContainerAttach,
+}
+
+#[derive(Debug, Getters)]
+struct Config {
+    #[get]
+    path: PathBuf,
+
+    #[get]
+    ready_tx: StdSender<()>,
+
+    #[get]
+    connected_tx: Sender<OwnedFd>,
+}
+
+impl Terminal {
+    /// Setup a new terminal instance.
+    pub fn new(logger: SharedContainerLog, attach: SharedContainerAttach) -> Result<Self> {
+        debug!("Creating new terminal");
+        let path = ContainerIO::temp_file_name(None, "conmon-term-", ".sock")?;
+        let path_clone = path.clone();
+
+        let (ready_tx, ready_rx) = std::sync::mpsc::channel();
+        let (connected_tx, connected_rx) = mpsc::channel(1);
+
+        task::spawn(
+            async move {
+                if let Err(e) = Self::listen(Config {
+                    path: path_clone,
+                    ready_tx,
+                    connected_tx,
+                })
+                .await
+                {
+                    error!("Unable to listen on terminal: {:#}", e);
+                };
+            }
+            .instrument(debug_span!("listen")),
+        );
+        ready_rx.recv().context("wait for listener to be ready")?;
+
+        Ok(Self {
+            path,
+            connected_rx,
+            message_rx: None,
+            tty: None,
+            logger,
+            attach,
+        })
+    }
+
+    /// Waits for the socket client to be connected.
+    pub async fn wait_connected(&mut self, stdin: bool, token: CancellationToken) -> Result<()> {
+        debug!("Waiting for terminal socket connection");
+        let fd = self
+            .connected_rx
+            .recv()
+            .await
+            .context("receive connected channel")?;
+        let fd = Arc::new(TerminalFd::new(fd)?);
+        self.set_tty(Arc::downgrade(&fd).into());
+
+        debug!("Changing terminal settings");
+        let mut term = termios::tcgetattr(&fd)?;
+        term.output_flags |= OutputFlags::ONLCR;
+        termios::tcsetattr(&fd, SetArg::TCSANOW, &term)?;
+
+        let attach_clone = self.attach.clone();
+        let logger_clone = self.logger.clone();
+        let (message_tx, message_rx) = mpsc::unbounded_channel();
+        self.message_rx = Some(message_rx);
+
+        task::spawn({
+            let fd = fd.clone();
+            async move {
+                if let Err(e) = ContainerIO::read_loop(
+                    &*fd,
+                    Pipe::StdOut,
+                    logger_clone,
+                    message_tx,
+                    attach_clone,
+                )
+                .await
+                {
+                    error!("Stdout read loop failure: {:#}", e)
+                }
+                Ok::<_, anyhow::Error>(())
+            }
+            .instrument(debug_span!("read_loop"))
+        });
+
+        if stdin {
+            let attach_clone = self.attach.clone();
+            task::spawn(
+                async move {
+                    if let Err(e) = ContainerIO::read_loop_stdin(&*fd, attach_clone, token).await {
+                        error!("Stdin read loop failure: {:#}", e);
+                    }
+                }
+                .instrument(debug_span!("read_loop_stdin")),
+            );
+        }
+
+        Ok(())
+    }
+
+    /// Resize the terminal width and height.
+    pub fn resize(&self, width: u16, height: u16) -> Result<()> {
+        debug!("Resizing terminal to width {} and height {}", width, height);
+        let ws = winsize {
+            ws_row: height,
+            ws_col: width,
+            ws_xpixel: 0,
+            ws_ypixel: 0,
+        };
+        let tty = self.tty().as_ref().and_then(Weak::upgrade);
+        match unsafe {
+            libc::ioctl(
+                tty.context("terminal not connected")?.as_raw_fd(),
+                TIOCSWINSZ,
+                &ws,
+            )
+        } {
+            0 => Ok(()),
+            _ => Err(io::Error::last_os_error().into()),
+        }
+    }
+
+    async fn listen(config: Config) -> Result<()> {
+        let path = config.path();
+        debug!("Listening terminal socket on {}", path.display());
+        let listener = Listener::<DefaultListener>::default().bind_long_path(path)?;
+
+        // Update the permissions
+        let mut perms = fs::metadata(path).await?.permissions();
+        perms.set_mode(0o700);
+        fs::set_permissions(path, perms).await?;
+
+        config
+            .ready_tx()
+            .send(())
+            .map_err(|_| format_err!("unable to send ready message"))?;
+
+        let stream = listener.accept().await?.0;
+        debug!("Got terminal socket stream: {:?}", stream);
+
+        Self::handle_fd_receive(stream, config).await
+    }
+
+    async fn handle_fd_receive(mut stream: UnixStream, config: Config) -> Result<()> {
+        loop {
+            if !stream.ready(Interest::READABLE).await?.is_readable() {
+                continue;
+            }
+
+            let mut data_buffer = [];
+            let mut fd_buffer: [RawFd; 1] = [0];
+
+            match stream.recv_with_fd(&mut data_buffer, &mut fd_buffer) {
+                Ok((_, fd_read)) => {
+                    // take ownership of the received file descriptor (prevents fd leak in case of error)
+                    let fd = (fd_read != 0).then(|| unsafe { OwnedFd::from_raw_fd(fd_buffer[0]) });
+
+                    // Allow only one single read
+                    let path = config.path();
+                    debug!("Removing socket path {}", path.display());
+                    fs::remove_file(path).await?;
+
+                    debug!("Shutting down receiver stream");
+                    stream.shutdown().await?;
+
+                    if fd.is_none() {
+                        error!("No file descriptor received");
+                    }
+
+                    let fd = fd.context("got no file descriptor")?;
+
+                    debug!("Received terminal file descriptor");
+
+                    config
+                        .connected_tx
+                        .send(fd)
+                        .await
+                        .context("send connected channel")?;
+
+                    debug!("Shutting down listener thread");
+                    return Ok(());
+                }
+                Err(ref e) if e.kind() == ErrorKind::WouldBlock => {
+                    trace!("WouldBlock error, retrying");
+                    continue;
+                }
+                Err(e) => {
+                    error!("Unable to receive data: {}", e);
+                    return Err(e.into());
+                }
+            }
+        }
+    }
+}
+
+impl Drop for Terminal {
+    fn drop(&mut self) {
+        if let Err(e) = std::fs::remove_file(self.path()) {
+            trace!(
+                "Unable to remove socket file path {}: {}",
+                self.path().display(),
+                e
+            )
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::container_log::ContainerLog;
+    use nix::pty;
+    use sendfd::SendWithFd;
+
+    #[tokio::test(flavor = "multi_thread")]
+    async fn new_success() -> Result<()> {
+        let logger = ContainerLog::new();
+        let attach = SharedContainerAttach::default();
+        let token = CancellationToken::new();
+
+        let mut sut = Terminal::new(logger, attach)?;
+        assert!(sut.path().exists());
+
+        let res = pty::openpty(None, None)?;
+
+        let stream = UnixStream::connect(sut.path()).await?;
+        loop {
+            let ready = stream.ready(Interest::WRITABLE).await?;
+            if ready.is_writable() {
+                match stream.send_with_fd(b"test", &[res.master.as_raw_fd()]) {
+                    Ok(_) => break,
+                    Err(ref e) if e.kind() == ErrorKind::WouldBlock => continue,
+                    Err(e) => anyhow::bail!(e),
+                }
+            }
+        }
+
+        sut.wait_connected(true, token).await?;
+        assert!(!sut.path().exists());
+
+        // Write to the slave
+        let mut file: std::fs::File = res.slave.into();
+        file.write_all(b"test")?;
+
+        Ok(())
+    }
+}
+
+#[derive(Debug)]
+struct TerminalFd(AsyncFd<std::fs::File>);
+
+impl TerminalFd {
+    fn new(fd: OwnedFd) -> io::Result<Self> {
+        let flags = fcntl::fcntl(fd.as_raw_fd(), FcntlArg::F_GETFL)?;
+        let flags = OFlag::from_bits_truncate(flags) | OFlag::O_NONBLOCK;
+        fcntl::fcntl(fd.as_raw_fd(), FcntlArg::F_SETFL(flags))?;
+        AsyncFd::new(fd.into()).map(Self)
+    }
+}
+
+impl AsRawFd for TerminalFd {
+    fn as_raw_fd(&self) -> RawFd {
+        self.0.as_raw_fd()
+    }
+}
+
+impl AsFd for TerminalFd {
+    fn as_fd(&self) -> BorrowedFd {
+        self.0.as_fd()
+    }
+}
+
+impl AsyncRead for &TerminalFd {
+    fn poll_read(
+        self: Pin<&mut Self>,
+        cx: &mut Context,
+        buf: &mut ReadBuf,
+    ) -> Poll<io::Result<()>> {
+        loop {
+            let mut guard = ready!(self.0.poll_read_ready(cx))?;
+            match guard.try_io(|inner| inner.get_ref().read(buf.initialize_unfilled())) {
+                Ok(n) => {
+                    buf.advance(n?);
+                    break Poll::Ready(Ok(()));
+                }
+                Err(_would_block) => continue,
+            }
+        }
+    }
+}
+
+impl AsyncWrite for &TerminalFd {
+    fn poll_write(self: Pin<&mut Self>, cx: &mut Context, buf: &[u8]) -> Poll<io::Result<usize>> {
+        loop {
+            let mut guard = ready!(self.0.poll_write_ready(cx))?;
+            match guard.try_io(|inner| inner.get_ref().write(buf)) {
+                Ok(result) => break Poll::Ready(result),
+                Err(_would_block) => continue,
+            }
+        }
+    }
+
+    fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context) -> Poll<io::Result<()>> {
+        Poll::Ready(Ok(()))
+    }
+
+    fn poll_shutdown(self: Pin<&mut Self>, _cx: &mut Context) -> Poll<io::Result<()>> {
+        Poll::Ready(Ok(()))
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs/version.rs.html b/src/conmonrs/version.rs.html new file mode 100644 index 0000000000..3cf54ff75c --- /dev/null +++ b/src/conmonrs/version.rs.html @@ -0,0 +1,213 @@ +version.rs - source

conmonrs/
version.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
//! Generic version information for conmon
+
+#![allow(clippy::uninlined_format_args)]
+#![allow(clippy::needless_raw_string_hashes)]
+
+use getset::CopyGetters;
+use shadow_rs::shadow;
+
+shadow!(build);
+
+#[derive(CopyGetters, Debug, Default, Eq, PartialEq)]
+#[getset(get_copy = "pub")]
+/// The version structure.
+pub struct Version {
+    /// Specifies if the output should contain verbose debug information.
+    verbose: bool,
+
+    /// The current crate version.
+    version: &'static str,
+
+    /// The tag of the build, empty if not available.
+    tag: &'static str,
+
+    /// The git commit SHA of the build.
+    commit: &'static str,
+
+    /// The build date string.
+    build_date: &'static str,
+
+    /// The target triple string.
+    target: &'static str,
+
+    /// The used Rust version.
+    rust_version: &'static str,
+
+    /// The used Cargo version.
+    cargo_version: &'static str,
+
+    /// The cargo dependency tree, only available in verbose output.
+    cargo_tree: &'static str,
+}
+
+impl Version {
+    /// Create a new Version instance.
+    pub fn new(verbose: bool) -> Self {
+        Self {
+            verbose,
+            version: build::PKG_VERSION,
+            tag: build::TAG,
+            commit: build::COMMIT_HASH,
+            build_date: build::BUILD_TIME,
+            target: build::BUILD_TARGET,
+            rust_version: build::RUST_VERSION,
+            cargo_version: build::CARGO_VERSION,
+            cargo_tree: if verbose { build::CARGO_TREE } else { "" },
+        }
+    }
+
+    /// Print the version information to stdout.
+    pub fn print(&self) {
+        println!("version: {}", self.version());
+        println!(
+            "tag: {}",
+            if self.tag().is_empty() {
+                "none"
+            } else {
+                self.tag()
+            }
+        );
+        println!("commit: {}", self.commit());
+        println!("build: {}", self.build_date());
+        println!("target: {}", self.target());
+        println!("{}", self.rust_version());
+        println!("{}", self.cargo_version());
+
+        if self.verbose() {
+            println!("\ncargo tree: {}", self.cargo_tree());
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn version_test() {
+        let v = Version::new(false);
+        assert_eq!(v.version(), build::PKG_VERSION);
+        assert_eq!(v.tag(), build::TAG);
+        assert_eq!(v.commit(), build::COMMIT_HASH);
+        assert_eq!(v.build_date(), build::BUILD_TIME);
+        assert_eq!(v.target(), build::BUILD_TARGET);
+        assert_eq!(v.rust_version(), build::RUST_VERSION);
+        assert_eq!(v.cargo_version(), build::CARGO_VERSION);
+        assert!(v.cargo_tree().is_empty());
+
+        v.print();
+    }
+
+    #[test]
+    fn version_test_verbose() {
+        let v = Version::new(true);
+        assert_eq!(v.cargo_tree(), build::CARGO_TREE);
+    }
+}
+
\ No newline at end of file diff --git a/src/conmonrs_cli/main.rs.html b/src/conmonrs_cli/main.rs.html new file mode 100644 index 0000000000..a7317033a0 --- /dev/null +++ b/src/conmonrs_cli/main.rs.html @@ -0,0 +1,75 @@ +main.rs - source

conmonrs_cli/
main.rs

+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
#![allow(clippy::needless_return)]
+use capnp_rpc::{rpc_twoparty_capnp, twoparty, RpcSystem};
+use conmon_common::conmon_capnp::conmon;
+use futures::{AsyncReadExt, FutureExt};
+use tokio::net::UnixStream;
+use tokio_util::compat::TokioAsyncReadCompatExt;
+
+#[tokio::main(flavor = "current_thread")]
+async fn main() -> Result<(), Box<dyn std::error::Error>> {
+    tokio::task::LocalSet::new()
+        .run_until(async move {
+            let stream = UnixStream::connect("conmon.sock").await?.compat();
+            let (reader, writer) = stream.split();
+
+            let rpc_network = Box::new(twoparty::VatNetwork::new(
+                reader,
+                writer,
+                rpc_twoparty_capnp::Side::Client,
+                Default::default(),
+            ));
+
+            let mut rpc_system = RpcSystem::new(rpc_network, None);
+            let client: conmon::Client = rpc_system.bootstrap(rpc_twoparty_capnp::Side::Server);
+
+            tokio::task::spawn_local(Box::pin(rpc_system.map(|_| ())));
+
+            let request = client.version_request();
+            let response = request.send().promise.await?;
+
+            println!(
+                "received: {}",
+                response.get()?.get_response()?.get_version()?.to_str()?
+            );
+            Ok(())
+        })
+        .await
+}
+
\ No newline at end of file diff --git a/static.files/COPYRIGHT-eb44e4cf.txt b/static.files/COPYRIGHT-eb44e4cf.txt new file mode 100644 index 0000000000..1447df792f --- /dev/null +++ b/static.files/COPYRIGHT-eb44e4cf.txt @@ -0,0 +1,50 @@ +# REUSE-IgnoreStart + +These documentation pages include resources by third parties. This copyright +file applies only to those resources. The following third party resources are +included, and carry their own copyright notices and license terms: + +* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2): + + Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ + with Reserved Font Name Fira Sans. + + Copyright (c) 2014, Telefonica S.A. + + Licensed under the SIL Open Font License, Version 1.1. + See FiraSans-LICENSE.txt. + +* rustdoc.css, main.js, and playpen.js: + + Copyright 2015 The Rust Developers. + Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or + the MIT license (LICENSE-MIT.txt) at your option. + +* normalize.css: + + Copyright (c) Nicolas Gallagher and Jonathan Neal. + Licensed under the MIT license (see LICENSE-MIT.txt). + +* Source Code Pro (SourceCodePro-Regular.ttf.woff2, + SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2): + + Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), + with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark + of Adobe Systems Incorporated in the United States and/or other countries. + + Licensed under the SIL Open Font License, Version 1.1. + See SourceCodePro-LICENSE.txt. + +* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2, + SourceSerif4-It.ttf.woff2): + + Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name + 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United + States and/or other countries. + + Licensed under the SIL Open Font License, Version 1.1. + See SourceSerif4-LICENSE.md. + +This copyright file is intended to be distributed with rustdoc output. + +# REUSE-IgnoreEnd diff --git a/static.files/FiraSans-LICENSE-05ab6dbd.txt b/static.files/FiraSans-LICENSE-05ab6dbd.txt new file mode 100644 index 0000000000..d7e9c149b7 --- /dev/null +++ b/static.files/FiraSans-LICENSE-05ab6dbd.txt @@ -0,0 +1,98 @@ +// REUSE-IgnoreStart + +Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. +with Reserved Font Name < Fira >, + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/static.files/FiraSans-Medium-e1aa3f0a.woff2 b/static.files/FiraSans-Medium-e1aa3f0a.woff2 new file mode 100644 index 0000000000..7a1e5fc548 Binary files /dev/null and b/static.files/FiraSans-Medium-e1aa3f0a.woff2 differ diff --git a/static.files/FiraSans-Regular-0fe48ade.woff2 b/static.files/FiraSans-Regular-0fe48ade.woff2 new file mode 100644 index 0000000000..e766e06ccb Binary files /dev/null and b/static.files/FiraSans-Regular-0fe48ade.woff2 differ diff --git a/static.files/LICENSE-APACHE-a60eea81.txt b/static.files/LICENSE-APACHE-a60eea81.txt new file mode 100644 index 0000000000..16fe87b06e --- /dev/null +++ b/static.files/LICENSE-APACHE-a60eea81.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/static.files/LICENSE-MIT-23f18e03.txt b/static.files/LICENSE-MIT-23f18e03.txt new file mode 100644 index 0000000000..31aa79387f --- /dev/null +++ b/static.files/LICENSE-MIT-23f18e03.txt @@ -0,0 +1,23 @@ +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/static.files/NanumBarunGothic-13b3dcba.ttf.woff2 b/static.files/NanumBarunGothic-13b3dcba.ttf.woff2 new file mode 100644 index 0000000000..1866ad4bce Binary files /dev/null and b/static.files/NanumBarunGothic-13b3dcba.ttf.woff2 differ diff --git a/static.files/NanumBarunGothic-LICENSE-a37d393b.txt b/static.files/NanumBarunGothic-LICENSE-a37d393b.txt new file mode 100644 index 0000000000..4b3edc29eb --- /dev/null +++ b/static.files/NanumBarunGothic-LICENSE-a37d393b.txt @@ -0,0 +1,103 @@ +// REUSE-IgnoreStart + +Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/), + +with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, +NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen, +Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco, +NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight, NanumBarunGothic, +Naver NanumBarunGothic, NanumSquareRound, NanumBarunPen, MaruBuri + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/static.files/SourceCodePro-It-fc8b9304.ttf.woff2 b/static.files/SourceCodePro-It-fc8b9304.ttf.woff2 new file mode 100644 index 0000000000..462c34efcd Binary files /dev/null and b/static.files/SourceCodePro-It-fc8b9304.ttf.woff2 differ diff --git a/static.files/SourceCodePro-LICENSE-67f54ca7.txt b/static.files/SourceCodePro-LICENSE-67f54ca7.txt new file mode 100644 index 0000000000..0d2941e148 --- /dev/null +++ b/static.files/SourceCodePro-LICENSE-67f54ca7.txt @@ -0,0 +1,97 @@ +// REUSE-IgnoreStart + +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/static.files/SourceCodePro-Regular-8badfe75.ttf.woff2 b/static.files/SourceCodePro-Regular-8badfe75.ttf.woff2 new file mode 100644 index 0000000000..10b558e0b6 Binary files /dev/null and b/static.files/SourceCodePro-Regular-8badfe75.ttf.woff2 differ diff --git a/static.files/SourceCodePro-Semibold-aa29a496.ttf.woff2 b/static.files/SourceCodePro-Semibold-aa29a496.ttf.woff2 new file mode 100644 index 0000000000..5ec64eef0e Binary files /dev/null and b/static.files/SourceCodePro-Semibold-aa29a496.ttf.woff2 differ diff --git a/static.files/SourceSerif4-Bold-6d4fd4c0.ttf.woff2 b/static.files/SourceSerif4-Bold-6d4fd4c0.ttf.woff2 new file mode 100644 index 0000000000..181a07f63b Binary files /dev/null and b/static.files/SourceSerif4-Bold-6d4fd4c0.ttf.woff2 differ diff --git a/static.files/SourceSerif4-It-ca3b17ed.ttf.woff2 b/static.files/SourceSerif4-It-ca3b17ed.ttf.woff2 new file mode 100644 index 0000000000..2ae08a7bed Binary files /dev/null and b/static.files/SourceSerif4-It-ca3b17ed.ttf.woff2 differ diff --git a/static.files/SourceSerif4-LICENSE-a2cfd9d5.md b/static.files/SourceSerif4-LICENSE-a2cfd9d5.md new file mode 100644 index 0000000000..175fa4f47a --- /dev/null +++ b/static.files/SourceSerif4-LICENSE-a2cfd9d5.md @@ -0,0 +1,98 @@ + + +Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. +Copyright 2014 - 2023 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + + diff --git a/static.files/SourceSerif4-Regular-6b053e98.ttf.woff2 b/static.files/SourceSerif4-Regular-6b053e98.ttf.woff2 new file mode 100644 index 0000000000..0263fc3042 Binary files /dev/null and b/static.files/SourceSerif4-Regular-6b053e98.ttf.woff2 differ diff --git a/static.files/favicon-044be391.svg b/static.files/favicon-044be391.svg new file mode 100644 index 0000000000..8b34b51198 --- /dev/null +++ b/static.files/favicon-044be391.svg @@ -0,0 +1,24 @@ + + + + + diff --git a/static.files/favicon-32x32-6580c154.png b/static.files/favicon-32x32-6580c154.png new file mode 100644 index 0000000000..69b8613ce1 Binary files /dev/null and b/static.files/favicon-32x32-6580c154.png differ diff --git a/static.files/main-5f194d8c.js b/static.files/main-5f194d8c.js new file mode 100644 index 0000000000..3d672cb6e3 --- /dev/null +++ b/static.files/main-5f194d8c.js @@ -0,0 +1,11 @@ +"use strict";window.RUSTDOC_TOOLTIP_HOVER_MS=300;window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS=450;function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden");const toggle=document.getElementById("toggle-all-docs");if(toggle){toggle.setAttribute("disabled","disabled")}}function showMain(){const main=document.getElementById(MAIN_ID);removeClass(main,"hidden");const mainHeading=main.querySelector(".main-heading");if(mainHeading&&searchState.rustdocToolbar){if(searchState.rustdocToolbar.parentElement){searchState.rustdocToolbar.parentElement.removeChild(searchState.rustdocToolbar)}mainHeading.appendChild(searchState.rustdocToolbar)}const toggle=document.getElementById("toggle-all-docs");if(toggle){toggle.removeAttribute("disabled")}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileTopbar=document.querySelector(".mobile-topbar");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileTopbar){const mobileTitle=document.createElement("h2");mobileTitle.className="location";if(hasClass(document.querySelector(".rustdoc"),"crate")){mobileTitle.innerHTML=`Crate ${window.currentCrate}`}else if(locationTitle){mobileTitle.innerHTML=locationTitle.innerHTML}mobileTopbar.appendChild(mobileTitle)}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden");const mainHeading=elemToDisplay.querySelector(".main-heading");if(mainHeading&&searchState.rustdocToolbar){if(searchState.rustdocToolbar.parentElement){searchState.rustdocToolbar.parentElement.removeChild(searchState.rustdocToolbar)}mainHeading.appendChild(searchState.rustdocToolbar)}}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url,errorCallback){const script=document.createElement("script");script.src=url;if(errorCallback!==undefined){script.onerror=errorCallback}document.head.append(script)}if(getSettingsButton()){getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)}}window.searchState={rustdocToolbar:document.querySelector("rustdoc-toolbar"),loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=").map(x=>x.replace(/\+/g," "));params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function sendSearchForm(){document.getElementsByClassName("search-form")[0].submit()}function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"),sendSearchForm);loadScript(resourcePath("search-index",".js"),sendSearchForm)}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search)},descShards:new Map(),loadDesc:async function({descShard,descIndex}){if(descShard.promise===null){descShard.promise=new Promise((resolve,reject)=>{descShard.resolve=resolve;const ds=descShard;const fname=`${ds.crate}-desc-${ds.shard}-`;const url=resourcePath(`search.desc/${descShard.crate}/${fname}`,".js",);loadScript(url,reject)})}const list=await descShard.promise;return list[descIndex]},loadedDescShard:function(crate,shard,data){this.descShards.get(crate)[shard].resolve(data.split("\n"))},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}if(savedHash.startsWith("impl-")){const splitAt=savedHash.indexOf("/");if(splitAt!==-1){const implId=savedHash.slice(0,splitAt);const assocId=savedHash.slice(splitAt+1);const implElems=document.querySelectorAll(`details > summary > section[id^="${implId}"]`,);onEachLazy(implElems,implElem=>{const numbered=/^(.+?)-([0-9]+)$/.exec(implElem.id);if(implElem.id!==implId&&(!numbered||numbered[1]!==implId)){return false}return onEachLazy(implElem.parentElement.parentElement.querySelectorAll(`[id^="${assocId}"]`),item=>{const numbered=/^(.+?)-([0-9]+)$/.exec(item.id);if(item.id===assocId||(numbered&&numbered[1]===assocId)){openParentDetails(item);item.scrollIntoView();setTimeout(()=>{window.location.replace("#"+item.id)},0);return true}},)})}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":case"/":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementById("rustdoc-modnav");function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const modpath=hasClass(document.querySelector(".rustdoc"),"mod")?"../":"";const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=`${modpath}${name}/index.html`}else{path=`${modpath}${shortty}.${name}.html`}let current_page=document.location.href.toString();if(current_page.endsWith("/")){current_page+="index.html"}const link=document.createElement("a");link.href=path;link.textContent=name;const li=document.createElement("li");if(link.href===current_page){li.classList.add("current")}li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("union","unions","Unions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("attr","attributes","Attribute Macros");block("derive","derives","Derive Macros");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","),);for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}window.register_type_impls=imp=>{if(!imp||!imp[window.currentCrate]){return}window.pending_type_impls=null;const idMap=new Map();let implementations=document.getElementById("implementations-list");let trait_implementations=document.getElementById("trait-implementations-list");let trait_implementations_header=document.getElementById("trait-implementations");const script=document.querySelector("script[data-self-path]");const selfPath=script?script.getAttribute("data-self-path"):null;const mainContent=document.querySelector("#main-content");const sidebarSection=document.querySelector(".sidebar section");let methods=document.querySelector(".sidebar .block.method");let associatedTypes=document.querySelector(".sidebar .block.associatedtype");let associatedConstants=document.querySelector(".sidebar .block.associatedconstant");let sidebarTraitList=document.querySelector(".sidebar .block.trait-implementation");for(const impList of imp[window.currentCrate]){const types=impList.slice(2);const text=impList[0];const isTrait=impList[1]!==0;const traitName=impList[1];if(types.indexOf(selfPath)===-1){continue}let outputList=isTrait?trait_implementations:implementations;if(outputList===null){const outputListName=isTrait?"Trait Implementations":"Implementations";const outputListId=isTrait?"trait-implementations-list":"implementations-list";const outputListHeaderId=isTrait?"trait-implementations":"implementations";const outputListHeader=document.createElement("h2");outputListHeader.id=outputListHeaderId;outputListHeader.innerText=outputListName;outputList=document.createElement("div");outputList.id=outputListId;if(isTrait){const link=document.createElement("a");link.href=`#${outputListHeaderId}`;link.innerText="Trait Implementations";const h=document.createElement("h3");h.appendChild(link);trait_implementations=outputList;trait_implementations_header=outputListHeader;sidebarSection.appendChild(h);sidebarTraitList=document.createElement("ul");sidebarTraitList.className="block trait-implementation";sidebarSection.appendChild(sidebarTraitList);mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}else{implementations=outputList;if(trait_implementations){mainContent.insertBefore(outputListHeader,trait_implementations_header);mainContent.insertBefore(outputList,trait_implementations_header)}else{const mainContent=document.querySelector("#main-content");mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}}}const template=document.createElement("template");template.innerHTML=text;onEachLazy(template.content.querySelectorAll("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});onEachLazy(template.content.querySelectorAll("[id]"),el=>{let i=0;if(idMap.has(el.id)){i=idMap.get(el.id)}else if(document.getElementById(el.id)){i=1;while(document.getElementById(`${el.id}-${2 * i}`)){i=2*i}while(document.getElementById(`${el.id}-${i}`)){i+=1}}if(i!==0){const oldHref=`#${el.id}`;const newHref=`#${el.id}-${i}`;el.id=`${el.id}-${i}`;onEachLazy(template.content.querySelectorAll("a[href]"),link=>{if(link.getAttribute("href")===oldHref){link.href=newHref}})}idMap.set(el.id,i+1)});const templateAssocItems=template.content.querySelectorAll("section.tymethod, "+"section.method, section.associatedtype, section.associatedconstant");if(isTrait){const li=document.createElement("li");const a=document.createElement("a");a.href=`#${template.content.querySelector(".impl").id}`;a.textContent=traitName;li.appendChild(a);sidebarTraitList.append(li)}else{onEachLazy(templateAssocItems,item=>{let block=hasClass(item,"associatedtype")?associatedTypes:(hasClass(item,"associatedconstant")?associatedConstants:(methods));if(!block){const blockTitle=hasClass(item,"associatedtype")?"Associated Types":(hasClass(item,"associatedconstant")?"Associated Constants":("Methods"));const blockClass=hasClass(item,"associatedtype")?"associatedtype":(hasClass(item,"associatedconstant")?"associatedconstant":("method"));const blockHeader=document.createElement("h3");const blockLink=document.createElement("a");blockLink.href="#implementations";blockLink.innerText=blockTitle;blockHeader.appendChild(blockLink);block=document.createElement("ul");block.className=`block ${blockClass}`;const insertionReference=methods||sidebarTraitList;if(insertionReference){const insertionReferenceH=insertionReference.previousElementSibling;sidebarSection.insertBefore(blockHeader,insertionReferenceH);sidebarSection.insertBefore(block,insertionReferenceH)}else{sidebarSection.appendChild(blockHeader);sidebarSection.appendChild(block)}if(hasClass(item,"associatedtype")){associatedTypes=block}else if(hasClass(item,"associatedconstant")){associatedConstants=block}else{methods=block}}const li=document.createElement("li");const a=document.createElement("a");a.innerText=item.id.split("-")[0].split(".")[1];a.href=`#${item.id}`;li.appendChild(a);block.appendChild(li)})}outputList.appendChild(template.content)}for(const list of[methods,associatedTypes,associatedConstants,sidebarTraitList]){if(!list){continue}const newChildren=Array.prototype.slice.call(list.children);newChildren.sort((a,b)=>{const aI=a.innerText;const bI=b.innerText;return aIbI?1:0});list.replaceChildren(...newChildren)}};if(window.pending_type_impls){window.register_type_impls(window.pending_type_impls)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementById("rustdoc-modnav");if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";link.textContent=crate;const li=document.createElement("li");if(window.rootPath!=="./"&&crate===window.currentCrate){li.className="current"}li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.children[0].innerText="Summary"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.children[0].innerText="Show all"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{if(document.querySelector(".rustdoc.src")){return}onEachLazy(document.querySelectorAll(":not(.scraped-example) > .example-wrap > pre:not(.example-line-numbers)",),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.querySelectorAll(".example-wrap > .example-line-numbers"),x=>{x.parentNode.removeChild(x)})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
"+window.NOTABLE_TRAITS[notable_ty]+"
"}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";document.body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px",)}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!e.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.contains(event.relatedTarget)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(event.relatedTarget)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}document.body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){if(!getHelpButton().contains(document.activeElement)&&!getHelpButton().contains(event.relatedTarget)&&!getSettingsButton().contains(document.activeElement)&&!getSettingsButton().contains(event.relatedTarget)){window.hidePopoverMenus()}}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ +the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S / /","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
"+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
"+x[1]+"
").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

Keyboard Shortcuts

"+shortcuts+"
";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for functions that accept or return \ + slices and \ + arrays by writing \ + square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

"+x+"

").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

Search Tricks

"+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll("rustdoc-toolbar .popover"),elem=>{elem.style.display="none"});const button=getHelpButton();if(button){removeClass(button,"help-open")}};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){const button=getHelpButton();addClass(button,"help-open");button.querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}const helpLink=document.querySelector(`#${HELP_BUTTON_ID} > a`);if(isHelpPage){buildHelpMenu()}else if(helpLink){helpLink.addEventListener("click",event=>{if(!helpLink.contains(helpLink)||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){const SIDEBAR_MIN=100;const SIDEBAR_MAX=500;const RUSTDOC_MOBILE_BREAKPOINT=700;const BODY_MIN=400;const SIDEBAR_VANISH_THRESHOLD=SIDEBAR_MIN/2;const sidebarButton=document.getElementById("sidebar-button");if(sidebarButton){sidebarButton.addEventListener("click",e=>{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false");if(document.querySelector(".rustdoc.src")){window.rustdocToggleSrcSidebar()}e.preventDefault()})}let currentPointerId=null;let desiredSidebarSize=null;let pendingSidebarResizingFrame=false;const resizer=document.querySelector(".sidebar-resizer");const sidebar=document.querySelector(".sidebar");if(!resizer||!sidebar){return}const isSrcPage=hasClass(document.body,"src");function hideSidebar(){if(isSrcPage){window.rustdocCloseSourceSidebar();updateLocalStorage("src-sidebar-width",null);document.documentElement.style.removeProperty("--src-sidebar-width");sidebar.style.removeProperty("--src-sidebar-width");resizer.style.removeProperty("--src-sidebar-width")}else{addClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","true");updateLocalStorage("desktop-sidebar-width",null);document.documentElement.style.removeProperty("--desktop-sidebar-width");sidebar.style.removeProperty("--desktop-sidebar-width");resizer.style.removeProperty("--desktop-sidebar-width")}}function showSidebar(){if(isSrcPage){window.rustdocShowSourceSidebar()}else{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false")}}function changeSidebarSize(size){if(isSrcPage){updateLocalStorage("src-sidebar-width",size);sidebar.style.setProperty("--src-sidebar-width",size+"px");resizer.style.setProperty("--src-sidebar-width",size+"px")}else{updateLocalStorage("desktop-sidebar-width",size);sidebar.style.setProperty("--desktop-sidebar-width",size+"px");resizer.style.setProperty("--desktop-sidebar-width",size+"px")}}function isSidebarHidden(){return isSrcPage?!hasClass(document.documentElement,"src-sidebar-expanded"):hasClass(document.documentElement,"hide-sidebar")}function resize(e){if(currentPointerId===null||currentPointerId!==e.pointerId){return}e.preventDefault();const pos=e.clientX-3;if(pos=SIDEBAR_MIN){if(isSidebarHidden()){showSidebar()}const constrainedPos=Math.min(pos,window.innerWidth-BODY_MIN,SIDEBAR_MAX);changeSidebarSize(constrainedPos);desiredSidebarSize=constrainedPos;if(pendingSidebarResizingFrame!==false){clearTimeout(pendingSidebarResizingFrame)}pendingSidebarResizingFrame=setTimeout(()=>{if(currentPointerId===null||pendingSidebarResizingFrame===false){return}pendingSidebarResizingFrame=false;document.documentElement.style.setProperty("--resizing-sidebar-width",desiredSidebarSize+"px",)},100)}}window.addEventListener("resize",()=>{if(window.innerWidth=(window.innerWidth-BODY_MIN)){changeSidebarSize(window.innerWidth-BODY_MIN)}else if(desiredSidebarSize!==null&&desiredSidebarSize>SIDEBAR_MIN){changeSidebarSize(desiredSidebarSize)}});function stopResize(e){if(currentPointerId===null){return}if(e){e.preventDefault()}desiredSidebarSize=sidebar.getBoundingClientRect().width;removeClass(resizer,"active");window.removeEventListener("pointermove",resize,false);window.removeEventListener("pointerup",stopResize,false);removeClass(document.documentElement,"sidebar-resizing");document.documentElement.style.removeProperty("--resizing-sidebar-width");if(resizer.releasePointerCapture){resizer.releasePointerCapture(currentPointerId);currentPointerId=null}}function initResize(e){if(currentPointerId!==null||e.altKey||e.ctrlKey||e.metaKey||e.button!==0){return}if(resizer.setPointerCapture){resizer.setPointerCapture(e.pointerId);if(!resizer.hasPointerCapture(e.pointerId)){resizer.releasePointerCapture(e.pointerId);return}currentPointerId=e.pointerId}window.hideAllModals(false);e.preventDefault();window.addEventListener("pointermove",resize,false);window.addEventListener("pointercancel",stopResize,false);window.addEventListener("pointerup",stopResize,false);addClass(resizer,"active");addClass(document.documentElement,"sidebar-resizing");const pos=e.clientX-sidebar.offsetLeft-3;document.documentElement.style.setProperty("--resizing-sidebar-width",pos+"px");desiredSidebarSize=null}resizer.addEventListener("pointerdown",initResize,false)}());(function(){function copyContentToClipboard(content){const el=document.createElement("textarea");el.value=content;el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el)}function copyButtonAnimation(button){button.classList.add("clicked");if(button.reset_button_timeout!==undefined){window.clearTimeout(button.reset_button_timeout)}button.reset_button_timeout=window.setTimeout(()=>{button.reset_button_timeout=undefined;button.classList.remove("clicked")},1000)}const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const title=document.querySelector("title").textContent.replace(" - Rust","");const[item,module]=title.split(" in ");const path=[item];if(module!==undefined){path.unshift(module)}copyContentToClipboard(path.join("::"));copyButtonAnimation(but)};function copyCode(codeElem){if(!codeElem){return}copyContentToClipboard(codeElem.textContent)}function getExampleWrap(event){let elem=event.target;while(!hasClass(elem,"example-wrap")){if(elem===document.body||elem.tagName==="A"||elem.tagName==="BUTTON"||hasClass(elem,"docblock")){return null}elem=elem.parentElement}return elem}function addCopyButton(event){const elem=getExampleWrap(event);if(elem===null){return}elem.removeEventListener("mouseover",addCopyButton);const parent=document.createElement("div");parent.className="button-holder";const runButton=elem.querySelector(".test-arrow");if(runButton!==null){parent.appendChild(runButton)}elem.appendChild(parent);const copyButton=document.createElement("button");copyButton.className="copy-button";copyButton.title="Copy code to clipboard";copyButton.addEventListener("click",()=>{copyCode(elem.querySelector("pre > code"));copyButtonAnimation(copyButton)});parent.appendChild(copyButton);if(!elem.parentElement.classList.contains("scraped-example")){return}const scrapedWrapped=elem.parentElement;window.updateScrapedExample(scrapedWrapped,parent)}function showHideCodeExampleButtons(event){const elem=getExampleWrap(event);if(elem===null){return}let buttons=elem.querySelector(".button-holder");if(buttons===null){addCopyButton(event);buttons=elem.querySelector(".button-holder");if(buttons===null){return}}buttons.classList.toggle("keep-visible")}onEachLazy(document.querySelectorAll(".docblock .example-wrap"),elem=>{elem.addEventListener("mouseover",addCopyButton);elem.addEventListener("click",showHideCodeExampleButtons)})}()) \ No newline at end of file diff --git a/static.files/normalize-9960930a.css b/static.files/normalize-9960930a.css new file mode 100644 index 0000000000..469959f137 --- /dev/null +++ b/static.files/normalize-9960930a.css @@ -0,0 +1,2 @@ + /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type="button"],[type="reset"],[type="submit"],button{-webkit-appearance:button}[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none} \ No newline at end of file diff --git a/static.files/noscript-893ab5e7.css b/static.files/noscript-893ab5e7.css new file mode 100644 index 0000000000..a6c18ecaf6 --- /dev/null +++ b/static.files/noscript-893ab5e7.css @@ -0,0 +1 @@ + #main-content .attributes{margin-left:0 !important;}#copy-path,#sidebar-button,.sidebar-resizer{display:none !important;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root,:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--code-example-button-color:#7f7f7f;--code-example-button-hover-color:#595959;--settings-menu-filter:invert(50%);--settings-menu-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}@media (prefers-color-scheme:dark){:root,:root:not([data-theme]){--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--code-example-button-color:#7f7f7f;--code-example-button-hover-color:#a5a5a5;--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--settings-menu-filter:invert(50%);--settings-menu-hover-filter:invert(65%);--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}} \ No newline at end of file diff --git a/static.files/rust-logo-9a9549ea.svg b/static.files/rust-logo-9a9549ea.svg new file mode 100644 index 0000000000..62424d8ffd --- /dev/null +++ b/static.files/rust-logo-9a9549ea.svg @@ -0,0 +1,61 @@ + + + diff --git a/static.files/rustdoc-46132b98.css b/static.files/rustdoc-46132b98.css new file mode 100644 index 0000000000..2efac0bd7a --- /dev/null +++ b/static.files/rustdoc-46132b98.css @@ -0,0 +1,53 @@ + :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;--desktop-sidebar-width:200px;--src-sidebar-width:300px;--desktop-sidebar-z-index:100;--sidebar-elems-left-padding:24px;--clipboard-image:url('data:image/svg+xml,\ +\ +\ +');--copy-path-height:34px;--copy-path-width:33px;--checkmark-image:url('data:image/svg+xml,\ +\ +');--button-left-margin:4px;--button-border-radius:2px;--toolbar-button-border-radius:6px;--code-block-border-radius:6px;--impl-items-indent:0.3em;--docblock-indent:24px;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-0fe48ade.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-e1aa3f0a.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-6b053e98.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-ca3b17ed.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-6d4fd4c0.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-8badfe75.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-fc8b9304.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-aa29a496.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-13b3dcba.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;grid-area:main-heading-h1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{position:relative;display:grid;grid-template-areas:"main-heading-breadcrumbs main-heading-breadcrumbs" "main-heading-h1 main-heading-toolbar" "main-heading-sub-heading main-heading-toolbar";grid-template-columns:minmax(105px,1fr) minmax(0,max-content);grid-template-rows:minmax(25px,min-content) min-content min-content;padding-bottom:6px;margin-bottom:15px;}.rustdoc-breadcrumbs{grid-area:main-heading-breadcrumbs;line-height:1.25;display:flex;flex-wrap:wrap;align-items:end;padding-top:5px;}.rustdoc-breadcrumbs a{padding:4px 0;margin:-4px 0;z-index:1;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}.structfield,.sub-variant-field{margin:0.6em 0;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,.sub-heading,span.since,a.src,rustdoc-toolbar,summary.hideme,.scraped-example-list,.rustdoc-breadcrumbs,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.search-results li,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,.code-header,.type-signature{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap .src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.logo-container{line-height:0;display:block;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 var(--desktop-sidebar-width);width:var(--desktop-sidebar-width);overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;z-index:var(--desktop-sidebar-z-index);}.rustdoc.src .sidebar{flex-basis:50px;width:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.hide-sidebar .sidebar,.hide-sidebar .sidebar-resizer{display:none;}.sidebar-resizer{touch-action:none;width:9px;cursor:col-resize;z-index:calc(var(--desktop-sidebar-z-index) + 1);position:fixed;height:100%;left:calc(var(--desktop-sidebar-width) + 1px);}.rustdoc.src .sidebar-resizer{left:49px;}.src-sidebar-expanded .src .sidebar-resizer{left:var(--src-sidebar-width);}.sidebar-resizing{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;}.sidebar-resizing*{cursor:col-resize !important;}.sidebar-resizing .sidebar{position:fixed;}.sidebar-resizing>body{padding-left:var(--resizing-sidebar-width);}.sidebar-resizer:hover,.sidebar-resizer:active,.sidebar-resizer:focus,.sidebar-resizer.active{width:10px;margin:0;left:var(--desktop-sidebar-width);border-left:solid 1px var(--sidebar-resizer-hover);}.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:active,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:focus,.src-sidebar-expanded .rustdoc.src .sidebar-resizer.active{left:calc(var(--src-sidebar-width) - 1px);}@media (pointer:coarse){.sidebar-resizer{display:none !important;}}.sidebar-resizer.active{padding:0 140px;width:2px;margin-left:-140px;border-left:none;}.sidebar-resizer.active:before{border-left:solid 2px var(--sidebar-resizer-active);display:block;height:100%;content:"";}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}.src .sidebar>*{visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:var(--src-sidebar-width);width:var(--src-sidebar-width);}.src-sidebar-expanded .src .sidebar>*{visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.logo-container>img{height:48px;width:48px;}ul.block,.block li,.block ul{padding:0;margin:0;list-style:none;}.block ul a{padding-left:1rem;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-right:0.25rem;border-left:solid var(--sidebar-elems-left-padding) transparent;margin-left:calc(-0.25rem - var(--sidebar-elems-left-padding));background-clip:border-box;}.hide-toc #rustdoc-toc,.hide-toc .in-crate{display:none;}.hide-modnav #rustdoc-modnav{display:none;}.sidebar h2{text-wrap:balance;overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{text-wrap:balance;overflow-wrap:anywhere;font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>.version,.sidebar>h2{padding-left:var(--sidebar-elems-left-padding);}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar .current a,.sidebar-crate a.logo-container:hover+h2 a,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.sidebar-crate{display:flex;align-items:center;justify-content:center;margin:14px 32px 1rem;row-gap:10px;column-gap:32px;flex-wrap:wrap;}.sidebar-crate h2{flex-grow:1;margin:0 -8px;align-self:start;}.sidebar-crate .logo-container{margin:0 calc(-16px - var(--sidebar-elems-left-padding));padding:0 var(--sidebar-elems-left-padding);text-align:center;}.sidebar-crate .logo-container img{margin-top:-16px;border-top:solid 16px transparent;box-sizing:content-box;position:relative;background-clip:border-box;z-index:1;}.sidebar-crate h2 a{display:block;border-left:solid var(--sidebar-elems-left-padding) transparent;background-clip:border-box;margin:0 calc(-24px + 0.25rem) 0 calc(-0.2rem - var(--sidebar-elems-left-padding));padding:calc((16px - 0.57rem ) / 2 ) 0.25rem;padding-left:0.2rem;}.sidebar-crate h2 .version{display:block;font-weight:normal;font-size:1rem;overflow-wrap:break-word;}.sidebar-crate+.version{margin-top:-1rem;margin-bottom:1rem;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap>pre,.rustdoc .scraped-example .src-line-numbers,.rustdoc .scraped-example .src-line-numbers>pre{border-radius:6px;}.rustdoc .example-wrap>.example-line-numbers,.rustdoc .scraped-example .src-line-numbers,.rustdoc .scraped-example .src-line-numbers>pre{border-top-right-radius:0;border-bottom-right-radius:0;}.rustdoc .example-wrap>.example-line-numbers+pre,.rustdoc .scraped-example .rust{border-top-left-radius:0;border-bottom-left-radius:0;}.rustdoc .scraped-example{position:relative;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.scraped-example:not(.expanded) .example-wrap{max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .example-wrap{max-height:calc(1.5em * 10 + 10px);}.rustdoc:not(.src) .scraped-example:not(.expanded) .src-line-numbers,.rustdoc:not(.src) .scraped-example:not(.expanded) .src-line-numbers>pre,.rustdoc:not(.src) .scraped-example:not(.expanded) pre.rust{padding-bottom:0;overflow:auto hidden;}.rustdoc:not(.src) .scraped-example .src-line-numbers{padding-top:0;}.rustdoc:not(.src) .scraped-example.expanded .src-line-numbers{padding-bottom:0;}.rustdoc:not(.src) .example-wrap pre{overflow:auto;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap .src-line-numbers{min-width:fit-content;flex-grow:0;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;padding-right:2px;color:var(--src-line-numbers-span-color);}.rustdoc .scraped-example .example-wrap .src-line-numbers{padding:0;}.rustdoc .src-line-numbers pre{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:var(--docblock-indent);position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.sub-heading{font-size:1rem;flex-grow:0;grid-area:main-heading-sub-heading;line-height:1.25;padding-bottom:4px;}.main-heading rustdoc-toolbar,.main-heading .out-of-band{grid-area:main-heading-toolbar;}rustdoc-toolbar{display:flex;flex-direction:row;flex-wrap:nowrap;min-height:60px;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap,.example-wrap .src-line-numbers{background-color:var(--code-block-background-color);border-radius:var(--code-block-border-radius);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.docblock .stab,.docblock-short .stab,.docblock p code{display:inline-block;}.docblock li{margin-bottom:.4em;}.docblock li p:not(:last-child){margin-bottom:.3em;}div.where{white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:var(--docblock-indent);}.impl-items>.item-info{margin-left:calc(var(--docblock-indent) + var(--impl-items-indent));}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 0 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;margin-bottom:4px;}.src nav.sub{margin:0 0 -10px 0;}.section-header{display:block;position:relative;}.section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.section-header>.anchor{left:-15px;padding-right:8px;}h2.section-header>.anchor{padding-right:6px;}a.doc-anchor{color:var(--main-color);display:none;position:absolute;left:-17px;padding-right:10px;padding-left:3px;}*:hover>.doc-anchor{display:block;}.top-doc>.docblock>*:first-child>.doc-anchor{display:none !important;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.scrape-help):not(.tooltip):hover:not(.doc-anchor),.docblock-short a:not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block li.current a{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;width:100%;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}.search-results-title+.sub-heading{color:var(--main-color);display:flex;align-items:baseline;white-space:nowrap;}#crate-search-div{position:relative;min-width:0;}#crate-search{padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ + ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;margin:0;padding:0;}.search-results>a{display:grid;grid-template-areas:"search-result-name search-result-desc" "search-result-type-signature search-result-type-signature";grid-template-columns:.6fr .4fr;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);column-gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;grid-area:search-result-desc;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;grid-area:search-result-name;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.search-results .type-signature{grid-area:search-result-type-signature;white-space:pre-wrap;}.popover{position:absolute;top:100%;right:0;z-index:calc(var(--desktop-sidebar-z-index) + 1);margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ + \ + ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#settings.popover{--popover-arrow-offset:202px;top:calc(100% - 16px);}#help.popover{max-width:600px;--popover-arrow-offset:118px;top:calc(100% - 16px);}#help dt{float:left;clear:left;margin-right:0.5rem;}#help dd{margin-bottom:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;padding:0 0.5rem;text-wrap-style:balance;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side{display:flex;margin-bottom:20px;}.side-by-side>div{width:50%;padding:0 20px 0 17px;}.item-info .stab{display:block;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;vertical-align:baseline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji,.item-info .stab::before{font-size:1.25rem;}.stab .emoji{margin-right:0.3rem;}.item-info .stab::before{content:"\0";width:0;display:inline-block;color:transparent;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band,.sub-heading,rustdoc-toolbar{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}.top-doc>.docblock>.warning:first-child::before{top:20px;}.example-wrap>a.test-arrow,.example-wrap .button-holder{visibility:hidden;position:absolute;top:4px;right:4px;z-index:1;}a.test-arrow{height:var(--copy-path-height);padding:6px 4px 0 11px;}a.test-arrow::before{content:url('data:image/svg+xml,');}.example-wrap .button-holder{display:flex;}@media not (pointer:coarse){.example-wrap:hover>a.test-arrow,.example-wrap:hover>.button-holder{visibility:visible;}}.example-wrap .button-holder.keep-visible{visibility:visible;}.example-wrap .button-holder>*{background:var(--main-background-color);cursor:pointer;border-radius:var(--button-border-radius);height:var(--copy-path-height);width:var(--copy-path-width);border:0;color:var(--code-example-button-color);}.example-wrap .button-holder>*:hover{color:var(--code-example-button-hover-color);}.example-wrap .button-holder>*:not(:first-child){margin-left:var(--button-left-margin);}.example-wrap .button-holder .copy-button{padding:2px 0 0 4px;}.example-wrap .button-holder .copy-button::before,.example-wrap .test-arrow::before{filter:var(--copy-path-img-filter);}.example-wrap .button-holder .copy-button::before{content:var(--clipboard-image);}.example-wrap .button-holder .copy-button:hover::before,.example-wrap .test-arrow:hover::before{filter:var(--copy-path-img-hover-filter);}.example-wrap .button-holder .copy-button.clicked::before{content:var(--checkmark-image);padding-right:5px;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.main-heading span.since::before{content:"Since ";}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}@keyframes targetfadein{from{background-color:var(--main-background-color);}10%{background-color:var(--target-border-color);}to{background-color:var(--target-background-color);}}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}@media not (prefers-reduced-motion){:target{animation:0.65s cubic-bezier(0,0,0.1,1.0) 0.1s targetfadein;}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{margin-top:0.25rem;display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}.src-sidebar-title{position:sticky;top:0;display:flex;padding:8px 8px 0 48px;margin-bottom:7px;background:var(--sidebar-background-color);border-bottom:1px solid var(--border-color);}#settings-menu,#help-button,button#toggle-all-docs{margin-left:var(--button-left-margin);display:flex;line-height:1.25;min-width:14px;}#sidebar-button{display:none;line-height:0;}.hide-sidebar #sidebar-button,.src #sidebar-button{display:flex;margin-right:4px;position:fixed;left:6px;height:34px;width:34px;background-color:var(--main-background-color);z-index:1;}.src #sidebar-button{left:8px;z-index:calc(var(--desktop-sidebar-z-index) + 1);}.hide-sidebar .src #sidebar-button{position:static;}#settings-menu>a,#help-button>a,#sidebar-button>a,button#toggle-all-docs{display:flex;align-items:center;justify-content:center;flex-direction:column;border:1px solid transparent;border-radius:var(--button-border-radius);color:var(--main-color);}#settings-menu>a,#help-button>a,button#toggle-all-docs{width:80px;border-radius:var(--toolbar-button-border-radius);}#settings-menu>a,#help-button>a{min-width:0;}#sidebar-button>a{background-color:var(--button-background-color);border-color:var(--border-color);width:33px;}#settings-menu>a:hover,#settings-menu>a:focus-visible,#help-button>a:hover,#help-button>a:focus-visible,#sidebar-button>a:hover,#sidebar-button>a:focus-visible,button#toggle-all-docs:hover,button#toggle-all-docs:focus-visible{border-color:var(--settings-button-border-focus);text-decoration:none;}#settings-menu>a:before{content:url('data:image/svg+xml,\ + ');width:18px;height:18px;filter:var(--settings-menu-filter);}button#toggle-all-docs:before{content:url('data:image/svg+xml,\ + ');width:18px;height:18px;filter:var(--settings-menu-filter);}#help-button>a:before{content:url('data:image/svg+xml,\ + \ + ?');width:18px;height:18px;filter:var(--settings-menu-filter);}button#toggle-all-docs:before,#help-button>a:before,#settings-menu>a:before{filter:var(--settings-menu-filter);margin:8px;}@media not (pointer:coarse){button#toggle-all-docs:hover:before,#help-button>a:hover:before,#settings-menu>a:hover:before{filter:var(--settings-menu-hover-filter);}}button[disabled]#toggle-all-docs{opacity:0.25;border:solid 1px var(--main-background-color);background-size:cover;}button[disabled]#toggle-all-docs:hover{border:solid 1px var(--main-background-color);cursor:not-allowed;}rustdoc-toolbar span.label{font-size:1rem;flex-grow:1;padding-bottom:4px;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:var(--copy-path-height);width:var(--copy-path-width);margin-left:10px;padding:0;padding-left:2px;border:0;font-size:0;}#copy-path::before{filter:var(--copy-path-img-filter);content:var(--clipboard-image);}#copy-path:hover::before{filter:var(--copy-path-img-hover-filter);}#copy-path.clicked::before{content:var(--checkmark-image);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.big-toggle{contain:inline-size;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,\ + ');content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}.impl-items>*:not(.item-info),.implementors-toggle>.docblock{margin-left:var(--impl-items-indent);}details.big-toggle>summary:not(.hideme)::before{left:-34px;top:9px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,\ + ');}details.toggle[open] >summary::after{content:"Collapse";}details.toggle:not([open])>summary .docblock{max-height:calc(1.5em + 0.75em);overflow-y:hidden;}details.toggle:not([open])>summary .docblock>:first-child{max-width:100%;overflow:hidden;width:fit-content;white-space:nowrap;position:relative;padding-right:1em;}details.toggle:not([open])>summary .docblock>:first-child::after{content:"…";position:absolute;right:0;top:0;bottom:0;z-index:1;background-color:var(--main-background-color);font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;padding-left:0.2em;}details.toggle:not([open])>summary .docblock>div:first-child::after{padding-top:calc(1.5em + 0.75em - 1.2rem);}details.toggle>summary .docblock{margin-top:0.75em;}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}.src #sidebar-button>a:before,.sidebar-menu-toggle:before{content:url('data:image/svg+xml,\ + ');opacity:0.75;}.sidebar-menu-toggle:hover:before,.sidebar-menu-toggle:active:before,.sidebar-menu-toggle:focus:before{opacity:1;}.src #sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');opacity:0.75;}@media (max-width:850px){#search-tabs .count{display:block;}.side-by-side{flex-direction:column-reverse;}.side-by-side>div{width:auto;}}@media (max-width:700px){:root{--impl-items-indent:0.7em;}*[id]{scroll-margin-top:45px;}#copy-path{width:0;visibility:hidden;}rustdoc-toolbar span.label{display:none;}#settings-menu>a,#help-button>a,button#toggle-all-docs{width:33px;}#settings.popover{--popover-arrow-offset:86px;}#help.popover{--popover-arrow-offset:48px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.sidebar .logo-container,.sidebar .location,.sidebar-resizer{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.src .search-form{margin-left:40px;}.src .main-heading{margin-left:8px;}.hide-sidebar .search-form{margin-left:32px;}.hide-sidebar .src .search-form{margin-left:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;white-space:nowrap;text-overflow:ellipsis;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.hide-sidebar .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;border:none;line-height:0;}.hide-sidebar .sidebar-menu-toggle{display:none;}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}.sidebar-menu-toggle:before{filter:var(--mobile-sidebar-menu-filter);}.sidebar-menu-toggle:hover{background:var(--main-background-color);}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{position:fixed;max-width:100vw;width:100vw;}.src .src-sidebar-title{padding-top:0;}details.implementors-toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before{left:-20px;}summary>.item-info{margin-left:10px;}.impl-items>.item-info{margin-left:calc(var(--impl-items-indent) + 10px);}.src nav.sub{margin:0 0 -25px 0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}.item-table>li>.item-name{width:33%;}.item-table>li>div{overflow-wrap:anywhere;}}@media print{:root{--docblock-indent:0;}nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}main{padding:10px;}}@media (max-width:464px){:root{--docblock-indent:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example:not(.expanded) .example-wrap::before,.scraped-example:not(.expanded) .example-wrap::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .example-wrap::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .example-wrap::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded){width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded){overflow-x:hidden;}.scraped-example .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"],:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--code-example-button-color:#7f7f7f;--code-example-button-hover-color:#595959;--settings-menu-filter:invert(50%);--settings-menu-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--code-example-button-color:#7f7f7f;--code-example-button-hover-color:#a5a5a5;--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--settings-menu-filter:invert(50%);--settings-menu-hover-filter:invert(65%);--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--code-example-button-color:#b2b2b2;--code-example-button-hover-color:#fff;--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--settings-menu-filter:invert(70%);--settings-menu-hover-filter:invert(100%);--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);--sidebar-resizer-hover:hsl(34,50%,33%);--sidebar-resizer-active:hsl(34,100%,66%);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar .current a,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img,:root[data-theme="ayu"] #sidebar-button>a:before{filter:invert(100);} \ No newline at end of file diff --git a/static.files/scrape-examples-d508a8a9.js b/static.files/scrape-examples-d508a8a9.js new file mode 100644 index 0000000000..87b6065d81 --- /dev/null +++ b/static.files/scrape-examples-d508a8a9.js @@ -0,0 +1 @@ +"use strict";(function(){const DEFAULT_MAX_LINES=5;const HIDDEN_MAX_LINES=10;function scrollToLoc(elt,loc,isHidden){const lines=elt.querySelector(".src-line-numbers > pre");let scrollOffset;const maxLines=isHidden?HIDDEN_MAX_LINES:DEFAULT_MAX_LINES;if(loc[1]-loc[0]>maxLines){const line=Math.max(0,loc[0]-1);scrollOffset=lines.children[line].offsetTop}else{const halfHeight=elt.offsetHeight/2;const offsetTop=lines.children[loc[0]].offsetTop;const lastLine=lines.children[loc[1]];const offsetBot=lastLine.offsetTop+lastLine.offsetHeight;const offsetMid=(offsetTop+offsetBot)/2;scrollOffset=offsetMid-halfHeight}lines.parentElement.scrollTo(0,scrollOffset);elt.querySelector(".rust").scrollTo(0,scrollOffset)}function createScrapeButton(parent,className,content){const button=document.createElement("button");button.className=className;button.innerText=content;parent.insertBefore(button,parent.firstChild);return button}window.updateScrapedExample=(example,buttonHolder)=>{let locIndex=0;const highlights=Array.prototype.slice.call(example.querySelectorAll(".highlight"));const link=example.querySelector(".scraped-example-title a");let expandButton=null;if(!example.classList.contains("expanded")){expandButton=createScrapeButton(buttonHolder,"expand","↕")}const isHidden=example.parentElement.classList.contains("more-scraped-examples");const locs=example.locs;if(locs.length>1){const next=createScrapeButton(buttonHolder,"next","≻");const prev=createScrapeButton(buttonHolder,"prev","≺");const onChangeLoc=changeIndex=>{removeClass(highlights[locIndex],"focus");changeIndex();scrollToLoc(example,locs[locIndex][0],isHidden);addClass(highlights[locIndex],"focus");const url=locs[locIndex][1];const title=locs[locIndex][2];link.href=url;link.innerHTML=title};prev.addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex-1+locs.length)%locs.length})});next.addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex+1)%locs.length})})}if(expandButton){expandButton.addEventListener("click",()=>{if(hasClass(example,"expanded")){removeClass(example,"expanded");scrollToLoc(example,locs[0][0],isHidden)}else{addClass(example,"expanded")}})}};function setupLoc(example,isHidden){example.locs=JSON.parse(example.attributes.getNamedItem("data-locs").textContent);scrollToLoc(example,example.locs[0][0],isHidden)}const firstExamples=document.querySelectorAll(".scraped-example-list > .scraped-example");onEachLazy(firstExamples,el=>setupLoc(el,false));onEachLazy(document.querySelectorAll(".more-examples-toggle"),toggle=>{onEachLazy(toggle.querySelectorAll(".toggle-line, .hide-more"),button=>{button.addEventListener("click",()=>{toggle.open=false})});const moreExamples=toggle.querySelectorAll(".scraped-example");toggle.querySelector("summary").addEventListener("click",()=>{setTimeout(()=>{onEachLazy(moreExamples,el=>setupLoc(el,true))})},{once:true})})})() \ No newline at end of file diff --git a/static.files/search-036cda7a.js b/static.files/search-036cda7a.js new file mode 100644 index 0000000000..cf59d77973 --- /dev/null +++ b/static.files/search-036cda7a.js @@ -0,0 +1,6 @@ +"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}function onEachBtwn(arr,func,funcBtwn){let skipped=true;for(const value of arr){if(!skipped){funcBtwn(value)}skipped=func(value)}}const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_GENERIC=itemTypes.indexOf("generic");const TY_IMPORT=itemTypes.indexOf("import");const TY_TRAIT=itemTypes.indexOf("trait");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";const UNBOXING_LIMIT=5;const REGEX_IDENT=/\p{ID_Start}\p{ID_Continue}*|_\p{ID_Continue}+/uy;const REGEX_INVALID_TYPE_FILTER=/[^a-z]/ui;const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost,);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1,)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function isSeparatorCharacter(c){return c===","||c==="="}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function skipWhitespace(parserState){while(parserState.pos0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.normalizedPathLast;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else if(parserState.userQuery[parserState.pos]==="&"){if(parserState.typeFilter!==null&&parserState.typeFilter!=="primitive"){throw["Invalid search type: primitive ","&"," and ",parserState.typeFilter," both specified",]}parserState.typeFilter=null;parserState.pos+=1;let c=parserState.userQuery[parserState.pos];while(c===" "&&parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics,),)}}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();const match=query.match(REGEX_INVALID_TYPE_FILTER);if(match){throw["Unexpected ",match[0]," in type filter (before ",":",")",]}}function createQueryElement(query,parserState,name,generics,isInGenerics){const path=name.trim();if(path.length===0&&generics.length===0){throw["Unexpected ",parserState.userQuery[parserState.pos]]}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name.trim()==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/).map(x=>x.toLowerCase());if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name.toLowerCase().replace(/_/g,""),gen.bindingName.generics,);return false}return true}),bindings,typeFilter,bindingName,}}function makePrimitiveElement(name,extra){return Object.assign({name,id:null,fullPath:[name],pathWithoutLast:[],pathLast:name,normalizedPathLast:name,generics:[],bindings:new Map(),typeFilter:"primitive",bindingName:null,},extra)}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function getIdentEndPosition(parserState){let afterIdent=consumeIdent(parserState);let end=parserState.pos;let macroExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]," (not a valid identifier)"]}else{throw["Unexpected ",c," (not a valid identifier)"]}parserState.pos+=1;afterIdent=consumeIdent(parserState);end=parserState.pos}if(macroExclamation!==-1){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=macroExclamation}return end}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function consumeIdent(parserState){REGEX_IDENT.lastIndex=parserState.pos;const match=parserState.userQuery.match(REGEX_IDENT);if(match){parserState.pos+=match[0].length;return true}return false}function isPathSeparator(c){return c===":"||c===" "}class VlqHexDecoder{constructor(string,cons){this.string=string;this.cons=cons;this.offset=0;this.backrefQueue=[]}decodeList(){let c=this.string.charCodeAt(this.offset);const ret=[];while(c!==125){ret.push(this.decode());c=this.string.charCodeAt(this.offset)}this.offset+=1;return ret}decode(){let n=0;let c=this.string.charCodeAt(this.offset);if(c===123){this.offset+=1;return this.decodeList()}while(c<96){n=(n<<4)|(c&0xF);this.offset+=1;c=this.string.charCodeAt(this.offset)}n=(n<<4)|(c&0xF);const[sign,value]=[n&1,n>>1];this.offset+=1;return sign?-value:value}next(){const c=this.string.charCodeAt(this.offset);if(c>=48&&c<64){this.offset+=1;return this.backrefQueue[c-48]}if(c===96){this.offset+=1;return this.cons(0)}const result=this.cons(this.decode());this.backrefQueue.unshift(result);if(this.backrefQueue.length>16){this.backrefQueue.pop()}return result}}class RoaringBitmap{constructor(str){const strdecoded=atob(str);const u8array=new Uint8Array(strdecoded.length);for(let j=0;j=4){offsets=[];for(let j=0;j>3]&(1<<(j&0x7))){const runcount=(u8array[i]|(u8array[i+1]<<8));i+=2;this.containers.push(new RoaringBitmapRun(runcount,u8array.slice(i,i+(runcount*4)),));i+=runcount*4}else if(this.cardinalities[j]>=4096){this.containers.push(new RoaringBitmapBits(u8array.slice(i,i+8192)));i+=8192}else{const end=this.cardinalities[j]*2;this.containers.push(new RoaringBitmapArray(this.cardinalities[j],u8array.slice(i,i+end),));i+=end}}}contains(keyvalue){const key=keyvalue>>16;const value=keyvalue&0xFFFF;let left=0;let right=this.keys.length-1;while(left<=right){const mid=Math.floor((left+right)/2);const x=this.keys[mid];if(xkey){right=mid-1}else{return this.containers[mid].contains(value)}}return false}}class RoaringBitmapRun{constructor(runcount,array){this.runcount=runcount;this.array=array}contains(value){let left=0;let right=this.runcount-1;while(left<=right){const mid=Math.floor((left+right)/2);const i=mid*4;const start=this.array[i]|(this.array[i+1]<<8);const lenm1=this.array[i+2]|(this.array[i+3]<<8);if((start+lenm1)value){right=mid-1}else{return true}}return false}}class RoaringBitmapArray{constructor(cardinality,array){this.cardinality=cardinality;this.array=array}contains(value){let left=0;let right=this.cardinality-1;while(left<=right){const mid=Math.floor((left+right)/2);const i=mid*2;const x=this.array[i]|(this.array[i+1]<<8);if(xvalue){right=mid-1}else{return true}}return false}}class RoaringBitmapBits{constructor(array){this.array=array}contains(value){return!!(this.array[value>>3]&(1<<(value&7)))}}class NameTrie{constructor(){this.children=[];this.matches=[]}insert(name,id,tailTable){this.insertSubstring(name,0,id,tailTable)}insertSubstring(name,substart,id,tailTable){const l=name.length;if(substart===l){this.matches.push(id)}else{const sb=name.charCodeAt(substart);let child;if(this.children[sb]!==undefined){child=this.children[sb]}else{child=new NameTrie();this.children[sb]=child;let sste;if(substart>=2){const tail=name.substring(substart-2,substart+1);if(tailTable.has(tail)){sste=tailTable.get(tail)}else{sste=[];tailTable.set(tail,sste)}sste.push(child)}}child.insertSubstring(name,substart+1,id,tailTable)}}search(name,tailTable){const results=new Set();this.searchSubstringPrefix(name,0,results);if(results.size=3){const levParams=name.length>=6?new Lev2TParametricDescription(name.length):new Lev1TParametricDescription(name.length);this.searchLev(name,0,levParams,results);const tail=name.substring(0,3);if(tailTable.has(tail)){for(const entry of tailTable.get(tail)){entry.searchSubstringPrefix(name,3,results)}}}return[...results]}searchSubstringPrefix(name,substart,results){const l=name.length;if(substart===l){for(const match of this.matches){results.add(match)}let unprocessedChildren=[];for(const child of this.children){if(child){unprocessedChildren.push(child)}}let nextSet=[];while(unprocessedChildren.length!==0){const next=unprocessedChildren.pop();for(const child of next.children){if(child){nextSet.push(child)}}for(const match of next.matches){results.add(match)}if(unprocessedChildren.length===0){const tmp=unprocessedChildren;unprocessedChildren=nextSet;nextSet=tmp}}}else{const sb=name.charCodeAt(substart);if(this.children[sb]!==undefined){this.children[sb].searchSubstringPrefix(name,substart+1,results)}}}searchLev(name,substart,levParams,results){const stack=[[this,0]];const n=levParams.n;while(stack.length!==0){const[trie,levState]=stack.pop();for(const[charCode,child]of trie.children.entries()){if(!child){continue}const levPos=levParams.getPosition(levState);const vector=levParams.getVector(name,charCode,levPos,Math.min(name.length,levPos+(2*n)+1),);const newLevState=levParams.transition(levState,levPos,vector,);if(newLevState>=0){stack.push([child,newLevState]);if(levParams.isAccept(newLevState)){for(const match of child.matches){results.add(match)}}}}}}}class DocSearch{constructor(rawSearchIndex,rootPath,searchState){this.searchIndexDeprecated=new Map();this.searchIndexEmptyDesc=new Map();this.functionTypeFingerprint=null;this.typeNameIdMap=new Map();this.assocTypeIdNameMap=new Map();this.ALIASES=new Map();this.rootPath=rootPath;this.searchState=searchState;this.typeNameIdOfArray=this.buildTypeMapIndex("array");this.typeNameIdOfSlice=this.buildTypeMapIndex("slice");this.typeNameIdOfArrayOrSlice=this.buildTypeMapIndex("[]");this.typeNameIdOfTuple=this.buildTypeMapIndex("tuple");this.typeNameIdOfUnit=this.buildTypeMapIndex("unit");this.typeNameIdOfTupleOrUnit=this.buildTypeMapIndex("()");this.typeNameIdOfFn=this.buildTypeMapIndex("fn");this.typeNameIdOfFnMut=this.buildTypeMapIndex("fnmut");this.typeNameIdOfFnOnce=this.buildTypeMapIndex("fnonce");this.typeNameIdOfHof=this.buildTypeMapIndex("->");this.typeNameIdOfOutput=this.buildTypeMapIndex("output",true);this.typeNameIdOfReference=this.buildTypeMapIndex("reference");this.EMPTY_BINDINGS_MAP=new Map();this.EMPTY_GENERICS_ARRAY=[];this.TYPES_POOL=new Map();this.nameTrie=new NameTrie();this.tailTable=new Map();this.searchIndex=this.buildIndex(rawSearchIndex)}buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(this.typeNameIdMap.has(name)){const obj=this.typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=this.typeNameIdMap.size;this.typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}buildItemSearchTypeAll(types,paths,lowercasePaths){return types.length>0?types.map(type=>this.buildItemSearchType(type,paths,lowercasePaths)):this.EMPTY_GENERICS_ARRAY}buildItemSearchType(type,paths,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=this.EMPTY_GENERICS_ARRAY;bindings=this.EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=this.buildItemSearchTypeAll(type[GENERICS_DATA],paths,lowercasePaths,);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[this.buildItemSearchType(assocType,paths,lowercasePaths,true).id,this.buildItemSearchTypeAll(constraints,paths,lowercasePaths),]}))}else{bindings=this.EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,name:"",ty:TY_GENERIC,path:null,exactPath:null,generics,bindings,unboxFlag:true,}}else if(pathIndex===0){result={id:null,name:"",ty:null,path:null,exactPath:null,generics,bindings,unboxFlag:true,}}else{const item=lowercasePaths[pathIndex-1];const id=this.buildTypeMapIndex(item.name,isAssocType);if(isAssocType){this.assocTypeIdNameMap.set(id,paths[pathIndex-1].name)}result={id,name:paths[pathIndex-1].name,ty:item.ty,path:item.path,exactPath:item.exactPath,generics,bindings,unboxFlag:item.unboxFlag,}}const cr=this.TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty&&cr.name===result.name&&cr.unboxFlag===result.unboxFlag){return cr}}this.TYPES_POOL.set(result.id,result);return result}buildFunctionTypeFingerprint(type,output){let input=type.id;if(input===this.typeNameIdOfArray||input===this.typeNameIdOfSlice){input=this.typeNameIdOfArrayOrSlice}if(input===this.typeNameIdOfTuple||input===this.typeNameIdOfUnit){input=this.typeNameIdOfTupleOrUnit}if(input===this.typeNameIdOfFn||input===this.typeNameIdOfFnMut||input===this.typeNameIdOfFnOnce){input=this.typeNameIdOfHof}const hashint1=k=>{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));output[3]+=1}for(const g of type.generics){this.buildFunctionTypeFingerprint(g,output)}const fb={id:null,ty:0,generics:this.EMPTY_GENERICS_ARRAY,bindings:this.EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;this.buildFunctionTypeFingerprint(fb,output)}}buildIndex(rawSearchIndex){const buildFunctionSearchTypeCallback=(paths,lowercasePaths)=>{return functionSearchType=>{if(functionSearchType===0){return null}const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[this.buildItemSearchType(functionSearchType[INPUTS_DATA],paths,lowercasePaths,),]}else{inputs=this.buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],paths,lowercasePaths,)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[this.buildItemSearchType(functionSearchType[OUTPUT_DATA],paths,lowercasePaths,),]}else{output=this.buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],paths,lowercasePaths,)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;inoop);let descShard={crate,shard:0,start:0,len:itemDescShardDecoder.next(),promise:null,resolve:null,};const descShardList=[descShard];this.searchIndexDeprecated.set(crate,new RoaringBitmap(crateCorpus.c));this.searchIndexEmptyDesc.set(crate,new RoaringBitmap(crateCorpus.e));let descIndex=0;let lastParamNames=[];let normalizedName=crate.indexOf("_")===-1?crate:crate.replace(/_/g,"");const crateRow={crate,ty:3,name:crate,path:"",descShard,descIndex,exactPath:"",desc:crateCorpus.doc,parent:undefined,type:null,paramNames:lastParamNames,id,word:crate,normalizedName,bitIndex:0,implDisambiguator:null,};this.nameTrie.insert(normalizedName,id,this.tailTable);id+=1;searchIndex.push(crateRow);currentIndex+=1;if(!this.searchIndexEmptyDesc.get(crate).contains(0)){descIndex+=1}const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemReexports=new Map(crateCorpus.r);const itemParentIdxDecoder=new VlqHexDecoder(crateCorpus.i,noop=>noop);const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const itemParamNames=new Map(crateCorpus.P);const lowercasePaths=[];const itemFunctionDecoder=new VlqHexDecoder(crateCorpus.f,buildFunctionSearchTypeCallback(paths,lowercasePaths),);let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2&&elem[2]!==null){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}const exactPath=elem.length>3&&elem[3]!==null?itemPaths.get(elem[3]):path;const unboxFlag=elem.length>4&&!!elem[4];lowercasePaths.push({ty,name:name.toLowerCase(),path,exactPath,unboxFlag});paths[i]={ty,name,path,exactPath,unboxFlag}}lastPath="";len=itemTypes.length;let lastName="";let lastWord="";for(let i=0;i=descShard.len&&!this.searchIndexEmptyDesc.get(crate).contains(bitIndex)){descShard={crate,shard:descShard.shard+1,start:descShard.start+descShard.len,len:itemDescShardDecoder.next(),promise:null,resolve:null,};descIndex=0;descShardList.push(descShard)}const name=itemNames[i]===""?lastName:itemNames[i];const word=itemNames[i]===""?lastWord:itemNames[i].toLowerCase();const path=itemPaths.has(i)?itemPaths.get(i):lastPath;const paramNames=itemParamNames.has(i)?itemParamNames.get(i).split(","):lastParamNames;const type=itemFunctionDecoder.next();if(type!==null){if(type){const fp=this.functionTypeFingerprint.subarray(id*4,(id+1)*4);for(const t of type.inputs){this.buildFunctionTypeFingerprint(t,fp)}for(const t of type.output){this.buildFunctionTypeFingerprint(t,fp)}for(const w of type.where_clause){for(const t of w){this.buildFunctionTypeFingerprint(t,fp)}}}}const itemParentIdx=itemParentIdxDecoder.next();normalizedName=word.indexOf("_")===-1?word:word.replace(/_/g,"");const row={crate,ty:itemTypes.charCodeAt(i)-65,name,path,descShard,descIndex,exactPath:itemReexports.has(i)?itemPaths.get(itemReexports.get(i)):path,parent:itemParentIdx>0?paths[itemParentIdx-1]:undefined,type,paramNames,id,word,normalizedName,bitIndex,implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};this.nameTrie.insert(normalizedName,id,this.tailTable);id+=1;searchIndex.push(row);lastPath=row.path;lastParamNames=row.paramNames;if(!this.searchIndexEmptyDesc.get(crate).contains(bitIndex)){descIndex+=1}lastName=name;lastWord=word}if(aliases){const currentCrateAliases=new Map();this.ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length;this.searchState.descShards.set(crate,descShardList)}this.TYPES_POOL=new Map();return searchIndex}static parseQuery(userQuery){function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}function newParsedQuery(userQuery){return{userQuery,elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,hasReturnArrow:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos"){if(isReturnArrow(parserState)){query.hasReturnArrow=true;break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}async execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}const buildHrefAndPath=item=>{let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;let exactPath=item.exactPath;if(type==="mod"){displayPath=path+"::";href=this.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=this.rootPath+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";exactPath="";href=this.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=this.rootPath+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor=type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;exactPath=`${myparent.exactPath}::${myparent.name}`;if(parentType==="primitive"){displayPath=myparent.name+"::";exactPath=myparent.name}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}if(item.implDisambiguator!==null){anchor=item.implDisambiguator+"/"+anchor}href=this.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html#"+anchor}else{displayPath=item.path+"::";href=this.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href,`${exactPath}::${name}`]};function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}const transformResults=(results,typeInfo)=>{const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const res=buildHrefAndPath(this.searchIndex[result.id]);const obj=Object.assign({dist:result.dist,displayPath:pathSplitter(res[0]),},this.searchIndex[result.id]);obj.fullPath=res[2]+"|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}if(obj.ty===TY_IMPORT&&duplicates.has(res[2])){continue}if(duplicates.has(res[2]+"|"+TY_IMPORT)){continue}duplicates.add(obj.fullPath);duplicates.add(res[2]);if(typeInfo!==null){obj.displayTypeSignature=this.formatDisplayTypeSignature(obj,typeInfo)}obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out};this.formatDisplayTypeSignature=async(obj,typeInfo)=>{let fnInputs=null;let fnOutput=null;let mgens=null;if(typeInfo!=="elems"&&typeInfo!=="returned"){fnInputs=unifyFunctionTypes(obj.type.inputs,parsedQuery.elems,obj.type.where_clause,null,mgensScratch=>{fnOutput=unifyFunctionTypes(obj.type.output,parsedQuery.returned,obj.type.where_clause,mgensScratch,mgensOut=>{mgens=mgensOut;return true},0,);return!!fnOutput},0,)}else{const arr=typeInfo==="elems"?obj.type.inputs:obj.type.output;const highlighted=unifyFunctionTypes(arr,parsedQuery.elems,obj.type.where_clause,null,mgensOut=>{mgens=mgensOut;return true},0,);if(typeInfo==="elems"){fnInputs=highlighted}else{fnOutput=highlighted}}if(!fnInputs){fnInputs=obj.type.inputs}if(!fnOutput){fnOutput=obj.type.output}const mappedNames=new Map();const whereClause=new Map();const fnParamNames=obj.paramNames;const queryParamNames=[];const remapQuery=queryElem=>{if(queryElem.id<0){queryParamNames[-1-queryElem.id]=queryElem.name}if(queryElem.generics.length>0){queryElem.generics.forEach(remapQuery)}if(queryElem.bindings.size>0){[...queryElem.bindings.values()].flat().forEach(remapQuery)}};parsedQuery.elems.forEach(remapQuery);parsedQuery.returned.forEach(remapQuery);const pushText=(fnType,result)=>{if(!!(result.length%2)===!!fnType.highlighted){result.push("")}else if(result.length===0&&!!fnType.highlighted){result.push("");result.push("")}result[result.length-1]+=fnType.name};const writeHof=(fnType,result)=>{const hofOutput=fnType.bindings.get(this.typeNameIdOfOutput)||[];const hofInputs=fnType.generics;pushText(fnType,result);pushText({name:" (",highlighted:false},result);let needsComma=false;for(const fnType of hofInputs){if(needsComma){pushText({name:", ",highlighted:false},result)}needsComma=true;writeFn(fnType,result)}pushText({name:hofOutput.length===0?")":") -> ",highlighted:false,},result);if(hofOutput.length>1){pushText({name:"(",highlighted:false},result)}needsComma=false;for(const fnType of hofOutput){if(needsComma){pushText({name:", ",highlighted:false},result)}needsComma=true;writeFn(fnType,result)}if(hofOutput.length>1){pushText({name:")",highlighted:false},result)}};const writeSpecialPrimitive=(fnType,result)=>{if(fnType.id===this.typeNameIdOfArray||fnType.id===this.typeNameIdOfSlice||fnType.id===this.typeNameIdOfTuple||fnType.id===this.typeNameIdOfUnit){const[ob,sb]=fnType.id===this.typeNameIdOfArray||fnType.id===this.typeNameIdOfSlice?["[","]"]:["(",")"];pushText({name:ob,highlighted:fnType.highlighted},result);onEachBtwn(fnType.generics,nested=>writeFn(nested,result),()=>pushText({name:", ",highlighted:false},result),);pushText({name:sb,highlighted:fnType.highlighted},result);return true}else if(fnType.id===this.typeNameIdOfReference){pushText({name:"&",highlighted:fnType.highlighted},result);let prevHighlighted=false;onEachBtwn(fnType.generics,value=>{prevHighlighted=value.highlighted;writeFn(value,result)},value=>pushText({name:" ",highlighted:prevHighlighted&&value.highlighted,},result),);return true}else if(fnType.id===this.typeNameIdOfFn){writeHof(fnType,result);return true}return false};const writeFn=(fnType,result)=>{if(fnType.id<0){if(fnParamNames[-1-fnType.id]===""){const generics=fnType.generics.length>0?fnType.generics:obj.type.where_clause[-1-fnType.id];for(const nested of generics){writeFn(nested,result)}return}else if(mgens){for(const[queryId,fnId]of mgens){if(fnId===fnType.id){mappedNames.set(queryParamNames[-1-queryId],fnParamNames[-1-fnType.id],)}}}pushText({name:fnParamNames[-1-fnType.id],highlighted:!!fnType.highlighted,},result);const where=[];onEachBtwn(fnType.generics,nested=>writeFn(nested,where),()=>pushText({name:" + ",highlighted:false},where),);if(where.length>0){whereClause.set(fnParamNames[-1-fnType.id],where)}}else{if(fnType.ty===TY_PRIMITIVE){if(writeSpecialPrimitive(fnType,result)){return}}else if(fnType.ty===TY_TRAIT&&(fnType.id===this.typeNameIdOfFn||fnType.id===this.typeNameIdOfFnMut||fnType.id===this.typeNameIdOfFnOnce)){writeHof(fnType,result);return}pushText(fnType,result);let hasBindings=false;if(fnType.bindings.size>0){onEachBtwn(fnType.bindings,([key,values])=>{const name=this.assocTypeIdNameMap.get(key);if(values.length===1&&values[0].id<0&&`${fnType.name}::${name}`===fnParamNames[-1-values[0].id]){for(const value of values){writeFn(value,[])}return true}if(!hasBindings){hasBindings=true;pushText({name:"<",highlighted:false},result)}pushText({name,highlighted:false},result);pushText({name:values.length!==1?"=(":"=",highlighted:false,},result);onEachBtwn(values||[],value=>writeFn(value,result),()=>pushText({name:" + ",highlighted:false},result),);if(values.length!==1){pushText({name:")",highlighted:false},result)}},()=>pushText({name:", ",highlighted:false},result),)}if(fnType.generics.length>0){pushText({name:hasBindings?", ":"<",highlighted:false},result)}onEachBtwn(fnType.generics,value=>writeFn(value,result),()=>pushText({name:", ",highlighted:false},result),);if(hasBindings||fnType.generics.length>0){pushText({name:">",highlighted:false},result)}}};const type=[];onEachBtwn(fnInputs,fnType=>writeFn(fnType,type),()=>pushText({name:", ",highlighted:false},type),);pushText({name:" -> ",highlighted:false},type);onEachBtwn(fnOutput,fnType=>writeFn(fnType,type),()=>pushText({name:", ",highlighted:false},type),);return{type,mappedNames,whereClause}};const sortResults=async(results,typeInfo,preferredCrate)=>{const userQuery=parsedQuery.userQuery;const normalizedUserQuery=parsedQuery.userQuery.toLowerCase();const isMixedCase=normalizedUserQuery!==userQuery;const result_list=[];for(const result of results.values()){result.item=this.searchIndex[result.id];result.word=this.searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;if(isMixedCase){a=(aaa.item.name!==userQuery);b=(bbb.item.name!==userQuery);if(a!==b){return a-b}}a=(aaa.word!==normalizedUserQuery);b=(bbb.word!==normalizedUserQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=this.searchIndexDeprecated.get(aaa.item.crate).contains(aaa.item.bitIndex);b=this.searchIndexDeprecated.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=this.searchIndexEmptyDesc.get(aaa.item.crate).contains(aaa.item.bitIndex);b=this.searchIndexEmptyDesc.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list,typeInfo)};function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return null}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return solutionCb(mgens)?fnTypesIn:null}if(!fnTypesIn||fnTypesIn.length===0){return null}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const[i,fnType]of fnTypesIn.entries()){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(queryElem.id)&&mgens.get(queryElem.id)!==fnType.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(queryElem.id,fnType.id);if(!solutionCb||solutionCb(mgensScratch)){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({highlighted:true,},fnType,{generics:whereClause[-1-fnType.id],});return highlighted}}else if(solutionCb(mgens?new Map(mgens):null)){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({highlighted:true,},fnType,{generics:unifyGenericTypes(fnType.generics,queryElem.generics,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth,)||fnType.generics,});return highlighted}}for(const[i,fnType]of fnTypesIn.entries()){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}if(fnType.id<0){const highlightedGenerics=unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgens,solutionCb,unboxingDepth+1,);if(highlightedGenerics){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({highlighted:true,},fnType,{generics:highlightedGenerics,});return highlighted}}else{const highlightedGenerics=unifyFunctionTypes([...Array.from(fnType.bindings.values()).flat(),...fnType.generics],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1,);if(highlightedGenerics){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({},fnType,{generics:highlightedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,highlightedGenerics.splice(0,v.length)]})),});return highlighted}}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(queryElem.id)&&mgensScratch.get(queryElem.id)!==fnType.id){continue}mgensScratch.set(queryElem.id,fnType.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}let unifiedGenerics=[];let unifiedGenericsMgens=null;const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){unifiedGenerics=unifyGenericTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(unifiedGenerics!==null){unifiedGenericsMgens=simplifiedMgens;return true}}return false},unboxingDepth,);if(passesUnification){passesUnification.length=fl;passesUnification[flast]=passesUnification[i];passesUnification[i]=Object.assign({},fnType,{highlighted:true,generics:unifiedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,queryElem.bindings.has(k)?unifyFunctionTypes(v,queryElem.bindings.get(k),whereClause,unifiedGenericsMgens,solutionCb,unboxingDepth,):unifiedGenerics.splice(0,v.length)]})),});return passesUnification}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...bindings,...generics),queryElems,whereClause,mgens,solutionCb,unboxingDepth+1,);if(passesUnification){const highlightedGenerics=passesUnification.slice(i,i+generics.length+bindings.length,);const highlightedFnType=Object.assign({},fnType,{generics:highlightedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,highlightedGenerics.splice(0,v.length)]})),});return passesUnification.toSpliced(i,generics.length+bindings.length,highlightedFnType,)}}return null}function unifyGenericTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return null}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return solutionCb(mgens)?fnTypesIn:null}if(!fnTypesIn||fnTypesIn.length===0){return null}const fnType=fnTypesIn[0];const queryElem=queryElems[0];if(unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){if(fnType.id<0&&queryElem.id<0){if(!mgens||!mgens.has(queryElem.id)||mgens.get(queryElem.id)===fnType.id){const mgensScratch=new Map(mgens);mgensScratch.set(queryElem.id,fnType.id);const fnTypesRemaining=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgensScratch,solutionCb,unboxingDepth,);if(fnTypesRemaining){const highlighted=[fnType,...fnTypesRemaining];highlighted[0]=Object.assign({highlighted:true,},fnType,{generics:whereClause[-1-fnType.id],});return highlighted}}}else{let unifiedGenerics;const fnTypesRemaining=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgens,mgensScratch=>{const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){unifiedGenerics=unifyGenericTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(unifiedGenerics!==null){return true}}},unboxingDepth,);if(fnTypesRemaining){const highlighted=[fnType,...fnTypesRemaining];highlighted[0]=Object.assign({highlighted:true,},fnType,{generics:unifiedGenerics||fnType.generics,});return highlighted}}}if(unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){let highlightedRemaining;if(fnType.id<0){const highlightedGenerics=unifyFunctionTypes(whereClause[(-fnType.id)-1],[queryElem],whereClause,mgens,mgensScratch=>{const hl=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgensScratch,solutionCb,unboxingDepth,);if(hl){highlightedRemaining=hl}return hl},unboxingDepth+1,);if(highlightedGenerics){return[Object.assign({highlighted:true,},fnType,{generics:highlightedGenerics,}),...highlightedRemaining]}}else{const highlightedGenerics=unifyGenericTypes([...Array.from(fnType.bindings.values()).flat(),...fnType.generics,],[queryElem],whereClause,mgens,mgensScratch=>{const hl=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgensScratch,solutionCb,unboxingDepth,);if(hl){highlightedRemaining=hl}return hl},unboxingDepth+1,);if(highlightedGenerics){return[Object.assign({},fnType,{generics:highlightedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,highlightedGenerics.splice(0,v.length)]})),}),...highlightedRemaining]}}}return null}const unifyFunctionTypeIsMatchCandidate=(fnType,queryElem,mgensIn)=>{if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn&&mgensIn.has(queryElem.id)&&mgensIn.get(queryElem.id)!==fnType.id){return false}return true}else{if(queryElem.id===this.typeNameIdOfArrayOrSlice&&(fnType.id===this.typeNameIdOfSlice||fnType.id===this.typeNameIdOfArray)){}else if(queryElem.id===this.typeNameIdOfTupleOrUnit&&(fnType.id===this.typeNameIdOfTuple||fnType.id===this.typeNameIdOfUnit)){}else if(queryElem.id===this.typeNameIdOfHof&&(fnType.id===this.typeNameIdOfFn||fnType.id===this.typeNameIdOfFnMut||fnType.id===this.typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth,);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...binds,...simplifiedGenerics]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0){if(!whereClause){return false}return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgens,unboxingDepth,)}else if(fnType.unboxFlag&&(fnType.generics.length>0||fnType.bindings.size>0)){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth,)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}const checkType=(row,elem,whereClause,mgens,unboxingDepth)=>{if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&row.generics.length===0&&elem.generics.length===0&&row.bindings.size===0&&elem.bindings.size===0&&elem.id!==this.typeNameIdOfArrayOrSlice&&elem.id!==this.typeNameIdOfHof&&elem.id!==this.typeNameIdOfTupleOrUnit){return row.id===elem.id&&typePassesFilter(elem.typeFilter,row.ty)}else{return unifyFunctionTypes([row],[elem],whereClause,mgens,()=>true,unboxingDepth,)}};const checkTypeMgensForConflict=mgens=>{if(!mgens){return true}const fnTypes=new Set();for(const[_qid,fid]of mgens){if(fnTypes.has(fid)){return false}fnTypes.add(fid)}return true};function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3,);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,descShard:item.descShard,descIndex:item.descIndex,exactPath:item.exactPath,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,bitIndex:item.bitIndex,implDisambiguator:item.implDisambiguator,}}const handleAliases=async(ret,query,filterCrates,currentCrate)=>{const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(this.ALIASES.has(filterCrates)&&this.ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=this.ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(this.searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of this.ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(this.searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{return this.searchIndexEmptyDesc.get(alias.crate).contains(alias.bitIndex)?"":this.searchState.loadDesc(alias)};const[crateDescs,descs]=await Promise.all([Promise.all(crateAliases.map(fetchDesc)),Promise.all(aliases.map(fetchDesc)),]);const pushFunc=alias=>{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach((alias,i)=>{alias.desc=descs[i]});aliases.forEach(pushFunc);crateAliases.forEach((alias,i)=>{alias.desc=crateDescs[i]});crateAliases.forEach(pushFunc)};function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint,);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,checkTypeMgensForConflict,0,)},0,)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}const compareTypeFingerprints=(fullId,queryFingerprint)=>{const fh0=this.functionTypeFingerprint[fullId*4];const fh1=this.functionTypeFingerprint[(fullId*4)+1];const fh2=this.functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return this.functionTypeFingerprint[(fullId*4)+3]};const innerRunQuery=()=>{const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();const convertNameToId=(elem,isAssocType)=>{const loweredName=elem.pathLast.toLowerCase();if(this.typeNameIdMap.has(loweredName)&&(isAssocType||!this.typeNameIdMap.get(loweredName).assocOnly)){elem.id=this.typeNameIdMap.get(loweredName).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of this.typeNameIdMap){const dist=Math.min(editDistance(name,loweredName,maxEditDistance),editDistance(name,elem.normalizedPathLast,maxEditDistance),);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.normalizedPathLast)){elem.id=genericSymbols.get(elem.normalizedPathLast)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.normalizedPathLast,elem.id)}if(elem.typeFilter===-1&&elem.normalizedPathLast.length>=3){const maxPartDistance=Math.floor(elem.normalizedPathLast.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of this.typeNameIdMap.keys()){const dist=editDistance(name,elem.normalizedPathLast,maxPartDistance,);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!this.typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[this.typeNameIdMap.get(name).id,constraints]}),)};for(const elem of parsedQuery.elems){convertNameToId(elem);this.buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint)}for(const elem of parsedQuery.returned){convertNameToId(elem);this.buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint)}if(parsedQuery.foundElems===1&&!parsedQuery.hasReturnArrow){const elem=parsedQuery.elems[0];const handleNameSearch=id=>{const row=this.searchIndex[id];if(!typePassesFilter(elem.typeFilter,row.ty)||(filterCrates!==null&&row.crate!==filterCrates)){return}let pathDist=0;if(elem.fullPath.length>1){pathDist=checkPath(elem.pathWithoutLast,row);if(pathDist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,row.id,id,0,0,pathDist)}}else{addIntoResults(results_others,row.id,id,row.normalizedName.indexOf(elem.normalizedPathLast),editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance,),pathDist,maxEditDistance,)}};if(elem.normalizedPathLast!==""){const last=elem.normalizedPathLast;for(const id of this.nameTrie.search(last,this.tailTable)){handleNameSearch(id)}}const length=this.searchIndex.length;for(let i=0,nSearchIndex=length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=this.searchIndex.length;i{const descs=await Promise.all(list.map(result=>{return this.searchIndexEmptyDesc.get(result.crate).contains(result.bitIndex)?"":this.searchState.loadDesc(result)}));for(const[i,result]of list.entries()){result.desc=descs[i]}}));if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}}let rawSearchIndex;let docSearch;const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];let currentResults;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&window.searchIndex.has(elem.value)){return elem.value}return null}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}async function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement(array.length===0&&query.error===null?"div":"ul",);if(array.length>0){output.className="search-results "+extraClass;const lis=Promise.all(array.map(async item=>{const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("span");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
\ +${item.alias} - see \ +
`}resultName.insertAdjacentHTML("beforeend",`
${alias}\ +${item.displayPath}${name}\ +
`);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);if(item.displayTypeSignature){const{type,mappedNames,whereClause}=await item.displayTypeSignature;const displayType=document.createElement("div");type.forEach((value,index)=>{if(index%2!==0){const highlight=document.createElement("strong");highlight.appendChild(document.createTextNode(value));displayType.appendChild(highlight)}else{displayType.appendChild(document.createTextNode(value))}});if(mappedNames.size>0||whereClause.size>0){let addWhereLineFn=()=>{const line=document.createElement("div");line.className="where";line.appendChild(document.createTextNode("where"));displayType.appendChild(line);addWhereLineFn=()=>{}};for(const[qname,name]of mappedNames){if(name===qname){continue}addWhereLineFn();const line=document.createElement("div");line.className="where";line.appendChild(document.createTextNode(` ${qname} matches `));const lineStrong=document.createElement("strong");lineStrong.appendChild(document.createTextNode(name));line.appendChild(lineStrong);displayType.appendChild(line)}for(const[name,innerType]of whereClause){if(innerType.length<=1){continue}addWhereLineFn();const line=document.createElement("div");line.className="where";line.appendChild(document.createTextNode(` ${name}: `));innerType.forEach((value,index)=>{if(index%2!==0){const highlight=document.createElement("strong");highlight.appendChild(document.createTextNode(value));line.appendChild(highlight)}else{line.appendChild(document.createTextNode(value))}});displayType.appendChild(line)}}displayType.className="type-signature";link.appendChild(displayType)}link.appendChild(description);return link}));lis.then(lis=>{for(const li of lis){output.appendChild(li)}})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
"+"Try on DuckDuckGo?

"+"Or try looking in one of these:"}return output}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}async function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=DocSearch.parseQuery(searchState.input.value)}currentResults=results.query.userQuery;let currentTab=searchState.currentTab;if((currentTab===0&&results.others.length===0)||(currentTab===1&&results.in_args.length===0)||(currentTab===2&&results.returned.length===0)){if(results.others.length!==0){currentTab=0}else if(results.in_args.length){currentTab=1}else if(results.returned.length){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates="
in 
"+"
"}let output=`
\ +

Results

${crates}
`;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

Query parser error: "${error.join("")}".

`;output+="
"+makeTabHeader(0,"In Names",results.others.length)+"
";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
"+makeTabHeader(0,"In Names",results.others.length)+makeTabHeader(1,"In Parameters",results.in_args.length)+makeTabHeader(2,"In Return Types",results.returned.length)+"
"}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
"+makeTabHeader(0,signatureTabTitle,results.others.length)+"
";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

"+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

`}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

"+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

`}const[ret_others,ret_in_args,ret_returned]=await Promise.all([addTab(results.others,results.query,currentTab===0),addTab(results.in_args,results.query,currentTab===1),addTab(results.returned,results.query,currentTab===2),]);const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others);resultsElem.appendChild(ret_in_args);resultsElem.appendChild(ret_returned);search.innerHTML=output;if(searchState.rustdocToolbar){search.querySelector(".main-heading").appendChild(searchState.rustdocToolbar)}const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}async function search(forced){const query=DocSearch.parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="\""+query.userQuery+"\" Search - Rust";updateSearchHistory(buildUrl(query.userQuery,filterCrates));await showResults(await docSearch.execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}function initSearch(searchIndx){rawSearchIndex=searchIndx;if(typeof window!=="undefined"){docSearch=new DocSearch(rawSearchIndex,ROOT_PATH,searchState);registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}else if(typeof exports!=="undefined"){docSearch=new DocSearch(rawSearchIndex,ROOT_PATH,searchState);exports.docSearch=docSearch;exports.parseQuery=DocSearch.parseQuery}}if(typeof exports!=="undefined"){exports.initSearch=initSearch}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}class ParametricDescription{constructor(w,n,minErrors){this.w=w;this.n=n;this.minErrors=minErrors}isAccept(absState){const state=Math.floor(absState/(this.w+1));const offset=absState%(this.w+1);return this.w-offset+this.minErrors[state]<=this.n}getPosition(absState){return absState%(this.w+1)}getVector(name,charCode,pos,end){let vector=0;for(let i=pos;i>5;const bitStart=bitLoc&31;if(bitStart+bitsPerValue<=32){return((data[dataLoc]>>bitStart)&this.MASKS[bitsPerValue-1])}else{const part=32-bitStart;return ~~(((data[dataLoc]>>bitStart)&this.MASKS[part-1])+((data[1+dataLoc]&this.MASKS[bitsPerValue-part-1])<{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=()=>{changeSetting(toggle.id,toggle.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){if(setting==="hr"){output+="
";continue}const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ +
+
${setting_name}
+
`;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ + `});output+=`\ +
+
`}else{const checked=setting["default"]===true?" checked":"";output+=`\ +
\ + \ +
`}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Hide persistent navigation bar","js_name":"hide-sidebar","default":false,},{"name":"Hide table of contents","js_name":"hide-toc","default":false,},{"name":"Hide module navigation","js_name":"hide-modnav","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
${buildSettingsPageSections(settings)}
`;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display="";onEachLazy(settingsMenu.querySelectorAll("input[type='checkbox']"),el=>{const val=getSettingValue(el.id);const checked=val==="true";if(checked!==el.checked&&val!==null){el.checked=checked}})}function settingsBlurHandler(event){if(!getHelpButton().contains(document.activeElement)&&!getHelpButton().contains(event.relatedTarget)&&!getSettingsButton().contains(document.activeElement)&&!getSettingsButton().contains(event.relatedTarget)){window.hidePopoverMenus()}}if(!isSettingsPage){const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=event=>{if(settingsMenu.contains(event.target)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/static.files/src-script-56102188.js b/static.files/src-script-56102188.js new file mode 100644 index 0000000000..d0aebb8510 --- /dev/null +++ b/static.files/src-script-56102188.js @@ -0,0 +1 @@ +"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth{removeClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","false")};window.rustdocShowSourceSidebar=()=>{addClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","true")};window.rustdocToggleSrcSidebar=()=>{if(document.documentElement.classList.contains("src-sidebar-expanded")){window.rustdocCloseSourceSidebar()}else{window.rustdocShowSourceSidebar()}};function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;for(const[key,source]of srcIndex){source[NAME_OFFSET]=key;hasFoundFile=createDirEntry(source,sidebar,"",hasFoundFile)}container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}function highlightSrcLines(){const match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",highlightSrcLines);onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})() \ No newline at end of file diff --git a/static.files/storage-59e33391.js b/static.files/storage-59e33391.js new file mode 100644 index 0000000000..5aac776b45 --- /dev/null +++ b/static.files/storage-59e33391.js @@ -0,0 +1,23 @@ +"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func){for(const elem of arr){if(func(elem)){return true}}return false}function onEachLazy(lazyArray,func){return onEach(Array.prototype.slice.call(lazyArray),func)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){const themeNames=getVar("themes").split(",").filter(t=>t);themeNames.push(...builtinThemes);if(themeNames.indexOf(newThemeName)===-1){return}if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+encodeURIComponent(newThemeName)+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}if(getSettingValue("hide-sidebar")==="true"){addClass(document.documentElement,"hide-sidebar")}if(getSettingValue("hide-toc")==="true"){addClass(document.documentElement,"hide-toc")}if(getSettingValue("hide-modnav")==="true"){addClass(document.documentElement,"hide-modnav")}function updateSidebarWidth(){const desktopSidebarWidth=getSettingValue("desktop-sidebar-width");if(desktopSidebarWidth&&desktopSidebarWidth!=="null"){document.documentElement.style.setProperty("--desktop-sidebar-width",desktopSidebarWidth+"px",)}const srcSidebarWidth=getSettingValue("src-sidebar-width");if(srcSidebarWidth&&srcSidebarWidth!=="null"){document.documentElement.style.setProperty("--src-sidebar-width",srcSidebarWidth+"px",)}}updateSidebarWidth();window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0);setTimeout(updateSidebarWidth,0)}});class RustdocSearchElement extends HTMLElement{constructor(){super()}connectedCallback(){const rootPath=getVar("root-path");const currentCrate=getVar("current-crate");this.innerHTML=``}}window.customElements.define("rustdoc-search",RustdocSearchElement);class RustdocToolbarElement extends HTMLElement{constructor(){super()}connectedCallback(){if(this.firstElementChild){return}const rootPath=getVar("root-path");this.innerHTML=` +
+ Settings +
+
+ Help +
+ `}}window.customElements.define("rustdoc-toolbar",RustdocToolbarElement) \ No newline at end of file diff --git a/trait.impl/capnp/capability/trait.FromClientHook.js b/trait.impl/capnp/capability/trait.FromClientHook.js new file mode 100644 index 0000000000..864c8ab2ac --- /dev/null +++ b/trait.impl/capnp/capability/trait.FromClientHook.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl FromClientHook for Client"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[201]} \ No newline at end of file diff --git a/trait.impl/capnp/capability/trait.FromServer.js b/trait.impl/capnp/capability/trait.FromServer.js new file mode 100644 index 0000000000..e8afcdb071 --- /dev/null +++ b/trait.impl/capnp/capability/trait.FromServer.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl<_S: Server + 'static> FromServer<_S> for Client"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[379]} \ No newline at end of file diff --git a/trait.impl/capnp/capability/trait.FromTypelessPipeline.js b/trait.impl/capnp/capability/trait.FromTypelessPipeline.js new file mode 100644 index 0000000000..5660b5900c --- /dev/null +++ b/trait.impl/capnp/capability/trait.FromTypelessPipeline.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"],["impl FromTypelessPipeline for Pipeline"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[8480]} \ No newline at end of file diff --git a/trait.impl/capnp/capability/trait.Server.js b/trait.impl/capnp/capability/trait.Server.js new file mode 100644 index 0000000000..2b98051d19 --- /dev/null +++ b/trait.impl/capnp/capability/trait.Server.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl<_T: Server> Server for ServerDispatch<_T>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[389]} \ No newline at end of file diff --git a/trait.impl/capnp/introspect/trait.Introspect.js b/trait.impl/capnp/introspect/trait.Introspect.js new file mode 100644 index 0000000000..732d29fcb1 --- /dev/null +++ b/trait.impl/capnp/introspect/trait.Introspect.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl Introspect for CgroupManager"],["impl Introspect for Namespace"],["impl Introspect for Type"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"],["impl Introspect for Owned"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[8553]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.FromPointerBuilder.js b/trait.impl/capnp/traits/trait.FromPointerBuilder.js new file mode 100644 index 0000000000..19d57640fc --- /dev/null +++ b/trait.impl/capnp/traits/trait.FromPointerBuilder.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Client"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"],["impl<'a> FromPointerBuilder<'a> for Builder<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[9561]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.FromPointerReader.js b/trait.impl/capnp/traits/trait.FromPointerReader.js new file mode 100644 index 0000000000..201f4cad3a --- /dev/null +++ b/trait.impl/capnp/traits/trait.FromPointerReader.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Client"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"],["impl<'a> FromPointerReader<'a> for Reader<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[9420]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.HasStructSize.js b/trait.impl/capnp/traits/trait.HasStructSize.js new file mode 100644 index 0000000000..d90b6e999e --- /dev/null +++ b/trait.impl/capnp/traits/trait.HasStructSize.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"],["impl<'a> HasStructSize for Builder<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[8830]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.HasTypeId.js b/trait.impl/capnp/traits/trait.HasTypeId.js new file mode 100644 index 0000000000..51d0fa669a --- /dev/null +++ b/trait.impl/capnp/traits/trait.HasTypeId.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl HasTypeId for CgroupManager"],["impl HasTypeId for Namespace"],["impl HasTypeId for Type"],["impl HasTypeId for Client"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"],["impl<'a> HasTypeId for Builder<'a>"],["impl<'a> HasTypeId for Reader<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[17993]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.Imbue.js b/trait.impl/capnp/traits/trait.Imbue.js new file mode 100644 index 0000000000..eecf855dc6 --- /dev/null +++ b/trait.impl/capnp/traits/trait.Imbue.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"],["impl<'a> Imbue<'a> for Reader<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[8795]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.ImbueMut.js b/trait.impl/capnp/traits/trait.ImbueMut.js new file mode 100644 index 0000000000..33ec1b5d38 --- /dev/null +++ b/trait.impl/capnp/traits/trait.ImbueMut.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"],["impl<'a> ImbueMut<'a> for Builder<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[9005]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.IntoInternalStructReader.js b/trait.impl/capnp/traits/trait.IntoInternalStructReader.js new file mode 100644 index 0000000000..2a5ea0f7f0 --- /dev/null +++ b/trait.impl/capnp/traits/trait.IntoInternalStructReader.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"],["impl<'a> IntoInternalStructReader<'a> for Reader<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[9460]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.Owned.js b/trait.impl/capnp/traits/trait.Owned.js new file mode 100644 index 0000000000..b149905359 --- /dev/null +++ b/trait.impl/capnp/traits/trait.Owned.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"],["impl Owned for Owned"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[7810]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.OwnedStruct.js b/trait.impl/capnp/traits/trait.OwnedStruct.js new file mode 100644 index 0000000000..99baa1b39e --- /dev/null +++ b/trait.impl/capnp/traits/trait.OwnedStruct.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"],["impl OwnedStruct for Owned"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[7850]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.Pipelined.js b/trait.impl/capnp/traits/trait.Pipelined.js new file mode 100644 index 0000000000..58eb71e4ec --- /dev/null +++ b/trait.impl/capnp/traits/trait.Pipelined.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"],["impl Pipelined for Owned"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[7954]} \ No newline at end of file diff --git a/trait.impl/capnp/traits/trait.SetterInput.js b/trait.impl/capnp/traits/trait.SetterInput.js new file mode 100644 index 0000000000..7e858c73f2 --- /dev/null +++ b/trait.impl/capnp/traits/trait.SetterInput.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl SetterInput<Owned> for Client"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"],["impl<'a> SetterInput<Owned> for Reader<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[16193]} \ No newline at end of file diff --git a/trait.impl/conmon_common/conmon_capnp/conmon/trait.Server.js b/trait.impl/conmon_common/conmon_capnp/conmon/trait.Server.js new file mode 100644 index 0000000000..48f38e0c7a --- /dev/null +++ b/trait.impl/conmon_common/conmon_capnp/conmon/trait.Server.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmonrs",[["impl Server for Server"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[280]} \ No newline at end of file diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js new file mode 100644 index 0000000000..4f461ae60d --- /dev/null +++ b/trait.impl/core/clone/trait.Clone.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl Clone for CgroupManager"],["impl Clone for Namespace"],["impl Clone for Type"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Client"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl Clone for Owned"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"],["impl<'a> Clone for Reader<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[26632]} \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.Eq.js b/trait.impl/core/cmp/trait.Eq.js new file mode 100644 index 0000000000..789bb8d9ae --- /dev/null +++ b/trait.impl/core/cmp/trait.Eq.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl Eq for CgroupManager"],["impl Eq for Namespace"],["impl Eq for Type"]]],["conmonrs",[["impl Eq for Version"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[915,255]} \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.PartialEq.js b/trait.impl/core/cmp/trait.PartialEq.js new file mode 100644 index 0000000000..2f78d4337d --- /dev/null +++ b/trait.impl/core/cmp/trait.PartialEq.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl PartialEq for CgroupManager"],["impl PartialEq for Namespace"],["impl PartialEq for Type"]]],["conmonrs",[["impl PartialEq for Version"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[978,276]} \ No newline at end of file diff --git a/trait.impl/core/convert/trait.From.js b/trait.impl/core/convert/trait.From.js new file mode 100644 index 0000000000..c5be005198 --- /dev/null +++ b/trait.impl/core/convert/trait.From.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl From<CgroupManager> for u16"],["impl From<Namespace> for u16"],["impl From<Type> for u16"],["impl<'a> From<CgroupManager> for Reader<'a>"],["impl<'a> From<Namespace> for Reader<'a>"],["impl<'a> From<Type> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<Builder<'a>> for Builder<'a>"],["impl<'a> From<Reader<'a>> for Reader<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructBuilder<'a>> for Builder<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"],["impl<'a> From<StructReader<'a>> for Reader<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[58273]} \ No newline at end of file diff --git a/trait.impl/core/convert/trait.TryFrom.js b/trait.impl/core/convert/trait.TryFrom.js new file mode 100644 index 0000000000..d02a959f72 --- /dev/null +++ b/trait.impl/core/convert/trait.TryFrom.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl TryFrom<u16> for CgroupManager"],["impl TryFrom<u16> for Namespace"],["impl TryFrom<u16> for Type"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[1296]} \ No newline at end of file diff --git a/trait.impl/core/default/trait.Default.js b/trait.impl/core/default/trait.Default.js new file mode 100644 index 0000000000..36fa1fdfed --- /dev/null +++ b/trait.impl/core/default/trait.Default.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmonrs",[["impl Default for Version"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[277]} \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js new file mode 100644 index 0000000000..5a7b5a141b --- /dev/null +++ b/trait.impl/core/fmt/trait.Debug.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl Debug for CgroupManager"],["impl Debug for Namespace"],["impl Debug for Type"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"],["impl<'a> Debug for Reader<'a>"]]],["conmonrs",[["impl Debug for Server"],["impl Debug for Version"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[13743,510]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Copy.js b/trait.impl/core/marker/trait.Copy.js new file mode 100644 index 0000000000..c58859249f --- /dev/null +++ b/trait.impl/core/marker/trait.Copy.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl Copy for CgroupManager"],["impl Copy for Namespace"],["impl Copy for Type"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl Copy for Owned"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"],["impl<'a> Copy for Reader<'a>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[26256]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Freeze.js b/trait.impl/core/marker/trait.Freeze.js new file mode 100644 index 0000000000..e9e7f4547d --- /dev/null +++ b/trait.impl/core/marker/trait.Freeze.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl Freeze for CgroupManager",1,["conmon_common::conmon_capnp::conmon::CgroupManager"]],["impl Freeze for Namespace",1,["conmon_common::conmon_capnp::conmon::Namespace"]],["impl Freeze for Type",1,["conmon_common::conmon_capnp::conmon::log_driver::Type"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::attach_request::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_request::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::attach_response::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_response::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_params::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_params::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_request::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_request::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_response::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_response::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_results::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_results::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::log_driver::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::log_driver::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::namespace_response::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::namespace_response::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Pipeline"]],["impl Freeze for Client",1,["conmon_common::conmon_capnp::conmon::Client"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::Owned"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::version_params::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_params::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::version_request::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_request::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::version_response::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_response::Pipeline"]],["impl Freeze for Owned",1,["conmon_common::conmon_capnp::conmon::version_results::Owned"]],["impl Freeze for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_results::Pipeline"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Reader"]],["impl<'a> Freeze for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Builder"]],["impl<'a> Freeze for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Reader"]],["impl<_T> Freeze for ServerDispatch<_T>
where\n _T: Freeze,
",1,["conmon_common::conmon_capnp::conmon::ServerDispatch"]]]],["conmonrs",[["impl Freeze for Server",1,["conmonrs::server::Server"]],["impl Freeze for Version",1,["conmonrs::version::Version"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[64196,592]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Send.js b/trait.impl/core/marker/trait.Send.js new file mode 100644 index 0000000000..36809fcb85 --- /dev/null +++ b/trait.impl/core/marker/trait.Send.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_request::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_response::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_params::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_request::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_response::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_results::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::log_driver::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::namespace_response::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Pipeline"]],["impl !Send for Client",1,["conmon_common::conmon_capnp::conmon::Client"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_params::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_request::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_response::Pipeline"]],["impl !Send for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_results::Pipeline"]],["impl Send for CgroupManager",1,["conmon_common::conmon_capnp::conmon::CgroupManager"]],["impl Send for Namespace",1,["conmon_common::conmon_capnp::conmon::Namespace"]],["impl Send for Type",1,["conmon_common::conmon_capnp::conmon::log_driver::Type"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::attach_request::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::attach_response::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_params::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_request::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_response::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_results::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::log_driver::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::namespace_response::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::version_params::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::version_request::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::version_response::Owned"]],["impl Send for Owned",1,["conmon_common::conmon_capnp::conmon::version_results::Owned"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Reader"]],["impl<'a> !Send for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Builder"]],["impl<'a> !Send for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Reader"]],["impl<_T> Send for ServerDispatch<_T>
where\n _T: Send,
",1,["conmon_common::conmon_capnp::conmon::ServerDispatch"]]]],["conmonrs",[["impl Send for Server",1,["conmonrs::server::Server"]],["impl Send for Version",1,["conmonrs::version::Version"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[63420,580]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.StructuralPartialEq.js b/trait.impl/core/marker/trait.StructuralPartialEq.js new file mode 100644 index 0000000000..b310028fbd --- /dev/null +++ b/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl StructuralPartialEq for CgroupManager"],["impl StructuralPartialEq for Namespace"],["impl StructuralPartialEq for Type"]]],["conmonrs",[["impl StructuralPartialEq for Version"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[1086,312]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Sync.js b/trait.impl/core/marker/trait.Sync.js new file mode 100644 index 0000000000..8843f8aabd --- /dev/null +++ b/trait.impl/core/marker/trait.Sync.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_request::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_response::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_params::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_request::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_response::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_results::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::log_driver::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::namespace_response::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Pipeline"]],["impl !Sync for Client",1,["conmon_common::conmon_capnp::conmon::Client"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_params::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_request::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_response::Pipeline"]],["impl !Sync for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_results::Pipeline"]],["impl Sync for CgroupManager",1,["conmon_common::conmon_capnp::conmon::CgroupManager"]],["impl Sync for Namespace",1,["conmon_common::conmon_capnp::conmon::Namespace"]],["impl Sync for Type",1,["conmon_common::conmon_capnp::conmon::log_driver::Type"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::attach_request::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::attach_response::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_params::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_request::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_response::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_results::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::log_driver::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::namespace_response::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::version_params::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::version_request::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::version_response::Owned"]],["impl Sync for Owned",1,["conmon_common::conmon_capnp::conmon::version_results::Owned"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Reader"]],["impl<'a> !Sync for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Builder"]],["impl<'a> !Sync for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Reader"]],["impl<_T> Sync for ServerDispatch<_T>
where\n _T: Sync,
",1,["conmon_common::conmon_capnp::conmon::ServerDispatch"]]]],["conmonrs",[["impl Sync for Server",1,["conmonrs::server::Server"]],["impl Sync for Version",1,["conmonrs::version::Version"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[63420,580]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Unpin.js b/trait.impl/core/marker/trait.Unpin.js new file mode 100644 index 0000000000..27cc0d381f --- /dev/null +++ b/trait.impl/core/marker/trait.Unpin.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl Unpin for CgroupManager",1,["conmon_common::conmon_capnp::conmon::CgroupManager"]],["impl Unpin for Namespace",1,["conmon_common::conmon_capnp::conmon::Namespace"]],["impl Unpin for Type",1,["conmon_common::conmon_capnp::conmon::log_driver::Type"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::attach_request::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_request::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::attach_response::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_response::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_params::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_params::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_request::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_request::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_response::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_response::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_results::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_results::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::log_driver::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::log_driver::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::namespace_response::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::namespace_response::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Pipeline"]],["impl Unpin for Client",1,["conmon_common::conmon_capnp::conmon::Client"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::Owned"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::version_params::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_params::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::version_request::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_request::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::version_response::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_response::Pipeline"]],["impl Unpin for Owned",1,["conmon_common::conmon_capnp::conmon::version_results::Owned"]],["impl Unpin for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_results::Pipeline"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Reader"]],["impl<'a> Unpin for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Builder"]],["impl<'a> Unpin for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Reader"]],["impl<_T> Unpin for ServerDispatch<_T>
where\n _T: Unpin,
",1,["conmon_common::conmon_capnp::conmon::ServerDispatch"]]]],["conmonrs",[["impl Unpin for Server",1,["conmonrs::server::Server"]],["impl Unpin for Version",1,["conmonrs::version::Version"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[63755,586]} \ No newline at end of file diff --git a/trait.impl/core/ops/deref/trait.Deref.js b/trait.impl/core/ops/deref/trait.Deref.js new file mode 100644 index 0000000000..3e9f83fb22 --- /dev/null +++ b/trait.impl/core/ops/deref/trait.Deref.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl<_T: Server> Deref for ServerDispatch<_T>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[526]} \ No newline at end of file diff --git a/trait.impl/core/ops/deref/trait.DerefMut.js b/trait.impl/core/ops/deref/trait.DerefMut.js new file mode 100644 index 0000000000..bfda9d6e27 --- /dev/null +++ b/trait.impl/core/ops/deref/trait.DerefMut.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl<_T: Server> DerefMut for ServerDispatch<_T>"]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[535]} \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js new file mode 100644 index 0000000000..935c65048c --- /dev/null +++ b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_request::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_response::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_params::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_request::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_response::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_results::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::log_driver::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::namespace_response::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Pipeline"]],["impl !RefUnwindSafe for Client",1,["conmon_common::conmon_capnp::conmon::Client"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_params::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_request::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_response::Pipeline"]],["impl !RefUnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_results::Pipeline"]],["impl RefUnwindSafe for CgroupManager",1,["conmon_common::conmon_capnp::conmon::CgroupManager"]],["impl RefUnwindSafe for Namespace",1,["conmon_common::conmon_capnp::conmon::Namespace"]],["impl RefUnwindSafe for Type",1,["conmon_common::conmon_capnp::conmon::log_driver::Type"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::attach_request::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::attach_response::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_params::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_request::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_response::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_results::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::log_driver::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::namespace_response::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::version_params::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::version_request::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::version_response::Owned"]],["impl RefUnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::version_results::Owned"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Reader"]],["impl<'a> !RefUnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Builder"]],["impl<'a> !RefUnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Reader"]],["impl<_T> RefUnwindSafe for ServerDispatch<_T>
where\n _T: RefUnwindSafe,
",1,["conmon_common::conmon_capnp::conmon::ServerDispatch"]]]],["conmonrs",[["impl !RefUnwindSafe for Server",1,["conmonrs::server::Server"]],["impl RefUnwindSafe for Version",1,["conmonrs::version::Version"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[70770,681]} \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js new file mode 100644 index 0000000000..43a07d4d90 --- /dev/null +++ b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["conmon_common",[["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_request::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::attach_response::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_params::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_request::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_response::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_container_results::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::log_driver::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::namespace_response::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Pipeline"]],["impl !UnwindSafe for Client",1,["conmon_common::conmon_capnp::conmon::Client"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_params::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_request::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_response::Pipeline"]],["impl !UnwindSafe for Pipeline",1,["conmon_common::conmon_capnp::conmon::version_results::Pipeline"]],["impl UnwindSafe for CgroupManager",1,["conmon_common::conmon_capnp::conmon::CgroupManager"]],["impl UnwindSafe for Namespace",1,["conmon_common::conmon_capnp::conmon::Namespace"]],["impl UnwindSafe for Type",1,["conmon_common::conmon_capnp::conmon::log_driver::Type"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::attach_request::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::attach_response::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_params::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_request::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_response::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_container_results::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::log_driver::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::namespace_response::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::version_params::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::version_request::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::version_response::Owned"]],["impl UnwindSafe for Owned",1,["conmon_common::conmon_capnp::conmon::version_results::Owned"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_params::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_container_results::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_request::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::attach_response::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_params::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_request::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_response::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_container_results::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_params::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_request::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_response::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::create_namespaces_results::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_params::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_request::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_response::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::exec_sync_container_results::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::log_driver::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::namespace_response::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_params::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_container_results::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_request::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::reopen_log_response::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_params::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_container_results::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_request::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::set_window_size_response::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_params::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_request::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_response::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::start_fd_socket_results::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::text_text_map_entry::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_params::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_request::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_response::Reader"]],["impl<'a> !UnwindSafe for Builder<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Builder"]],["impl<'a> !UnwindSafe for Reader<'a>",1,["conmon_common::conmon_capnp::conmon::version_results::Reader"]],["impl<_T> UnwindSafe for ServerDispatch<_T>
where\n _T: UnwindSafe,
",1,["conmon_common::conmon_capnp::conmon::ServerDispatch"]]]],["conmonrs",[["impl !UnwindSafe for Server",1,["conmonrs::server::Server"]],["impl UnwindSafe for Version",1,["conmonrs::version::Version"]]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[69447,663]} \ No newline at end of file diff --git a/type.impl/capnp/capability/struct.Params.js b/type.impl/capnp/capability/struct.Params.js new file mode 100644 index 0000000000..594b114cad --- /dev/null +++ b/type.impl/capnp/capability/struct.Params.js @@ -0,0 +1,9 @@ +(function() { + var type_impls = Object.fromEntries([["conmon_common",[["
§

impl<T> Params<T>

pub fn new(hook: Box<dyn ParamsHook>) -> Params<T>

pub fn get(&self) -> Result<<T as Owned>::Reader<'_>, Error>
where\n T: Owned,

",0,"conmon_common::conmon_capnp::conmon::VersionParams","conmon_common::conmon_capnp::conmon::CreateContainerParams","conmon_common::conmon_capnp::conmon::ExecSyncContainerParams","conmon_common::conmon_capnp::conmon::AttachContainerParams","conmon_common::conmon_capnp::conmon::ReopenLogContainerParams","conmon_common::conmon_capnp::conmon::SetWindowSizeContainerParams","conmon_common::conmon_capnp::conmon::CreateNamespacesParams","conmon_common::conmon_capnp::conmon::StartFdSocketParams"]]]]); + if (window.register_type_impls) { + window.register_type_impls(type_impls); + } else { + window.pending_type_impls = type_impls; + } +})() +//{"start":55,"fragment_lengths":[1471]} \ No newline at end of file diff --git a/type.impl/capnp/capability/struct.Results.js b/type.impl/capnp/capability/struct.Results.js new file mode 100644 index 0000000000..436b2c4345 --- /dev/null +++ b/type.impl/capnp/capability/struct.Results.js @@ -0,0 +1,9 @@ +(function() { + var type_impls = Object.fromEntries([["conmon_common",[["
§

impl<T> Results<T>
where\n T: Owned,

pub fn new(hook: Box<dyn ResultsHook>) -> Results<T>

pub fn get(&mut self) -> <T as Owned>::Builder<'_>

pub fn set(&mut self, other: <T as Owned>::Reader<'_>) -> Result<(), Error>

pub fn set_pipeline(&mut self) -> Result<(), Error>

Call this method to signal that all of the capabilities have been filled in for this\nResults and that pipelined calls should be allowed to start using those capabilities.\n(Usually pipelined calls are enqueued until the initial call completes.)

\n
",0,"conmon_common::conmon_capnp::conmon::VersionResults","conmon_common::conmon_capnp::conmon::CreateContainerResults","conmon_common::conmon_capnp::conmon::ExecSyncContainerResults","conmon_common::conmon_capnp::conmon::AttachContainerResults","conmon_common::conmon_capnp::conmon::ReopenLogContainerResults","conmon_common::conmon_capnp::conmon::SetWindowSizeContainerResults","conmon_common::conmon_capnp::conmon::CreateNamespacesResults","conmon_common::conmon_capnp::conmon::StartFdSocketResults"]]]]); + if (window.register_type_impls) { + window.register_type_impls(type_impls); + } else { + window.pending_type_impls = type_impls; + } +})() +//{"start":55,"fragment_lengths":[2540]} \ No newline at end of file