#[repr(C)]pub struct ToolInvocation {
pub tool_id: u32,
pub arg_layout: u64,
pub args_offset: u32,
pub args_len: u32,
}Expand description
Zero-copy tool invocation
Fields§
§tool_id: u32Pre-resolved tool ID (compile-time lookup)
arg_layout: u64Bitfield describing argument positions and types
args_offset: u32Offset into shared memory for arguments
args_len: u32Length of arguments in shared memory
Implementations§
Source§impl ToolInvocation
impl ToolInvocation
Sourcepub const MAX_ARGS: usize = 16
pub const MAX_ARGS: usize = 16
Maximum number of arguments that can be encoded in arg_layout Each argument uses 4 bits for type, so 64 bits / 4 = 16 args
Sourcepub fn new(
tool_id: u32,
arg_layout: u64,
args_offset: u32,
args_len: u32,
) -> ToolInvocation
pub fn new( tool_id: u32, arg_layout: u64, args_offset: u32, args_len: u32, ) -> ToolInvocation
Create a new tool invocation
Sourcepub fn from_bytes(bytes: impl AsRef<[u8]>) -> Result<ToolInvocation, DCPError>
pub fn from_bytes(bytes: impl AsRef<[u8]>) -> Result<ToolInvocation, DCPError>
Parse from bytes.
Sourcepub fn get_arg_type(&self, index: usize) -> Option<ArgType>
pub fn get_arg_type(&self, index: usize) -> Option<ArgType>
Get the type of argument at the given index (0-15)
Sourcepub fn set_arg_type(&mut self, index: usize, arg_type: ArgType)
pub fn set_arg_type(&mut self, index: usize, arg_type: ArgType)
Set the type of argument at the given index (0-15)
Trait Implementations§
Source§impl Clone for ToolInvocation
impl Clone for ToolInvocation
Source§fn clone(&self) -> ToolInvocation
fn clone(&self) -> ToolInvocation
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for ToolInvocation
Source§impl Debug for ToolInvocation
impl Debug for ToolInvocation
impl Eq for ToolInvocation
Source§impl PartialEq for ToolInvocation
impl PartialEq for ToolInvocation
Source§fn eq(&self, other: &ToolInvocation) -> bool
fn eq(&self, other: &ToolInvocation) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for ToolInvocation
Auto Trait Implementations§
impl Freeze for ToolInvocation
impl RefUnwindSafe for ToolInvocation
impl Send for ToolInvocation
impl Sync for ToolInvocation
impl Unpin for ToolInvocation
impl UnsafeUnpin for ToolInvocation
impl UnwindSafe for ToolInvocation
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.