atuin_client::history

Struct History

Source
pub struct History {
    pub id: HistoryId,
    pub timestamp: OffsetDateTime,
    pub duration: i64,
    pub exit: i64,
    pub command: String,
    pub cwd: String,
    pub session: String,
    pub hostname: String,
    pub deleted_at: Option<OffsetDateTime>,
}
Expand description

Client-side history entry.

Client stores data unencrypted, and only encrypts it before sending to the server.

To create a new history entry, use one of the builders:

Fields§

§id: HistoryId

A client-generated ID, used to identify the entry when syncing.

Stored as client_id in the database.

§timestamp: OffsetDateTime

When the command was run.

§duration: i64

How long the command took to run.

§exit: i64

The exit code of the command.

§command: String

The command that was run.

§cwd: String

The current working directory when the command was run.

§session: String

The session ID, associated with a terminal session.

§hostname: String

The hostname of the machine the command was run on.

§deleted_at: Option<OffsetDateTime>

Timestamp, which is set when the entry is deleted, allowing a soft delete.

Implementations§

Source§

impl History

Source

pub fn serialize(&self) -> Result<DecryptedData>

Source

pub fn deserialize(bytes: &[u8], version: &str) -> Result<History>

Source

pub fn import() -> HistoryImportedBuilder

Builder for a history entry that is imported from shell history.

The only two required fields are timestamp and command.

§Examples
use atuin_client::history::History;

let history: History = History::import()
    .timestamp(time::OffsetDateTime::now_utc())
    .command("ls -la")
    .build()
    .into();

If shell history contains more information, it can be added to the builder:

use atuin_client::history::History;

let history: History = History::import()
    .timestamp(time::OffsetDateTime::now_utc())
    .command("ls -la")
    .cwd("/home/user")
    .exit(0)
    .duration(100)
    .build()
    .into();

Unknown command or command without timestamp cannot be imported, which is forced at compile time:

use atuin_client::history::History;

// this will not compile because timestamp is missing
let history: History = History::import()
    .command("ls -la")
    .build()
    .into();
Source

pub fn capture() -> HistoryCapturedBuilder

Builder for a history entry that is captured via hook.

This builder is used only at the start step of the hook, so it doesn’t have any fields which are known only after the command is finished, such as exit or duration.

§Examples
use atuin_client::history::History;

let history: History = History::capture()
    .timestamp(time::OffsetDateTime::now_utc())
    .command("ls -la")
    .cwd("/home/user")
    .build()
    .into();

Command without any required info cannot be captured, which is forced at compile time:

use atuin_client::history::History;

// this will not compile because `cwd` is missing
let history: History = History::capture()
    .timestamp(time::OffsetDateTime::now_utc())
    .command("ls -la")
    .build()
    .into();
Source

pub fn daemon() -> HistoryDaemonCaptureBuilder

Builder for a history entry that is captured via hook, and sent to the daemon.

This builder is used only at the start step of the hook, so it doesn’t have any fields which are known only after the command is finished, such as exit or duration.

It does, however, include information that can usually be inferred.

This is because the daemon we are sending a request to lacks the context of the command

§Examples
use atuin_client::history::History;

let history: History = History::daemon()
    .timestamp(time::OffsetDateTime::now_utc())
    .command("ls -la")
    .cwd("/home/user")
    .session("018deb6e8287781f9973ef40e0fde76b")
    .hostname("computer:ellie")
    .build()
    .into();

Command without any required info cannot be captured, which is forced at compile time:

use atuin_client::history::History;

// this will not compile because `hostname` is missing
let history: History = History::daemon()
    .timestamp(time::OffsetDateTime::now_utc())
    .command("ls -la")
    .cwd("/home/user")
    .session("018deb6e8287781f9973ef40e0fde76b")
    .build()
    .into();
Source

pub fn from_db() -> HistoryFromDbBuilder

Builder for a history entry that is imported from the database.

All fields are required, as they are all present in the database.

use atuin_client::history::History;

// this will not compile because `id` field is missing
let history: History = History::from_db()
    .timestamp(time::OffsetDateTime::now_utc())
    .command("ls -la".to_string())
    .cwd("/home/user".to_string())
    .exit(0)
    .duration(100)
    .session("somesession".to_string())
    .hostname("localhost".to_string())
    .deleted_at(None)
    .build()
    .into();
Source

pub fn success(&self) -> bool

Source

pub fn should_save(&self, settings: &Settings) -> bool

Trait Implementations§

Source§

impl Clone for History

Source§

fn clone(&self) -> History

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 History

Source§

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

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

impl From<HistDbEntry> for History

Source§

fn from(histdb_item: HistDbEntry) -> Self

Converts to this type from the input type.
Source§

impl<'a, R: Row> FromRow<'a, R> for History

Source§

fn from_row(__row: &'a R) -> Result<Self>

Source§

impl PartialEq for History

Source§

fn eq(&self, other: &History) -> 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 History

Source§

impl StructuralPartialEq for History

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
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, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
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, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
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, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
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> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
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> Same for T

Source§

type Output = T

Should always be Self
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, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. 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.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
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
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T