Skip to main content

AIChatView

Struct AIChatView 

Source
pub struct AIChatView { /* private fields */ }
Expand description

A scrolling conversation.

Implementations§

Source§

impl AIChatView

Source

pub fn new(cx: &mut Context<'_, Self>) -> Self

Source

pub fn turns(self, turns: impl IntoIterator<Item = AITurn>) -> Self

Seed the transcript — restoring a saved conversation.

Source

pub fn empty_message(self, message: impl Into<SharedString>) -> Self

What to show before anything has been said.

Source

pub fn size(self, size: Size) -> Self

Source

pub fn max_width(self, width: f32) -> Self

Cap the reading width and center it. Long lines are hard to read, and a transcript in a wide window is the usual way to get them.

Source

pub fn virtualize(self, virtualize: bool) -> Self

Build every turn every frame, however long the conversation gets.

On by default, virtualizing means a turn scrolled more than a screen away is drawn as a spacer of the height it last measured, because building it means re-parsing its markdown — which is linear in the size of the whole transcript and lands on every frame. Turn it off if you need every turn’s element tree live at all times (an in-place find, a screenshot of the full history).

Source

pub fn focus_handle(&self) -> FocusHandle

Source

pub fn turn_count(&self) -> usize

Source

pub fn all(&self) -> &[AITurn]

Source

pub fn turn(&self, index: usize) -> Option<&AITurn>

Source

pub fn update_turn( &mut self, index: usize, edit: impl FnOnce(&mut AITurn), cx: &mut Context<'_, Self>, )

Edit a turn in place — attaching a tool result, marking an error.

Source

pub fn push(&mut self, turn: AITurn, cx: &mut Context<'_, Self>) -> usize

Append a turn and return its index. Sending always re-attaches the view to the bottom: the user just acted, so they want to see the result.

Source

pub fn begin_reply(&mut self, cx: &mut Context<'_, Self>) -> usize

Open an empty assistant turn to stream into, and return its index.

Source

pub fn push_delta(&mut self, delta: &str, cx: &mut Context<'_, Self>)

Append to the open assistant turn. Does nothing if none is open, so a late-arriving delta after a cancel can’t resurrect a finished turn.

Source

pub fn push_reasoning(&mut self, delta: &str, cx: &mut Context<'_, Self>)

Append to the open turn’s reasoning block.

Source

pub fn end_reply(&mut self, cx: &mut Context<'_, Self>)

Close the open assistant turn.

Source

pub fn fail_reply( &mut self, error: impl Into<String>, cx: &mut Context<'_, Self>, )

Close the open turn with a failure. Whatever text arrived is kept — a truncated reply is still evidence of what went wrong.

Source

pub fn set_pending( &mut self, label: Option<impl Into<SharedString>>, cx: &mut Context<'_, Self>, )

Show a “working on it” line under the transcript.

Source

pub fn clear(&mut self, cx: &mut Context<'_, Self>)

Drop every turn.

Source

pub fn scroll_to_bottom(&mut self, cx: &mut Context<'_, Self>)

Re-attach to the bottom and scroll there.

Source

pub fn is_following(&self) -> bool

Whether new text is currently pulling the view down.

Trait Implementations§

Source§

impl EventEmitter<AIChatViewEvent> for AIChatView

Source§

impl Render for AIChatView

Source§

fn render( &mut self, _window: &mut Window, cx: &mut Context<'_, Self>, ) -> impl IntoElement

Render this view into an element tree.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more