axum_test

Struct TestResponse

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

The TestResponse is the result of a request created using a TestServer. The TestServer builds a TestRequest, which when awaited, will produce the response.

use axum::Json;
use axum::Router;
use axum::routing::get;
use axum_test::TestServer;
use serde::Deserialize;
use serde::Serialize;

let app = Router::new()
    .route(&"/test", get(|| async { "hello!" }));

let server = TestServer::new(app)?;

// This builds a `TestResponse`
let response = server.get(&"/todo").await;

§Extracting Response

The functions TestResponse::json(), TestResponse::text(), and TestResponse::form(), allow you to extract the underlying response content in different formats.

let todo_response = server.get(&"/todo")
        .await
        .json::<Todo>();

let response_as_raw_text = server.get(&"/todo")
        .await
        .text();

TestResponse::as_bytes() and TestResponse::into_bytes(), offer the underlying raw bytes to allow custom decoding.

Full code examples can be found within their documentation.

§Assertions

The result of a response can also be asserted using the many assertion functions.

use axum::Json;
use axum::Router;
use axum_test::TestServer;
use axum::routing::get;
use serde::Deserialize;
use serde::Serialize;

let app = Router::new()
    .route(&"/test", get(|| async { "hello!" }));

let server = TestServer::new(app)?;

let response = server.get(&"/todo").await;

// These assertions will panic if they are not fulfilled by the response.
response.assert_status_ok();
response.assert_text("hello!");

Implementations§

Source§

impl TestResponse

Source

pub fn text(&self) -> String

Returns the underlying response, extracted as a UTF-8 string.

§Example
use axum::Json;
use axum::Router;
use axum::routing::get;
use serde_json::json;
use serde_json::Value;

use axum_test::TestServer;

async fn route_get_todo() -> Json<Value> {
    Json(json!({
        "description": "buy milk",
    }))
}

let app = Router::new()
    .route(&"/todo", get(route_get_todo));

let server = TestServer::new(app)?;
let response = server.get(&"/todo").await;

// Extract the response as a string on it's own.
let raw_text = response.text();
Source

pub fn json<T>(&self) -> T

Deserializes the response, as Json, into the type given.

If deserialization fails then this will panic.

§Example
use axum::Json;
use axum::Router;
use axum::routing::get;
use serde::Deserialize;
use serde::Serialize;

use axum_test::TestServer;

#[derive(Serialize, Deserialize, Debug)]
struct Todo {
    description: String,
}

async fn route_get_todo() -> Json<Todo> {
    Json(Todo {
        description: "buy milk".to_string(),
    })
}

let app = Router::new()
    .route(&"/todo", get(route_get_todo));

let server = TestServer::new(app)?;
let response = server.get(&"/todo").await;

// Extract the response as a `Todo` item.
let todo = response.json::<Todo>();
Source

pub fn yaml<T>(&self) -> T

Available on crate feature yaml only.

Deserializes the response, as Yaml, into the type given.

If deserialization fails then this will panic.

§Example
use axum::Router;
use axum::routing::get;
use axum_yaml::Yaml;
use serde::Deserialize;
use serde::Serialize;

use axum_test::TestServer;

#[derive(Serialize, Deserialize, Debug)]
struct Todo {
    description: String,
}

async fn route_get_todo() -> Yaml<Todo> {
    Yaml(Todo {
        description: "buy milk".to_string(),
    })
}

let app = Router::new()
    .route(&"/todo", get(route_get_todo));

let server = TestServer::new(app)?;
let response = server.get(&"/todo").await;

// Extract the response as a `Todo` item.
let todo = response.yaml::<Todo>();
Source

pub fn msgpack<T>(&self) -> T

Available on crate feature msgpack only.

Deserializes the response, as MsgPack, into the type given.

If deserialization fails then this will panic.

§Example
use axum::Router;
use axum::routing::get;
use axum_msgpack::MsgPack;
use serde::Deserialize;
use serde::Serialize;

use axum_test::TestServer;

#[derive(Serialize, Deserialize, Debug)]
struct Todo {
    description: String,
}

async fn route_get_todo() -> MsgPack<Todo> {
    MsgPack(Todo {
        description: "buy milk".to_string(),
    })
}

let app = Router::new()
    .route(&"/todo", get(route_get_todo));

let server = TestServer::new(app)?;
let response = server.get(&"/todo").await;

// Extract the response as a `Todo` item.
let todo = response.msgpack::<Todo>();
Source

pub fn form<T>(&self) -> T

Deserializes the response, as an urlencoded Form, into the type given.

If deserialization fails then this will panic.

§Example
use axum::Form;
use axum::Router;
use axum::routing::get;
use serde::Deserialize;
use serde::Serialize;

use axum_test::TestServer;

#[derive(Serialize, Deserialize, Debug)]
struct Todo {
    description: String,
}

async fn route_get_todo() -> Form<Todo> {
    Form(Todo {
        description: "buy milk".to_string(),
    })
}

let app = Router::new()
    .route(&"/todo", get(route_get_todo));

let server = TestServer::new(app)?;
let response = server.get(&"/todo").await;

