Skip to main content

Service

Struct Service 

Source
pub struct Service {
    services: Arc<OnceServices>,
    db: Data,
    pub mutex_insert: MutexMap<OwnedRoomId, ()>,
}

Fields§

§services: Arc<OnceServices>§db: Data§mutex_insert: MutexMap<OwnedRoomId, ()>

Implementations§

Source§

impl Service

Source

pub(crate) async fn append_incoming_pdu<'a, Leafs>( &'a self, pdu: &'a PduEvent, pdu_json: CanonicalJsonObject, new_room_leafs: Leafs, state_ids_compressed: Arc<CompressedState>, soft_fail: bool, state_lock: &'a RoomMutexGuard, ) -> Result<Option<RawPduId>>
where Leafs: Iterator<Item = &'a EventId> + Send + 'a,

Append the incoming event setting the state snapshot to the state from the server that sent the event.

Source§

impl Service

Source

pub async fn append_pdu<'a, Leafs>( &'a self, pdu: &'a PduEvent, pdu_json: CanonicalJsonObject, leafs: Leafs, state_lock: &'a RoomMutexGuard, ) -> Result<RawPduId>
where Leafs: Iterator<Item = &'a EventId> + Send + 'a,

Creates a new persisted data unit and adds it to a room.

By this point the incoming event should be fully authenticated, no auth happens in append_pdu.

Returns pdu id

Source§

impl Service

Source

async fn append_pdu_effects( &self, pdu_id: RawPduId, pdu: &PduEvent, shortroomid: ShortRoomId, count: PduCount, state_lock: &RoomMutexGuard, ) -> Result

Source§

impl Service

Source

fn append_pdu_json( &self, pdu_id: &RawPduId, pdu: &PduEvent, json: &CanonicalJsonObject, )

Source§

impl Service

Source

pub async fn backfill_if_required( &self, room_id: &RoomId, from: PduCount, ) -> Result

Source§

impl Service

Source

pub async fn backfill_pdu( &self, room_id: &RoomId, origin: &ServerName, pdu: Box<RawJsonValue>, ) -> Result

Source§

impl Service

Source

fn prepend_backfill_pdu( &self, pdu_id: &RawPduId, room_id: &RoomId, event_id: &EventId, origin_server_ts: u64, json: &CanonicalJsonObject, )

Source§

impl Service

Source

pub async fn build_and_append_pdu( &self, pdu_builder: PduBuilder, sender: &UserId, room_id: &RoomId, state_lock: &RoomMutexGuard, ) -> Result<OwnedEventId>

Creates a new persisted data unit and adds it to a room. This function takes a roomid_mutex_state, meaning that only this function is able to mutate the room state.

Source§

impl Service

Source

async fn check_pdu_for_admin_room<Pdu>( &self, pdu: &Pdu, sender: &UserId, ) -> Result
where Pdu: Event,

Source§

impl Service

Source

async fn check_pdu_for_suspended_sender<Pdu>(&self, pdu: &Pdu) -> Result
where Pdu: Event,

MSC3823: reject PDUs from a suspended sender, except self-redaction of their own event or self-leave. Synapse only checks membership == leave and so lets suspended moderators kick others via /kick or a state PUT.

Source§

impl Service

Source

async fn is_self_redaction<Pdu>(&self, pdu: &Pdu) -> Result<bool>
where Pdu: Event,

Source§

impl Service

Source

pub async fn create_hash_and_sign_event( &self, pdu_builder: PduBuilder, sender: &UserId, room_id: &RoomId, _mutex_lock: &RoomMutexGuard, ) -> Result<(PduEvent, CanonicalJsonObject)>

Source§

impl Service

Source

pub async fn delete_pdus(&self, room_id: &RoomId) -> Result

Source§

impl Service

Source

pub fn pdus_near_ts( &self, user_id: Option<&UserId>, room_id: &RoomId, ts: MilliSecondsSinceUnixEpoch, dir: Direction, ) -> impl Stream<Item = Result<PdusIterItem>> + Send

Source§

impl Service

Source

pub fn pdu_ids_near_ts( &self, room_id: &RoomId, ts: MilliSecondsSinceUnixEpoch, dir: Direction, ) -> impl Stream<Item = Result<(MilliSecondsSinceUnixEpoch, PduId)>> + Send

Source§

impl Service

Source

pub fn all_pdus<'a>( &'a self, user_id: &'a UserId, room_id: &'a RoomId, ) -> impl Stream<Item = PdusIterItem> + Send + 'a

Returns an iterator over all PDUs in a room. Unknown rooms produce no items.

