SigningSettings

Struct SigningSettings 

Source
pub struct SigningSettings<'key> { /* private fields */ }
Expand description

Represents code signing settings.

This type holds settings related to a single logical signing operation. Some settings (such as the signing key-pair are global). Other settings (such as the entitlements or designated requirement) can be applied on a more granular, scoped basis. The scoping of these lower-level settings is controlled via SettingsScope. If a setting is specified with a scope, it only applies to that scope. See that type’s documentation for more.

An instance of this type is bound to a signing operation. When the signing operation traverses into nested primitives (e.g. when traversing into the individual Mach-O binaries in a fat/universal binary or when traversing into nested bundles or non-main binaries within a bundle), a new instance of this type is transparently constructed by merging global settings with settings for the target scope. This allows granular control over which signing settings apply to which entity and enables a signing operation over a complex primitive to be configured/performed via a single SigningSettings and signing operation.

Implementations§

Source§

impl<'key> SigningSettings<'key>

Source

pub fn signing_key( &self, ) -> Option<(&'key dyn KeyInfoSigner, &CapturedX509Certificate)>

Obtain the signing key to use.

Source

pub fn set_signing_key( &mut self, private: &'key dyn KeyInfoSigner, public: CapturedX509Certificate, )

Set the signing key-pair for producing a cryptographic signature over code.

If this is not called, signing will lack a cryptographic signature and will only contain digests of content. This is known as “ad-hoc” mode. Binaries lacking a cryptographic signature or signed without a key-pair issued/signed by Apple may not run in all environments.

Source

pub fn certificate_chain(&self) -> &[CapturedX509Certificate]

Obtain the certificate chain.

Source

pub fn chain_apple_certificates( &mut self, ) -> Option<Vec<CapturedX509Certificate>>

Attempt to chain Apple CA certificates from a loaded Apple signed signing key.

If you are calling set_signing_key(), you probably want to call this immediately afterwards, as it will automatically register Apple CA certificates if you are using an Apple signed code signing certificate.

Source

pub fn signing_certificate_apple_signed(&self) -> bool

Whether the signing certificate is signed by Apple.

Source

pub fn chain_certificate(&mut self, cert: CapturedX509Certificate)

Add a parsed certificate to the signing certificate chain.

When producing a cryptographic signature (see SigningSettings::set_signing_key), information about the signing key-pair is included in the signature. The signing key’s public certificate is always included. This function can be used to define additional X.509 public certificates to include. Typically, the signing chain of the signing key-pair up until the root Certificate Authority (CA) is added so clients have access to the full certificate chain for validation purposes.

This setting has no effect if SigningSettings::set_signing_key is not called.

Source

pub fn chain_certificate_der( &mut self, data: impl AsRef<[u8]>, ) -> Result<(), AppleCodesignError>

Add a DER encoded X.509 public certificate to the signing certificate chain.

This is like Self::chain_certificate except the certificate data is provided in its binary, DER encoded form.

Source

pub fn chain_certificate_pem( &mut self, data: impl AsRef<[u8]>, ) -> Result<(), AppleCodesignError>

Add a PEM encoded X.509 public certificate to the signing certificate chain.

This is like Self::chain_certificate except the certificate is specified as PEM encoded data. This is a human readable string like -----BEGIN CERTIFICATE----- and is a common method for encoding certificate data. (PEM is effectively base64 encoded DER data.)

Only a single certificate is read from the PEM data.

Source

pub fn time_stamp_url(&self) -> Option<&Url>

Obtain the Time-Stamp Protocol server URL.

Source

pub fn set_time_stamp_url( &mut self, url: impl IntoUrl, ) -> Result<(), AppleCodesignError>

Set the Time-Stamp Protocol server URL to use to generate a Time-Stamp Token.

When set and a signing key-pair is defined, the server will be contacted during signing and a Time-Stamp Token will be embedded in the cryptographic signature. This Time-Stamp Token is a cryptographic proof that someone in possession of the signing key-pair produced the cryptographic signature at a given time. It facilitates validation of the signing time via an independent (presumably trusted) entity.

Source

pub fn signing_time(&self) -> Option<DateTime<Utc>>

Obtain the signing time to embed in signatures.

If None, the current time at the time of signing is used.

Source

pub fn set_signing_time(&mut self, time: DateTime<Utc>)

Set the signing time to embed in signatures.

If not called, the current time at time of signing will be used.

Source

pub fn team_id(&self) -> Option<&str>

Obtain the team identifier for signed binaries.

Source

pub fn set_team_id(&mut self, value: impl ToString)

Set the team identifier for signed binaries.

Source

pub fn set_team_id_from_signing_certificate(&mut self) -> Option<&str>

Attempt to set the team ID from the signing certificate.

Apple signing certificates have the team ID embedded within the certificate. By calling this method, the team ID embedded within the certificate will be propagated to the code signature.

Callers will typically want to call this after registering the signing certificate with Self::set_signing_key() but before specifying an explicit team ID via Self::set_team_id().

Calling this will replace a registered team IDs if the signing certificate contains a team ID. If no signing certificate is registered or it doesn’t contain a team ID, no changes will be made.

Returns Some if a team ID was set from the signing certificate or None otherwise.

Source

pub fn path_exclusion_pattern_matches(&self, path: &str) -> bool

Whether a given path matches a path exclusion pattern.

Source

pub fn add_path_exclusion(&mut self, v: &str) -> Result<(), AppleCodesignError>

Add a path to the exclusions list.

Source

pub fn shallow(&self) -> bool

Whether to perform a shallow, non-nested signing operation.

Can mean different things to different entities. For bundle signing, shallow mode means not to recurse into nested bundles.

Source

pub fn set_shallow(&mut self, v: bool)

Set whether to perform a shallow signing operation.

Source

pub fn for_notarization(&self) -> bool

Whether the signed asset will later be notarized.

This serves as a hint to engage additional signing settings that are required for an asset to be successfully notarized by Apple.

Source

pub fn set_for_notarization(&mut self, v: bool)

Set whether to engage notarization compatibility mode.

Source

pub fn digest_type(&self, scope: impl AsRef<SettingsScope>) -> DigestType

Obtain the primary digest type to use.

Source

pub fn set_digest_type(&mut self, scope: SettingsScope, digest_type: DigestType)

Set the content digest to use.

The default is SHA-256. Changing this to SHA-1 can weaken security of digital signatures and may prevent the binary from running in environments that enforce more modern signatures.

Source

pub fn binary_identifier( &self, scope: impl AsRef<SettingsScope>, ) -> Option<&str>

Obtain the binary identifier string for a given scope.

Source

pub fn set_binary_identifier( &mut self, scope: SettingsScope, value: impl ToString, )

Set the binary identifier string for a binary at a path.

This only has an effect when signing an individual Mach-O file (use the None path) or the non-main executable in a bundle: when signing the main executable in a bundle, the binary’s identifier is retrieved from the mandatory CFBundleIdentifier value in the bundle’s Info.plist file.

The binary identifier should be a DNS-like name and should uniquely identify the binary. e.g. com.example.my_program

Source

pub fn entitlements_plist( &self, scope: impl AsRef<SettingsScope>, ) -> Option<&Value>

Obtain the entitlements plist as a plist::Value.

The value should be a plist::Value::Dictionary variant.

Source

pub fn entitlements_xml( &self, scope: impl AsRef<SettingsScope>, ) -> Result<Option<String>, AppleCodesignError>

Obtain the entitlements XML string for a given scope.

Source

pub fn set_entitlements_xml( &mut self, scope: SettingsScope, value: impl ToString, ) -> Result<(), AppleCodesignError>

Set the entitlements to sign via an XML string.

The value should be an XML plist. The value is parsed and stored as a native plist value.

Source

pub fn designated_requirement( &self, scope: impl AsRef<SettingsScope>, ) -> &DesignatedRequirementMode

Obtain the designated requirements for a given scope.

Source

pub fn set_designated_requirement_expression( &mut self, scope: SettingsScope, expr: &CodeRequirementExpression<'_>, ) -> Result<(), AppleCodesignError>

Set the designated requirement for a Mach-O binary given a CodeRequirementExpression.

The designated requirement (also known as “code requirements”) specifies run-time requirements for the binary. e.g. you can stipulate that the binary must be signed by a certificate issued/signed/chained to Apple. The designated requirement is embedded in Mach-O binaries and signed.

Source

pub fn set_designated_requirement_bytes( &mut self, scope: SettingsScope, data: impl AsRef<[u8]>, ) -> Result<(), AppleCodesignError>

Set the designated requirement expression for a Mach-O binary given serialized bytes.

This is like SigningSettings::set_designated_requirement_expression except the designated requirement expression is given as serialized bytes. The bytes passed are the value that would be produced by compiling a code requirement expression via csreq -b.

Source

pub fn set_auto_designated_requirement(&mut self, scope: SettingsScope)

Set the designated requirement mode to auto, which will attempt to derive requirements automatically.

This setting recognizes when code signing is being performed with Apple issued code signing certificates and automatically applies appropriate settings for the certificate being used and the entity being signed.

Not all combinations may be supported. If you get an error, you will need to provide your own explicit requirement expression.

Source

pub fn code_signature_flags( &self, scope: impl AsRef<SettingsScope>, ) -> Option<CodeSignatureFlags>

Obtain the code signature flags for a given scope.

Source

pub fn set_code_signature_flags( &mut self, scope: SettingsScope, flags: CodeSignatureFlags, )

Set code signature flags for signed Mach-O binaries.

The incoming flags will replace any already-defined flags.

Source

pub fn add_code_signature_flags( &mut self, scope: SettingsScope, flags: CodeSignatureFlags, ) -> CodeSignatureFlags

Add code signature flags.

The incoming flags will be ORd with any existing flags for the path specified. The new flags will be returned.

Source

pub fn remove_code_signature_flags( &mut self, scope: SettingsScope, flags: CodeSignatureFlags, ) -> CodeSignatureFlags

Remove code signature flags.

The incoming flags will be removed from any existing flags for the path specified. The new flags will be returned.

Source

pub fn info_plist_data(&self, scope: impl AsRef<SettingsScope>) -> Option<&[u8]>

Obtain the Info.plist data registered to a given scope.

Source

pub fn runtime_version( &self, scope: impl AsRef<SettingsScope>, ) -> Option<&Version>

Obtain the runtime version for a given scope.

The runtime version represents an OS version.

Source

pub fn set_runtime_version(&mut self, scope: SettingsScope, version: Version)

Set the runtime version to use in the code directory for a given scope.

The runtime version corresponds to an OS version. The runtime version is usually derived from the SDK version used to build the binary.

Source

pub fn set_info_plist_data(&mut self, scope: SettingsScope, data: Vec<u8>)

Define the Info.plist content.

Signatures can reference the digest of an external Info.plist file in the bundle the binary is located in.

This function registers the raw content of that file is so that the content can be digested and the digest can be included in the code directory.

The value passed here should be the raw content of the Info.plist XML file.

When signing bundles, this function is called automatically with the Info.plist from the bundle. This function exists for cases where you are signing individual Mach-O binaries and the Info.plist cannot be automatically discovered.

Source

pub fn code_resources_data( &self, scope: impl AsRef<SettingsScope>, ) -> Option<&[u8]>

Obtain the CodeResources XML file data registered to a given scope.

Source

pub fn set_code_resources_data(&mut self, scope: SettingsScope, data: Vec<u8>)

Define the CodeResources XML file content for a given scope.

Bundles may contain a CodeResources XML file which defines additional resource files and binaries outside the bundle’s main executable. The code directory of the main executable contains a digest of this file to establish a chain of trust of the content of this XML file.

This function defines the content of this external file so that the content can be digested and that digest included in the code directory of the binary being signed.

When signing bundles, this function is called automatically with the content of the CodeResources XML file, if present. This function exists for cases where you are signing individual Mach-O binaries and the CodeResources XML file cannot be automatically discovered.

Source

pub fn extra_digests( &self, scope: impl AsRef<SettingsScope>, ) -> Option<&BTreeSet<DigestType>>

Obtain extra digests to include in signatures.

Source

pub fn add_extra_digest( &mut self, scope: SettingsScope, digest_type: DigestType, )

Register an addition content digest to use in signatures.

Extra digests supplement the primary registered digest when the signer supports it. Calling this likely results in an additional code directory being included in embedded signatures.

A common use case for this is to have the primary digest contain a legacy digest type (namely SHA-1) but include stronger digests as well. This enables signatures to have compatibility with older operating systems but still be modern.

Source

pub fn all_digests(&self, scope: SettingsScope) -> Vec<DigestType>

Obtain all configured digests for a scope.

Source

pub fn launch_constraints_self( &self, scope: impl AsRef<SettingsScope>, ) -> Option<&EncodedEnvironmentConstraints>

Obtain the launch constraints on self.

Source

pub fn set_launch_constraints_self( &mut self, scope: SettingsScope, constraints: EncodedEnvironmentConstraints, )

Set the launch constraints on the current binary.

Source

pub fn launch_constraints_parent( &self, scope: impl AsRef<SettingsScope>, ) -> Option<&EncodedEnvironmentConstraints>

Obtain the launch constraints on the parent process.

Source

pub fn set_launch_constraints_parent( &mut self, scope: SettingsScope, constraints: EncodedEnvironmentConstraints, )

Set the launch constraints on the parent process.

Source

pub fn launch_constraints_responsible( &self, scope: impl AsRef<SettingsScope>, ) -> Option<&EncodedEnvironmentConstraints>

Obtain the launch constraints on the responsible process.

Source

pub fn set_launch_constraints_responsible( &mut self, scope: SettingsScope, constraints: EncodedEnvironmentConstraints, )

Set the launch constraints on the responsible process.

Source

pub fn library_constraints( &self, scope: impl AsRef<SettingsScope>, ) -> Option<&EncodedEnvironmentConstraints>

Obtain the constraints on loaded libraries.

Source

pub fn set_library_constraints( &mut self, scope: SettingsScope, constraints: EncodedEnvironmentConstraints, )

Set the constraints on loaded libraries.

Source

pub fn import_settings_from_macho( &mut self, data: &[u8], ) -> Result<(), AppleCodesignError>

Import existing state from Mach-O data.

This will synchronize the signing settings with the state in the Mach-O file.

If existing settings are explicitly set, they will be honored. Otherwise the state from the Mach-O is imported into the settings.

Source

pub fn as_nested_bundle_settings(&self, bundle_path: &str) -> Self

Convert this instance to settings appropriate for a nested bundle.

Source

pub fn as_bundle_main_executable_settings(&self, path: &str) -> Self

Obtain the settings for a bundle’s main executable.

Source

pub fn as_bundle_macho_settings(&self, path: &str) -> Self

Convert this instance to settings appropriate for a Mach-O binary in a bundle.

Only some settings are inherited from the bundle.

Source

pub fn as_universal_macho_settings( &self, index: usize, cpu_type: CpuType, ) -> Self

Convert this instance to settings appropriate for a Mach-O within a universal one.

It is assumed the main scope of these settings is already targeted for a Mach-O binary. Any scoped settings for the Mach-O binary index and CPU type will be applied. CPU type settings take precedence over index scoped settings.

Source

pub fn ensure_for_notarization_settings(&self) -> Result<(), AppleCodesignError>

Attempt to validate the settings consistency when the for notarization flag is set.

On error, logs errors at error level and returns an Err.

Trait Implementations§

Source§

impl<'key> Clone for SigningSettings<'key>

Source§

fn clone(&self) -> SigningSettings<'key>

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<'key> Default for SigningSettings<'key>

Source§

fn default() -> SigningSettings<'key>

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

Auto Trait Implementations§

§

impl<'key> !Freeze for SigningSettings<'key>

§

impl<'key> !RefUnwindSafe for SigningSettings<'key>

§

impl<'key> !Send for SigningSettings<'key>

§

impl<'key> !Sync for SigningSettings<'key>

§

impl<'key> Unpin for SigningSettings<'key>

§

impl<'key> !UnwindSafe for SigningSettings<'key>

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

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

Source§

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

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>).
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
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> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> 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> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
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> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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,