Struct c2pa::Ingredient
source · pub struct Ingredient { /* private fields */ }
Expand description
An Ingredient
is any external asset that has been used in the creation of an image.
Implementations§
source§impl Ingredient
impl Ingredient
sourcepub fn new<S>(title: S, format: S, instance_id: S) -> Self
pub fn new<S>(title: S, format: S, instance_id: S) -> Self
Constructs a new Ingredient
.
§Arguments
title
- A user-displayable name for this ingredient (often a filename).format
- The MIME media type of the ingredient - i.e.image/jpeg
.instance_id
- A unique identifier, such as the value of the ingredient’sxmpMM:InstanceID
.
§Examples
use c2pa::Ingredient;
let ingredient = Ingredient::new("title", "image/jpeg", "ed610ae51f604002be3dbf0c589a2f1f");
sourcepub fn format(&self) -> &str
pub fn format(&self) -> &str
Returns a MIME content_type for this asset associated with this ingredient.
sourcepub fn document_id(&self) -> Option<&str>
pub fn document_id(&self) -> Option<&str>
Returns a document identifier if one exists.
sourcepub fn instance_id(&self) -> &str
pub fn instance_id(&self) -> &str
Returns the instance identifier.
For v2 ingredients this can return an empty string
sourcepub fn provenance(&self) -> Option<&str>
pub fn provenance(&self) -> Option<&str>
Returns the provenance uri if available.
sourcepub fn thumbnail_ref(&self) -> Option<&ResourceRef>
pub fn thumbnail_ref(&self) -> Option<&ResourceRef>
Returns a ResourceRef or None
.
sourcepub fn thumbnail(&self) -> Option<(&str, Cow<'_, Vec<u8>>)>
pub fn thumbnail(&self) -> Option<(&str, Cow<'_, Vec<u8>>)>
Returns thumbnail tuple Some((format, bytes)) or None
sourcepub fn thumbnail_bytes(&self) -> Result<Cow<'_, Vec<u8>>>
pub fn thumbnail_bytes(&self) -> Result<Cow<'_, Vec<u8>>>
Returns a Cow of thumbnail bytes or Err(Error::NotFound)`.
sourcepub fn relationship(&self) -> &Relationship
pub fn relationship(&self) -> &Relationship
Returns the relationship status of the ingredient.
sourcepub fn validation_status(&self) -> Option<&[ValidationStatus]>
pub fn validation_status(&self) -> Option<&[ValidationStatus]>
Returns a reference to the ValidationStatus
s if they exist.
sourcepub fn active_manifest(&self) -> Option<&str>
pub fn active_manifest(&self) -> Option<&str>
sourcepub fn manifest_data_ref(&self) -> Option<&ResourceRef>
pub fn manifest_data_ref(&self) -> Option<&ResourceRef>
Returns a reference to C2PA manifest data if it exists.
manifest_data is the binary form of a manifest store in .c2pa format.
sourcepub fn manifest_data(&self) -> Option<Cow<'_, Vec<u8>>>
pub fn manifest_data(&self) -> Option<Cow<'_, Vec<u8>>>
Returns a copy on write ref to the manifest data bytes or None`.
manifest_data is the binary form of a manifest store in .c2pa format.
sourcepub fn data_ref(&self) -> Option<&ResourceRef>
pub fn data_ref(&self) -> Option<&ResourceRef>
Returns a reference to ingredient data if it exists.
sourcepub fn description(&self) -> Option<&str>
pub fn description(&self) -> Option<&str>
Returns the detailed description of the ingredient if it exists.
sourcepub fn informational_uri(&self) -> Option<&str>
pub fn informational_uri(&self) -> Option<&str>
Returns an informational uri for the ingredient if it exists.
sourcepub fn set_title<S: Into<String>>(&mut self, title: S) -> &mut Self
pub fn set_title<S: Into<String>>(&mut self, title: S) -> &mut Self
Sets a human-readable title for this ingredient.
sourcepub fn set_instance_id<S: Into<String>>(&mut self, instance_id: S) -> &mut Self
pub fn set_instance_id<S: Into<String>>(&mut self, instance_id: S) -> &mut Self
Sets the document instanceId.
This call is optional for v2 ingredients.
Typically this is found in XMP under xmpMM:InstanceID
.
sourcepub fn set_document_id<S: Into<String>>(&mut self, document_id: S) -> &mut Self
pub fn set_document_id<S: Into<String>>(&mut self, document_id: S) -> &mut Self
Sets the document identifier.
This call is optional.
Typically this is found in XMP under xmpMM:DocumentID
.
sourcepub fn set_provenance<S: Into<String>>(&mut self, provenance: S) -> &mut Self
pub fn set_provenance<S: Into<String>>(&mut self, provenance: S) -> &mut Self
Sets the provenance URI.
This call is optional.
Typically this is found in XMP under dcterms:provenance
.
sourcepub fn set_is_parent(&mut self) -> &mut Self
pub fn set_is_parent(&mut self) -> &mut Self
Identifies this ingredient as the parent.
Only one ingredient should be flagged as a parent. Use Manifest.set_parent to ensure this is the only parent ingredient
sourcepub fn set_relationship(&mut self, relationship: Relationship) -> &mut Self
pub fn set_relationship(&mut self, relationship: Relationship) -> &mut Self
Set the ingredient Relationship status.
Only one ingredient should be set as a parentOf. Use Manifest.set_parent to ensure this is the only parent ingredient
sourcepub fn set_thumbnail_ref(&mut self, thumbnail: ResourceRef) -> Result<&mut Self>
pub fn set_thumbnail_ref(&mut self, thumbnail: ResourceRef) -> Result<&mut Self>
Sets the thumbnail from a ResourceRef.
sourcepub fn set_thumbnail<S: Into<String>, B: Into<Vec<u8>>>(
&mut self,
format: S,
bytes: B
) -> Result<&mut Self>
pub fn set_thumbnail<S: Into<String>, B: Into<Vec<u8>>>( &mut self, format: S, bytes: B ) -> Result<&mut Self>
Sets the thumbnail format and image data.
sourcepub fn set_memory_thumbnail<S: Into<String>, B: Into<Vec<u8>>>(
&mut self,
format: S,
bytes: B
) -> Result<&mut Self>
👎Deprecated since 0.28.0: Please use set_thumbnail instead
pub fn set_memory_thumbnail<S: Into<String>, B: Into<Vec<u8>>>( &mut self, format: S, bytes: B ) -> Result<&mut Self>
Sets the thumbnail format and image data only in memory
This is only used for internally generated thumbnails - when reading thumbnails from files, we don’t want to write these to file So this ensures they stay in memory unless written out.
sourcepub fn set_hash<S: Into<String>>(&mut self, hash: S) -> &mut Self
pub fn set_hash<S: Into<String>>(&mut self, hash: S) -> &mut Self
Sets the hash value generated from the entire asset.
sourcepub fn add_validation_status(&mut self, status: ValidationStatus) -> &mut Self
pub fn add_validation_status(&mut self, status: ValidationStatus) -> &mut Self
Adds a ValidationStatus to this ingredient.
sourcepub fn set_metadata(&mut self, metadata: Metadata) -> &mut Self
pub fn set_metadata(&mut self, metadata: Metadata) -> &mut Self
Adds any desired Metadata
to this ingredient.
sourcepub fn set_active_manifest<S: Into<String>>(&mut self, label: S) -> &mut Self
pub fn set_active_manifest<S: Into<String>>(&mut self, label: S) -> &mut Self
Sets the label for the active manifest in the manifest data.
sourcepub fn set_manifest_data_ref(
&mut self,
data_ref: ResourceRef
) -> Result<&mut Self>
pub fn set_manifest_data_ref( &mut self, data_ref: ResourceRef ) -> Result<&mut Self>
Sets a reference to Manifest C2PA data
sourcepub fn set_manifest_data(&mut self, data: Vec<u8>) -> Result<&mut Self>
pub fn set_manifest_data(&mut self, data: Vec<u8>) -> Result<&mut Self>
Sets the Manifest C2PA data for this ingredient with bytes
sourcepub fn set_data_ref(&mut self, data_ref: ResourceRef) -> Result<&mut Self>
pub fn set_data_ref(&mut self, data_ref: ResourceRef) -> Result<&mut Self>
Sets a reference to Ingredient data
sourcepub fn set_description<S: Into<String>>(&mut self, description: S) -> &mut Self
pub fn set_description<S: Into<String>>(&mut self, description: S) -> &mut Self
Sets a detailed description for this ingredient
sourcepub fn set_informational_uri<S: Into<String>>(&mut self, uri: S) -> &mut Self
pub fn set_informational_uri<S: Into<String>>(&mut self, uri: S) -> &mut Self
Sets an informational uri if needed
sourcepub fn resources(&self) -> &ResourceStore
pub fn resources(&self) -> &ResourceStore
Return an immutable reference to the ingredient resources
sourcepub fn resources_mut(&mut self) -> &mut ResourceStore
pub fn resources_mut(&mut self) -> &mut ResourceStore
Return an mutable reference to the ingredient resources
sourcepub fn from_file_info<P: AsRef<Path>>(path: P) -> Self
Available on crate feature file_io
only.
pub fn from_file_info<P: AsRef<Path>>(path: P) -> Self
file_io
only.Generates an Ingredient
from a file path, including XMP info
from the file if available.
This does not read c2pa_data in a file, it only reads XMP
sourcepub fn from_stream_info<F, S>(
stream: &mut dyn CAIRead,
format: F,
title: S
) -> Self
pub fn from_stream_info<F, S>( stream: &mut dyn CAIRead, format: F, title: S ) -> Self
Generates an Ingredient
from a stream, including XMP info
sourcepub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self>
Available on crate feature file_io
only.
pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self>
file_io
only.Creates an Ingredient
from a file path.
sourcepub fn from_file_with_folder<P: AsRef<Path>>(path: P, folder: P) -> Result<Self>
Available on crate feature file_io
only.
pub fn from_file_with_folder<P: AsRef<Path>>(path: P, folder: P) -> Result<Self>
file_io
only.Creates an Ingredient
from a file path.
sourcepub fn from_file_with_options<P: AsRef<Path>>(
path: P,
options: &dyn IngredientOptions
) -> Result<Self>
Available on crate feature file_io
only.
pub fn from_file_with_options<P: AsRef<Path>>( path: P, options: &dyn IngredientOptions ) -> Result<Self>
file_io
only.Creates an Ingredient
from a file path and options.
sourcepub fn from_memory(format: &str, buffer: &[u8]) -> Result<Self>
pub fn from_memory(format: &str, buffer: &[u8]) -> Result<Self>
Creates an Ingredient
from a memory buffer.
This does not set title or hash Thumbnail will be set only if one can be retrieved from a previous valid manifest
sourcepub fn from_stream(format: &str, stream: &mut dyn CAIRead) -> Result<Self>
pub fn from_stream(format: &str, stream: &mut dyn CAIRead) -> Result<Self>
Creates an Ingredient
from a stream.
This does not set title or hash Thumbnail will be set only if one can be retrieved from a previous valid manifest
sourcepub async fn from_memory_async(format: &str, buffer: &[u8]) -> Result<Self>
pub async fn from_memory_async(format: &str, buffer: &[u8]) -> Result<Self>
Creates an Ingredient
from a memory buffer (async version).
This does not set title or hash Thumbnail will be set only if one can be retrieved from a previous valid manifest
sourcepub async fn from_stream_async(
format: &str,
stream: &mut dyn CAIRead
) -> Result<Self>
pub async fn from_stream_async( format: &str, stream: &mut dyn CAIRead ) -> Result<Self>
Creates an Ingredient
from a stream (async version).
This does not set title or hash Thumbnail will be set only if one can be retrieved from a previous valid manifest
sourcepub fn with_base_path<P: AsRef<Path>>(&mut self, base_path: P) -> Result<&Self>
Available on crate feature file_io
only.
pub fn with_base_path<P: AsRef<Path>>(&mut self, base_path: P) -> Result<&Self>
file_io
only.Setting a base path will make the ingredient use resource files instead of memory buffers
The files will be relative to the given base path
sourcepub async fn from_manifest_and_asset_bytes_async<M: Into<Vec<u8>>>(
manifest_bytes: M,
format: &str,
asset_bytes: &[u8]
) -> Result<Self>
pub async fn from_manifest_and_asset_bytes_async<M: Into<Vec<u8>>>( manifest_bytes: M, format: &str, asset_bytes: &[u8] ) -> Result<Self>
Asynchronously create an Ingredient from a binary manifest (.c2pa) and asset bytes
§Example: Create an Ingredient from a binary manifest (.c2pa) and asset bytes
use c2pa::{Result, Ingredient};
let asset_bytes = include_bytes!("../tests/fixtures/cloud.jpg");
let manifest_bytes = include_bytes!("../tests/fixtures/cloud_manifest.c2pa");
let ingredient = Ingredient::from_manifest_and_asset_bytes_async(manifest_bytes.to_vec(), "image/jpeg", asset_bytes)
.await
.unwrap();
println!("{}", ingredient);
}
Trait Implementations§
source§impl Debug for Ingredient
impl Debug for Ingredient
source§impl Default for Ingredient
impl Default for Ingredient
source§fn default() -> Ingredient
fn default() -> Ingredient
source§impl<'de> Deserialize<'de> for Ingredient
impl<'de> Deserialize<'de> for Ingredient
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl Display for Ingredient
impl Display for Ingredient
source§impl JsonSchema for Ingredient
impl JsonSchema for Ingredient
source§fn schema_name() -> String
fn schema_name() -> String
source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
source§fn json_schema(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref
keyword. Read moreAuto Trait Implementations§
impl Freeze for Ingredient
impl RefUnwindSafe for Ingredient
impl Send for Ingredient
impl Sync for Ingredient
impl Unpin for Ingredient
impl UnwindSafe for Ingredient
Blanket Implementations§
source§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
source§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
source§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
source§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
source§impl<T> ConvUtil for T
impl<T> ConvUtil for T
source§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
source§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moresource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.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
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.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
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.