pub enum Role {
System,
Developer,
User,
Assistant,
}Expand description
The author of a message (ADR-0013).
System is the static base identity; Developer is app-author instructions that map
1:1 and losslessly onto a native provider role. On the wire, System maps to
Anthropic’s top-level system (or an OpenAI system message), while Developer maps to
an Anthropic mid-conversation system message (or an OpenAI developer message).
Injected framing/reminders (e.g. AGENTS.md project instructions) are not Developer
— they are authored as User <system-reminder> so the conversation ⇄ payload
conversion stays reversible (ADR-0013 amendment / ADR-0023).
Variants§
System
Immutable base identity and safety/policy — the “constitution”.
Developer
App-author instructions with a native provider role (OpenAI developer / Anthropic
beta mid-conversation system). Not the vehicle for reminders — those are User.
User
The human’s turns; also carries ContentBlock::ToolResult blocks.
Assistant
The model’s turns: text, thinking, and tool-use blocks.
Trait Implementations§
impl Copy for Role
Source§impl<'de> Deserialize<'de> for Role
impl<'de> Deserialize<'de> for Role
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Role, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Role, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for Role
Source§impl Serialize for Role
impl Serialize for Role
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for Role
Auto Trait Implementations§
impl Freeze for Role
impl RefUnwindSafe for Role
impl Send for Role
impl Sync for Role
impl Unpin for Role
impl UnsafeUnpin for Role
impl UnwindSafe for Role
Blanket Implementations§
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
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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
key and return true if they are equal.