Skip to main content

TestResponse

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;

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 be asserted using the many assert_* methods.

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

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!");

These methods all return &self to allow chaining:

response
    .assert_status_ok()
    .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) -> &Self

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) -> &Self

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.

Asserts that a cookie with the given name is present in the response.

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

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) -> &Self
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) -> &Self
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) -> &Self
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) -> &Self

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. Failing the assertion.

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

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

server.get(&"/user")
    .await
    .assert_json(&json!({
        "name": "Joe",
        "age": 20,
    }));

This includes all of the abilities from crate::expect_json, to allow you to check if things partially match. See that module for more information.

// Validate aspects of the data, without needing the exact values
server.get(&"/user")
    .await
    .assert_json(&json!({
        "name": axum_test::expect_json::string(),
        "age": axum_test::expect_json::integer().in_range(18..=30),
    }));
Source

pub fn assert_json_contains<T>(&self, expected: &T) -> &Self
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) -> &Self
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);
server
    .get(&"/json")
    .await
    .assert_json_from_file("files/example.json");
Source

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

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) -> &Self
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) -> &Self

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) -> &Self

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) -> &Self

Assert the response status code matches the one given.

Source

pub fn assert_not_status(&self, expected_status_code: StatusCode) -> &Self

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

Source

pub fn assert_status_success(&self) -> &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) -> &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) -> &Self
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);

// 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, ) -> &Self
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);

// 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) -> &Self

Assert the response status code is 200.

Source

pub fn assert_status_not_ok(&self) -> &Self

Assert the response status code is not 200.

Source

pub fn assert_status_no_content(&self) -> &Self

Assert the response status code is 204.

Source

pub fn assert_status_see_other(&self) -> &Self

Assert the response status code is 303.

Source

pub fn assert_status_bad_request(&self) -> &Self

Assert the response status code is 400.

Source

pub fn assert_status_not_found(&self) -> &Self

Assert the response status code is 404.

Source

pub fn assert_status_unauthorized(&self) -> &Self

Assert the response status code is 401.

Source

pub fn assert_status_forbidden(&self) -> &Self

Assert the response status code is 403.

Source

pub fn assert_status_conflict(&self) -> &Self

Assert the response status code is 409.

Source

pub fn assert_status_payload_too_large(&self) -> &Self

Assert the response status code is 413.

The payload is too large.

Source

pub fn assert_status_unprocessable_entity(&self) -> &Self

Assert the response status code is 422.

Source

pub fn assert_status_too_many_requests(&self) -> &Self

Assert the response status code is 429.

Source

pub fn assert_status_switching_protocols(&self) -> &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) -> &Self

Assert the response status code is 500.

Source

pub fn assert_status_service_unavailable(&self) -> &Self

Assert the response status code is 503.

Trait Implementations§

Source§

impl Clone for TestResponse

Source§

fn clone(&self) -> TestResponse

Returns a duplicate 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 Display for TestResponse

Prints out the full response. Including the status code, headers, and the body.

The output is very similar to a standard HTTP response, for use with snapshotting.

Source§

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

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> 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> 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> PolicyExt for T
where T: ?Sized,

Source§

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

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
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

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