# Struct cargo::core::shell::Shell

source ·

    pub struct Shell {
        output: ShellOut,
        verbosity: Verbosity,
        needs_clear: bool,
        hostname: Option<String>,
    }

Expand description

An abstraction around console output that remembers preferences for output verbosity and color.

## Fields§

§`output: ShellOut`

Wrapper around stdout/stderr. This helps with supporting sending output to a memory buffer which is useful for tests.

§`verbosity: Verbosity`

How verbose messages should be.

§`needs_clear: bool`

Flag that indicates the current line needs to be cleared before printing. Used when a progress bar is currently displayed.

§`hostname: Option<String>`

## Implementations§

source§

### impl Shell

source

#### pub fn new() -> Shell

Creates a new shell (color choice and verbosity), defaulting to ‘auto’ color and verbose output.

source

#### pub fn from_write(out: Box<dyn Write>) -> Shell

Creates a shell from a plain writable object, with no color, and max verbosity.

source

#### fn print( &mut self, status: &dyn Display, message: Option<&dyn Display>, color: &Style, justified: bool, ) -> CargoResult<()>

Prints a message, where the status will have `color` color, and can be justified. The messages follows without color.

source

#### pub fn set_needs_clear(&mut self, needs_clear: bool)

Sets whether the next print should clear the current line.

source

#### pub fn is_cleared(&self) -> bool

Returns `true` if the `needs_clear` flag is unset.

source

#### pub fn err_width(&self) -> TtyWidth

Returns the width of the terminal in spaces, if any.

source

#### pub fn is_err_tty(&self) -> bool

Returns `true` if stderr is a tty.

source

#### pub fn out(&mut self) -> &mut dyn Write

Gets a reference to the underlying stdout writer.

source

#### pub fn err(&mut self) -> &mut dyn Write

Gets a reference to the underlying stderr writer.

source

#### pub fn err_erase_line(&mut self)

Erase from cursor to end of line.

source

#### pub fn status<T, U>(&mut self, status: T, message: U) -> CargoResult<()>
where T: Display, U: Display,

Shortcut to right-align and color green a status message.

source

#### pub fn status_header<T>(&mut self, status: T) -> CargoResult<()>
where T: Display,

source

#### pub fn status_with_color<T, U>( &mut self, status: T, message: U, color: &Style, ) -> CargoResult<()>
where T: Display, U: Display,

Shortcut to right-align a status message.

source

#### pub fn verbose<F>(&mut self, callback: F) -> CargoResult<()>
where F: FnMut(&mut Shell) -> CargoResult<()>,

Runs the callback only if we are in verbose mode.

source

#### pub fn concise<F>(&mut self, callback: F) -> CargoResult<()>
where F: FnMut(&mut Shell) -> CargoResult<()>,

Runs the callback if we are not in verbose mode.

source

#### pub fn error<T: Display>(&mut self, message: T) -> CargoResult<()>

Prints a red ‘error’ message.

source

#### pub fn warn<T: Display>(&mut self, message: T) -> CargoResult<()>

Prints an amber ‘warning’ message.

source

#### pub fn note<T: Display>(&mut self, message: T) -> CargoResult<()>

Prints a cyan ‘note’ message.

source

#### pub fn set_verbosity(&mut self, verbosity: Verbosity)

Updates the verbosity of the shell.

source

#### pub fn verbosity(&self) -> Verbosity

Gets the verbosity of the shell.

source

#### pub fn set_color_choice(&mut self, color: Option<&str>) -> CargoResult<()>

Updates the color choice (always, never, or auto) from a string..

source

#### pub fn set_unicode(&mut self, yes: bool) -> CargoResult<()>

source

#### pub fn set_hyperlinks(&mut self, yes: bool) -> CargoResult<()>

source

#### pub fn out_unicode(&self) -> bool

source

#### pub fn err_unicode(&self) -> bool

source

#### pub fn color_choice(&self) -> ColorChoice

Gets the current color choice.

If we are not using a color stream, this will always return `Never`, even if the color choice has been set to something else.

source

#### pub fn err_supports_color(&self) -> bool

Whether the shell supports color.

source

#### pub fn out_supports_color(&self) -> bool

source

#### pub fn out_hyperlink<D: Display>(&self, url: D) -> Hyperlink<D>

source

#### pub fn err_hyperlink<D: Display>(&self, url: D) -> Hyperlink<D>

source

#### pub fn out_file_hyperlink(&mut self, path: &Path) -> Hyperlink<Url>

source

#### pub fn err_file_hyperlink(&mut self, path: &Path) -> Hyperlink<Url>

source

#### fn file_hyperlink(&mut self, path: &Path) -> Option<Url>

source

#### pub fn print_ansi_stderr(&mut self, message: &[u8]) -> CargoResult<()>

Prints a message to stderr and translates ANSI escape code into console colors.

source

#### pub fn print_ansi_stdout(&mut self, message: &[u8]) -> CargoResult<()>

Prints a message to stdout and translates ANSI escape code into console colors.

source

#### pub fn print_json<T: Serialize>(&mut self, obj: &T) -> CargoResult<()>

source

#### pub fn print_message(&mut self, message: Message<'_>) -> Result<()>

Prints the passed in [Message] to stderr

## Trait Implementations§

source§

### impl Debug for Shell

source§

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

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

### impl Default for Shell

source§

#### fn default() -> Self

Returns the “default value” for a type. Read more
source§

### impl ShellExt for Shell

source§

#### fn dirty_because(&mut self, unit: &Unit, s: impl Display) -> CargoResult<()>

## Auto Trait Implementations§

§

### impl Freeze for Shell

§

### impl !RefUnwindSafe for Shell

§

### impl !Send for Shell

§

### impl !Sync for Shell

§

### impl Unpin for Shell

§

### impl !UnwindSafe for Shell

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

source§

#### fn from(t: T) -> T

Returns the argument unchanged.

§

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

### impl<T> Same for T

source§

#### type Output = T

Should always be `Self`
source§

### impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

#### type Error = 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<V, T> VZip<V> for T
where V: MultiLane<T>,

§

#### fn vzip(self) -> V

§

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

## Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain `repr(...)` attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 88 bytes