// Extract the response as a `Todo` item.
let todo = response.form::<Todo>();
Source

pub fn as_bytes(&self) -> &Bytes

Returns the raw underlying response as Bytes.

Source

pub fn into_bytes(self) -> Bytes

Consumes this returning the underlying Bytes in the response.

Source

pub fn status_code(&self) -> StatusCode

The status_code of the response.

Source

pub fn request_method(&self) -> Method

The Method used to produce this response.

Source

pub fn request_url(&self) -> Url

The full URL that was used to produce this response.

Source

pub fn maybe_header<N>(&self, name: N) -> Option<HeaderValue>
where N: TryInto<HeaderName>, N::Error: Debug,

Finds a header with the given name. If there are multiple headers with the same name, then only the first HeaderValue will be returned.

None is returned when no header was found.

Source

pub fn headers(&self) -> &HeaderMap<HeaderValue>

Returns the headers returned from the response.

Source

pub fn maybe_content_type(&self) -> Option<String>

Source

pub fn content_type(&self) -> String

Source

pub fn header<N>(&self, name: N) -> HeaderValue

Finds a header with the given name. If there are multiple headers with the same name, then only the first will be returned.

If no header is found, then this will panic.

Source

pub fn iter_headers(&self) -> impl Iterator<Item = (&HeaderName, &HeaderValue)>

Iterates over all of the headers contained in the response.

Source

pub fn iter_headers_by_name<N>( &self, name: N, ) -> impl Iterator<Item = &HeaderValue>
where N: TryInto<HeaderName>, N::Error: Debug,

Iterates over all of the headers for a specific name, contained in the response.

Source

pub fn contains_header<N>(&self, name: N) -> bool
where N: TryInto<HeaderName>, N::Error: Debug,

Source

pub fn assert_contains_header<N>(&self, name: N)

Asserts the header named is present in the response.

If the header is not present, then the assertion fails.

Source

pub fn assert_header<N, V>(&self, name: N, value: V)

Finds a Cookie with the given name. If there are multiple matching cookies, then only the first will be returned.

None is returned if no Cookie is found.

Source

pub fn cookie(&self, cookie_name: &str) -> Cookie<'static>

Finds a Cookie with the given name. If there are multiple matching cookies, then only the first will be returned.

If no Cookie is found, then this will panic.

Source

pub fn cookies(&self) -> CookieJar

Returns all of the cookies contained in the response, within a CookieJar object.

See the cookie crate for details.

Source

pub fn iter_cookies(&self) -> impl Iterator<Item = Cookie<'_>>

Iterate over all of the cookies in the response.

Source

pub async fn into_websocket(self) -> TestWebSocket

Available on crate feature ws only.

Consumes the request, turning it into a TestWebSocket. If this cannot be done, then the response will panic.

Note, this requires the server to be running on a real HTTP port. Either using a randomly assigned port, or a specified one. See the TestServerConfig::transport for more details.

§Example
use axum::Router;
use axum_test::TestServer;

let app = Router::new();
let server = TestServer::builder()
    .http_transport()
    .build(app)?;

let mut websocket = server
    .get_websocket(&"/my-web-socket-end-point")
    .await
    .into_websocket()
    .await;

websocket.send_text("Hello!").await;
Source

pub fn assert_text<C>(&self, expected: C)
where C: AsRef<str>,

This performs an assertion comparing the whole body of the response, against the text provided.

Source

pub fn assert_text_contains<C>(&self, expected: C)
where C: AsRef<str>,

This asserts if the text given is contained, somewhere, within the response.

Source

pub fn assert_text_from_file<P>(&self, path: P)
where P: AsRef<Path>,

Asserts the response from the server matches the contents of the file.

Source

pub fn assert_json<T>(&self, expected: &T)

Deserializes the contents of the request as Json, and asserts it matches the value given.

If other does not match, or the response is not Json, then this will panic.

Source

pub fn assert_json_contains<T>(&self, expected: &T)
where T: Serialize,

Asserts the content is within the json returned. This is useful for when servers return times and IDs that you wish to ignore.

use axum::Router;
use axum::extract::Json;
use axum::routing::get;
use axum_test::TestServer;
use serde_json::json;
use std::time::Instant;

let app = Router::new()
    .route(&"/user", get(|| async {
        let id = Instant::now().elapsed().as_millis();

        Json(json!({
           "id": id,
           "name": "Joe",
           "age": 20,
       }))
    }));
let server = TestServer::new(app)?;

// Checks the response contains _only_ the values listed here,
// and ignores the rest.
server.get(&"/user")
    .await
    .assert_json_contains(&json!({
        "name": "Joe",
        "age": 20,
    }));
Source

pub fn assert_json_from_file<P>(&self, path: P)
where P: AsRef<Path>,

Read json file from given path and assert it with json response.

use axum::Json;
use axum::routing::get;
use axum::routing::Router;
use axum_test::TestServer;
use serde_json::json;

let app = Router::new()
    .route(&"/json", get(|| async {
        Json(json!({
            "name": "Joe",
            "age": 20,
        }))
    }));