Source§

impl Service

Source

pub fn pdus<'a>( &'a self, user_id: Option<&'a UserId>, room_id: &'a RoomId, from: Option<PduCount>, ) -> impl Stream<Item = Result<PdusIterItem>> + Send + 'a

Returns an iterator over all events and their tokens in a room that happened after the event with id from in order.

Source§

impl Service

Source

pub fn pdus_rev<'a>( &'a self, user_id: Option<&'a UserId>, room_id: &'a RoomId, until: Option<PduCount>, ) -> impl Stream<Item = Result<PdusIterItem>> + Send + 'a

Returns an iterator over all events and their tokens in a room that happened before the event with id until in reverse-order.

Source§

impl Service

Source

pub fn pdus_raw(&self) -> impl Stream<Item = Result<Val<'_>>> + Send

Source§

impl Service

Source

pub fn outlier_pdus_raw(&self) -> impl Stream<Item = Result<Val<'_>>> + Send

Source§

impl Service

Source

fn each_slice( (pdu_id, pdu): KeyVal<'_>, user_id: Option<&UserId>, ) -> Result<PdusIterItem>

Source§

impl Service

Source

fn each_pdu( (pdu_id, pdu): (RawPduId, PduEvent), user_id: Option<&UserId>, ) -> Result<PdusIterItem>

Source§

impl Service

Source

pub async fn redact_pdu<Pdu: Event + Send + Sync>( &self, event_id: &EventId, reason: &Pdu, shortroomid: ShortRoomId, state_lock: &RoomMutexGuard, ) -> Result

Replace a PDU with the redacted form.

Source§

impl Service

Source

pub async fn replace_pdu( &self, pdu_id: &RawPduId, pdu_json: &CanonicalJsonObject, ) -> Result

Removes a pdu and creates a new one with the same id.

Source§

impl Service

Source

pub fn add_pdu_outlier(&self, event_id: &EventId, pdu: &CanonicalJsonObject)

Source§

impl Service

Source

pub async fn first_pdu_in_room(&self, room_id: &RoomId) -> Result<PduEvent>

Source§

impl Service

Source

pub async fn latest_pdu_in_room(&self, room_id: &RoomId) -> Result<PduEvent>

Source§

impl Service

Source

pub async fn first_item_in_room( &self, room_id: &RoomId, ) -> Result<(PduCount, PduEvent)>

Source§

impl Service

Source

pub async fn latest_item_in_room( &self, sender_user: Option<&UserId>, room_id: &RoomId, ) -> Result<PduEvent>

Source§

impl Service

Source

pub async fn prev_shortstatehash( &self, room_id: &RoomId, before: PduCount, ) -> Result<ShortStateHash>

Returns the shortstatehash of the room at the event directly preceding the exclusive before param. before does not have to be a valid count or in the room.

Source§

impl Service

Source

pub async fn next_shortstatehash( &self, room_id: &RoomId, after: PduCount, ) -> Result<ShortStateHash>

Returns the shortstatehash of the room at the event directly following the exclusive after param. after does not have to be a valid count or in the room.

Source§

impl Service

Source

pub async fn get_shortstatehash( &self, room_id: &RoomId, count: PduCount, ) -> Result<ShortStateHash>

Returns the shortstatehash of the room at the event

Source§

impl Service

Source

pub async fn prev_timeline_count(&self, before: &PduId) -> Result<PduCount>

Returns the shorteventid in the room preceding the exclusive before param. before does not have to be a valid shorteventid or in the room.

Source§

impl Service

Source

pub async fn next_timeline_count(&self, after: &PduId) -> Result<PduCount>

Returns the next shorteventid in the room after the exclusive after param. after does not have to be a valid shorteventid or in the room.

Source§

impl Service

Source

pub async fn last_timeline_count( &self, sender_user: Option<&UserId>, room_id: &RoomId, upper_bound: Option<PduCount>, ) -> Result<PduCount>

Source§

impl Service

Source

pub async fn get_event_id_near_ts( &self, room_id: &RoomId, ts: MilliSecondsSinceUnixEpoch, dir: Direction, ) -> Result<(MilliSecondsSinceUnixEpoch, OwnedEventId)>

Source§

impl Service

Source

pub async fn get_pdu_id_near_ts( &self, room_id: &RoomId, ts: MilliSecondsSinceUnixEpoch, dir: Direction, ) -> Result<(MilliSecondsSinceUnixEpoch, PduId)>

Source§

impl Service

Source

pub async fn get_pdu_near_ts( &self, _user_id: Option<&UserId>, room_id: &RoomId, ts: MilliSecondsSinceUnixEpoch, dir: Direction, ) -> Result<PdusIterItem>

Source§

impl Service

Source

async fn count_to_id( &self, room_id: &RoomId, count: PduCount, dir: Direction, ) -> Result<RawPduId>

Source§

impl Service

Source

fn pdu_count_to_id( shortroomid: ShortRoomId, count: PduCount, dir: Direction, ) -> RawPduId

Source§

impl Service

Source

pub async fn get_pdu_from_shorteventid( &self, shorteventid: ShortEventId, ) -> Result<PduEvent>

Returns the pdu from shorteventid Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn get_pdu(&self, event_id: &EventId) -> Result<PduEvent>

Returns the pdu. Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn get_outlier_pdu(&self, event_id: &EventId) -> Result<PduEvent>

Returns the pdu. Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn get_non_outlier_pdu(&self, event_id: &EventId) -> Result<PduEvent>

Returns the pdu. Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn get_pdu_from_id(&self, pdu_id: &RawPduId) -> Result<PduEvent>

Returns the pdu. This does NOT check the outliers Tree.

Source§

impl Service

Source

pub async fn get_pdu_json( &self, event_id: &EventId, ) -> Result<CanonicalJsonObject>

Returns the json of a pdu. Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn get_outlier_pdu_json( &self, event_id: &EventId, ) -> Result<CanonicalJsonObject>

Returns the json of a pdu. Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn get_non_outlier_pdu_json( &self, event_id: &EventId, ) -> Result<CanonicalJsonObject>

Returns the json of a pdu. Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn get_pdu_json_from_id( &self, pdu_id: &RawPduId, ) -> Result<CanonicalJsonObject>

Returns the pdu as a BTreeMap<String, CanonicalJsonValue>. This does NOT check the outliers Tree.

Source§

impl Service

Source

pub async fn get<T>(&self, event_id: &EventId) -> Result<T>
where T: for<'de> Deserialize<'de>,

Returns the pdu into T. Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn get_outlier<T>(&self, event_id: &EventId) -> Result<T>
where T: for<'de> Deserialize<'de>,

Returns the pdu into T. Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn get_non_outlier<T>(&self, event_id: &EventId) -> Result<T>
where T: for<'de> Deserialize<'de>,

Returns the pdu into T. Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn get_from_id<T>(&self, pdu_id: &RawPduId) -> Result<T>
where T: for<'de> Deserialize<'de>,

Returns the pdu into T. This does NOT check the outliers Tree.

Source§

impl Service

Source

pub async fn pdu_exists<'a>(&'a self, event_id: &'a EventId) -> bool

Checks if pdu exists Checks the eventid_outlierpdu Tree if not found in the timeline.

Source§

impl Service

Source

pub async fn non_outlier_pdu_exists(&self, event_id: &EventId) -> Result

Like get_non_outlier_pdu(), but without the expense of fetching and parsing the PduEvent

Source§

impl Service

Source

pub async fn outlier_pdu_exists(&self, event_id: &EventId) -> Result

Like get_non_outlier_pdu(), but without the expense of fetching and parsing the PduEvent

Source§

impl Service

Source

pub async fn get_pdu_count(&self, event_id: &EventId) -> Result<PduCount>

Returns the count of this pdu’s id.

Source§

impl Service

Source

pub async fn get_shorteventid_from_pdu_id( &self, pdu_id: &PduId, ) -> Result<ShortEventId>

Returns the shorteventid from the pdu_id

Source§

impl Service

Source

pub async fn get_event_id_from_pdu_id( &self, pdu_id: &PduId, ) -> Result<OwnedEventId>

Returns the event_id from the pdu_id

Source§

impl Service

Source

pub async fn get_pdu_id_from_shorteventid( &self, shorteventid: ShortEventId, ) -> Result<RawPduId>

Returns the pdu_id from the shorteventid

Source§

impl Service

Source

pub async fn get_pdu_id(&self, event_id: &EventId) -> Result<RawPduId>

Returns the pdu’s id.

Trait Implementations§

Source§

impl Service for Service

Source§

fn build(args: &Args<'_>) -> Result<Arc<Self>>

Implement the construction of the service instance. Services are generally singletons so expect this to only be called once for a service type. Note that it may be called again after a server reload, but the prior instance will have been dropped first. Failure will shutdown the server with an error.
Source§

fn memory_usage<'life0, 'life1, 'async_trait>( &'life0 self, out: &'life1 mut (dyn Write + Send), ) -> Pin<Box<dyn Future<Output = Result> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Memory usage report in a markdown string.
Source§

fn name(&self) -> &str

Return the name of the service. i.e. crate::service::make_name(std::module_path!())
Source§

fn worker<'async_trait>( self: Arc<Self>, ) -> Pin<Box<dyn Future<Output = Result> + Send + 'async_trait>>
where Self: 'async_trait,

Implement the service’s worker loop. The service manager spawns a task and calls this function after all services have been built.
Source§

fn interrupt<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Interrupt the service. This is sent to initiate a graceful shutdown. The service worker should return from its work loop.
Source§

fn clear_cache<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Clear any caches or similar runtime state.
Source§

fn unconstrained(&self) -> bool

Return true if the service worker opts out of the tokio cooperative budgeting. This can reduce tail latency at the risk of event loop starvation.

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
§

impl<T> DropFlavorWrapper<T> for T

§

type Flavor = MayDrop

The DropFlavor that [wrap]s T into Self
Source§

impl<T> ExpectInto for T

Source§

fn expect_into<Dst>(self) -> Dst
where Dst: TryFrom<Self>, Self: Sized,

Source§

impl<T> Expected for T

Source§

fn expected_add(self, rhs: Self) -> Self
where Self: Sized + CheckedAdd,

Source§

fn expected_sub(self, rhs: Self) -> Self
where Self: Sized + CheckedSub,

Source§

fn expected_mul(self, rhs: Self) -> Self
where Self: Sized + CheckedMul,

Source§

fn expected_div(self, rhs: Self) -> Self
where Self: Sized + CheckedDiv,

Source§

fn expected_rem(self, rhs: Self) -> Self
where Self: Sized + CheckedRem,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

§

const WITNESS: W = W::MAKE

A constant of the type witness
§

impl<T> Identity for T
where T: ?Sized,

§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
§

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

impl<T> Paint for T
where T: ?Sized,

§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling [Attribute] value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi [Quirk] value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1:

renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the [Condition] value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new [Painted] with a default [Style]. Read more
§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> ServiceExt for T

§

fn add_extension<T>(self, value: T) -> AddExtension<Self, T>
where Self: Sized,

Add some shareable value to request extensions. Read more
§

fn compression(self) -> Compression<Self>
where Self: Sized,

Compresses response bodies. Read more
§

fn decompression(self) -> Decompression<Self>
where Self: Sized,

Decompress response bodies. Read more
§

fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using HTTP status codes. Read more
§

fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using gRPC headers. Read more
§

fn follow_redirects(self) -> FollowRedirect<Self>
where Self: Sized,

Follow redirect resposes using the Standard policy. Read more
§

fn sensitive_headers( self, headers: impl IntoIterator<Item = HeaderName>, ) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>
where Self: Sized,

Mark headers as sensitive on both requests and responses. Read more
§

fn sensitive_request_headers( self, headers: impl IntoIterator<Item = HeaderName>, ) -> SetSensitiveRequestHeaders<Self>
where Self: Sized,

Mark headers as sensitive on requests. Read more
§

fn sensitive_response_headers( self, headers: impl IntoIterator<Item = HeaderName>, ) -> SetSensitiveResponseHeaders<Self>
where Self: Sized,

Mark headers as sensitive on responses. Read more
§

fn override_request_header<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Insert a header into the request. Read more
§

fn append_request_header<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Append a header into the request. Read more
§

fn insert_request_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Insert a header into the request, if the header is not already present. Read more
§

fn override_response_header<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Insert a header into the response. Read more
§

fn append_response_header<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Append a header into the response. Read more
§

fn insert_response_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Insert a header into the response, if the header is not already present. Read more
§

fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>
where Self: Sized,

Catch panics and convert them into 500 Internal Server responses. Read more
Source§

impl<T> Tried for T

Source§

fn try_add(self, rhs: Self) -> Result<Self, Error>
where Self: Sized + CheckedAdd,

Source§

fn try_sub(self, rhs: Self) -> Result<Self, Error>
where Self: Sized + CheckedSub,

Source§

fn try_mul(self, rhs: Self) -> Result<Self, Error>
where Self: Sized + CheckedMul,

Source§

fn try_div(self, rhs: Self) -> Result<Self, Error>
where Self: Sized + CheckedDiv,

Source§

fn try_rem(self, rhs: Self) -> Result<Self, Error>
where Self: Sized + CheckedRem,

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

impl<T> JsonCastable<CanonicalJsonValue> for T

§

impl<T> JsonCastable<Value> for T