let server = TestServer::new(app).unwrap();
server
    .get(&"/json")
    .await
    .assert_json_from_file("files/example.json");
Source

pub fn assert_yaml<T>(&self, other: &T)

Available on crate feature yaml only.

Deserializes the contents of the request as Yaml, and asserts it matches the value given.

If other does not match, or the response is not Yaml, then this will panic.

Source

pub fn assert_yaml_from_file<P>(&self, path: P)
where P: AsRef<Path>,

Available on crate feature yaml only.

Read yaml file from given path and assert it with yaml response.

Source

pub fn assert_msgpack<T>(&self, other: &T)

Available on crate feature msgpack only.

Deserializes the contents of the request as MsgPack, and asserts it matches the value given.

If other does not match, or the response is not MsgPack, then this will panic.

Source

pub fn assert_form<T>(&self, other: &T)

Deserializes the contents of the request as an url encoded form, and asserts it matches the value given.

If other does not match, or the response cannot be deserialized, then this will panic.

Source

pub fn assert_status(&self, expected_status_code: StatusCode)

Assert the response status code matches the one given.

Source

pub fn assert_not_status(&self, expected_status_code: StatusCode)

Assert the response status code does not match the one given.

Source

pub fn assert_status_success(&self)

Assert that the status code is within the 2xx range. i.e. The range from 200-299.

Source

pub fn assert_status_failure(&self)

Assert that the status code is outside the 2xx range. i.e. A status code less than 200, or 300 or more.

Source

pub fn assert_status_in_range<R, S>(&self, expected_status_range: R)
where R: RangeBounds<S> + TryIntoRangeBounds<StatusCode> + Debug, S: TryInto<StatusCode>,

Assert the status code is within the range given.

use axum::Json;
use axum::routing::get;
use axum::routing::Router;
use axum_test::TestServer;
use http::StatusCode;

let app = Router::new()
    .route(&"/json", get(|| async {
        StatusCode::OK
    }));
let server = TestServer::new(app).unwrap();

// Within success statuses
server
    .get(&"/json")
    .await
    .assert_status_in_range(200..=299);

// Outside success
server
    .get(&"/json")
    .await
    .assert_status_in_range(300..);

// Before server error
server
    .get(&"/json")
    .await
    .assert_status_in_range(..StatusCode::INTERNAL_SERVER_ERROR);
Source

pub fn assert_status_not_in_range<R, S>(&self, expected_status_range: R)
where R: RangeBounds<S> + TryIntoRangeBounds<StatusCode> + Debug, S: TryInto<StatusCode>,

Assert the status code is not within the range given.

use axum::Json;
use axum::routing::get;
use axum::routing::Router;
use axum_test::TestServer;
use http::StatusCode;

let app = Router::new()
    .route(&"/json", get(|| async {
        StatusCode::NOT_FOUND
    }));
let server = TestServer::new(app).unwrap();

// Is not success
server
    .get(&"/json")
    .await
    .assert_status_not_in_range(200..=299);

// 300 or higher
server
    .get(&"/json")
    .await
    .assert_status_not_in_range(300..);

// After server error
server
    .get(&"/json")
    .await
    .assert_status_not_in_range(..StatusCode::INTERNAL_SERVER_ERROR);
Source

pub fn assert_status_ok(&self)

Assert the response status code is 200.

Source

pub fn assert_status_not_ok(&self)

Assert the response status code is not 200.

Source

pub fn assert_status_see_other(&self)

Assert the response status code is 303.

Source

pub fn assert_status_bad_request(&self)

Assert the response status code is 400.

Source

pub fn assert_status_not_found(&self)

Assert the response status code is 404.

Source

pub fn assert_status_unauthorized(&self)

Assert the response status code is 401.

Source

pub fn assert_status_forbidden(&self)

Assert the response status code is 403.

Source

pub fn assert_status_conflict(&self)

Assert the response status code is 409.

Source

pub fn assert_status_payload_too_large(&self)

Assert the response status code is 413.

The payload is too large.

Source

pub fn assert_status_unprocessable_entity(&self)

Assert the response status code is 422.

Source

pub fn assert_status_too_many_requests(&self)

Assert the response status code is 429.

Source

pub fn assert_status_switching_protocols(&self)

Assert the response status code is 101.

This type of code is used in Web Socket connection when first request.

Source

pub fn assert_status_internal_server_error(&self)

Assert the response status code is 500.

Source

pub fn assert_status_service_unavailable(&self)

Assert the response status code is 503.

Trait Implementations§

Source§

impl Clone for TestResponse

Source§

fn clone(&self) -> TestResponse

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 TestResponse

Source§

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

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

impl From<TestResponse> for Bytes

Source§

fn from(response: TestResponse) -> Self

Converts to this type from the input type.

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

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

Source§

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();
Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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();
Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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();
Source§

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

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

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

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

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

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

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

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

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

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());
Source§

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

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

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

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

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

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

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

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

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

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();
Source§

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

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

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

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

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

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

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

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

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

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());
Source§

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

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

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

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

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

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

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

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

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

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

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

Create a new Painted with a default Style. Read more
Source§

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