pub struct MPSCNNBinaryFullyConnectedNode { /* private fields */ }MPSNNGraphNodes only.Expand description
A MPSNNFilterNode representing a MPSCNNBinaryFullyConnected kernel
See also Apple’s documentation
Implementations§
Source§impl MPSCNNBinaryFullyConnectedNode
impl MPSCNNBinaryFullyConnectedNode
Sourcepub unsafe fn nodeWithSource_weights_scaleValue_type_flags(
source_node: &MPSNNImageNode,
weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>,
scale_value: c_float,
type: MPSCNNBinaryConvolutionType,
flags: MPSCNNBinaryConvolutionFlags,
) -> Retained<Self>
Available on crate features MPSNeuralNetwork and MPSCNNConvolution and MPSNeuralNetworkTypes only.
pub unsafe fn nodeWithSource_weights_scaleValue_type_flags( source_node: &MPSNNImageNode, weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>, scale_value: c_float, type: MPSCNNBinaryConvolutionType, flags: MPSCNNBinaryConvolutionFlags, ) -> Retained<Self>
MPSNeuralNetwork and MPSCNNConvolution and MPSNeuralNetworkTypes only.Init an autoreleased node representing a MPSCNNBinaryFullyConnected kernel
Parameter sourceNode: The MPSNNImageNode representing the source MPSImage for the filter
Parameter weights: A pointer to a valid object conforming to the MPSCNNConvolutionDataSource
protocol. This object is provided by you to encapsulate storage for
convolution weights and biases.
Parameter scaleValue: A floating point value used to scale the entire convolution.
Parameter type: What kind of binarization strategy is to be used.
Parameter flags: See documentation of MPSCNNBinaryConvolutionFlags.
Returns: A new MPSNNFilter node for a MPSCNNBinaryFullyConnected kernel.
Sourcepub unsafe fn initWithSource_weights_scaleValue_type_flags(
this: Allocated<Self>,
source_node: &MPSNNImageNode,
weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>,
scale_value: c_float,
type: MPSCNNBinaryConvolutionType,
flags: MPSCNNBinaryConvolutionFlags,
) -> Retained<Self>
Available on crate features MPSNeuralNetwork and MPSCNNConvolution and MPSNeuralNetworkTypes only.
pub unsafe fn initWithSource_weights_scaleValue_type_flags( this: Allocated<Self>, source_node: &MPSNNImageNode, weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>, scale_value: c_float, type: MPSCNNBinaryConvolutionType, flags: MPSCNNBinaryConvolutionFlags, ) -> Retained<Self>
MPSNeuralNetwork and MPSCNNConvolution and MPSNeuralNetworkTypes only.Init a node representing a MPSCNNBinaryFullyConnected kernel
Parameter sourceNode: The MPSNNImageNode representing the source MPSImage for the filter
Parameter weights: A pointer to a valid object conforming to the MPSCNNConvolutionDataSource
protocol. This object is provided by you to encapsulate storage for
convolution weights and biases.
Parameter scaleValue: A floating point value used to scale the entire convolution.
Parameter type: What kind of binarization strategy is to be used.
Parameter flags: See documentation of MPSCNNBinaryConvolutionFlags.
Returns: A new MPSNNFilter node for a MPSCNNBinaryFullyConnected kernel.
Sourcepub unsafe fn nodeWithSource_weights_outputBiasTerms_outputScaleTerms_inputBiasTerms_inputScaleTerms_type_flags(
source_node: &MPSNNImageNode,
weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>,
output_bias_terms: *const c_float,
output_scale_terms: *const c_float,
input_bias_terms: *const c_float,
input_scale_terms: *const c_float,
type: MPSCNNBinaryConvolutionType,
flags: MPSCNNBinaryConvolutionFlags,
) -> Retained<Self>
Available on crate features MPSNeuralNetwork and MPSCNNConvolution and MPSNeuralNetworkTypes only.
pub unsafe fn nodeWithSource_weights_outputBiasTerms_outputScaleTerms_inputBiasTerms_inputScaleTerms_type_flags( source_node: &MPSNNImageNode, weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>, output_bias_terms: *const c_float, output_scale_terms: *const c_float, input_bias_terms: *const c_float, input_scale_terms: *const c_float, type: MPSCNNBinaryConvolutionType, flags: MPSCNNBinaryConvolutionFlags, ) -> Retained<Self>
MPSNeuralNetwork and MPSCNNConvolution and MPSNeuralNetworkTypes only.Init an autoreleased node representing a MPSCNNBinaryFullyConnected kernel
Parameter sourceNode: The MPSNNImageNode representing the source MPSImage for the filter
Parameter weights: A pointer to a valid object conforming to the MPSCNNConvolutionDataSource
protocol. This object is provided by you to encapsulate storage for
convolution weights and biases.
Parameter outputBiasTerms: A pointer to bias terms to be applied to the convolution output.
See MPSCNNBinaryConvolution for more details.
Parameter outputScaleTerms: A pointer to scale terms to be applied to binary convolution
results per output feature channel. See MPSCNNBinaryConvolution for more details.
Parameter inputBiasTerms: A pointer to offset terms to be applied to the input before convolution and
before input scaling. See MPSCNNBinaryConvolution for more details.
Parameter inputScaleTerms: A pointer to scale terms to be applied to the input before convolution,
but after input biasing. See MPSCNNBinaryConvolution for more details.
Parameter type: What kind of binarization strategy is to be used.
Parameter flags: See documentation of MPSCNNBinaryConvolutionFlags.
Returns: A new MPSNNFilter node for a MPSCNNBinaryFullyConnected kernel.
§Safety
output_bias_termsmust be a valid pointer or null.output_scale_termsmust be a valid pointer or null.input_bias_termsmust be a valid pointer or null.input_scale_termsmust be a valid pointer or null.
Sourcepub unsafe fn initWithSource_weights_outputBiasTerms_outputScaleTerms_inputBiasTerms_inputScaleTerms_type_flags(
this: Allocated<Self>,
source_node: &MPSNNImageNode,
weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>,
output_bias_terms: *const c_float,
output_scale_terms: *const c_float,
input_bias_terms: *const c_float,
input_scale_terms: *const c_float,
type: MPSCNNBinaryConvolutionType,
flags: MPSCNNBinaryConvolutionFlags,
) -> Retained<Self>
Available on crate features MPSNeuralNetwork and MPSCNNConvolution and MPSNeuralNetworkTypes only.
pub unsafe fn initWithSource_weights_outputBiasTerms_outputScaleTerms_inputBiasTerms_inputScaleTerms_type_flags( this: Allocated<Self>, source_node: &MPSNNImageNode, weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>, output_bias_terms: *const c_float, output_scale_terms: *const c_float, input_bias_terms: *const c_float, input_scale_terms: *const c_float, type: MPSCNNBinaryConvolutionType, flags: MPSCNNBinaryConvolutionFlags, ) -> Retained<Self>
MPSNeuralNetwork and MPSCNNConvolution and MPSNeuralNetworkTypes only.Init a node representing a MPSCNNBinaryFullyConnected kernel
Parameter sourceNode: The MPSNNImageNode representing the source MPSImage for the filter
Parameter weights: A pointer to a valid object conforming to the MPSCNNConvolutionDataSource
protocol. This object is provided by you to encapsulate storage for
convolution weights and biases.
Parameter outputBiasTerms: A pointer to bias terms to be applied to the convolution output.
See MPSCNNBinaryConvolution for more details.
Parameter outputScaleTerms: A pointer to scale terms to be applied to binary convolution
results per output feature channel. See MPSCNNBinaryConvolution for more details.
Parameter inputBiasTerms: A pointer to offset terms to be applied to the input before convolution and
before input scaling. See MPSCNNBinaryConvolution for more details.
Parameter inputScaleTerms: A pointer to scale terms to be applied to the input before convolution,
but after input biasing. See MPSCNNBinaryConvolution for more details.
Parameter type: What kind of binarization strategy is to be used.
Parameter flags: See documentation of MPSCNNBinaryConvolutionFlags.
Returns: A new MPSNNFilter node for a MPSCNNBinaryFullyConnected kernel.
§Safety
output_bias_termsmust be a valid pointer or null.output_scale_termsmust be a valid pointer or null.input_bias_termsmust be a valid pointer or null.input_scale_termsmust be a valid pointer or null.
Source§impl MPSCNNBinaryFullyConnectedNode
Methods declared on superclass MPSCNNConvolutionNode.
impl MPSCNNBinaryFullyConnectedNode
Methods declared on superclass MPSCNNConvolutionNode.
Sourcepub unsafe fn nodeWithSource_weights(
source_node: &MPSNNImageNode,
weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>,
) -> Retained<Self>
Available on crate features MPSNeuralNetwork and MPSCNNConvolution only.
pub unsafe fn nodeWithSource_weights( source_node: &MPSNNImageNode, weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>, ) -> Retained<Self>
MPSNeuralNetwork and MPSCNNConvolution only.Init an autoreleased not representing a MPSCNNConvolution kernel
Parameter sourceNode: The MPSNNImageNode representing the source MPSImage for the filter
Parameter weights: A pointer to a valid object conforming to the MPSCNNConvolutionDataSource
protocol. This object is provided by you to encapsulate storage for
convolution weights and biases. If it is used for training, it may not
have a neuron embedded in the convolution descriptor.
Returns: A new MPSNNFilter node for a MPSCNNConvolution kernel.
Sourcepub unsafe fn initWithSource_weights(
this: Allocated<Self>,
source_node: &MPSNNImageNode,
weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>,
) -> Retained<Self>
Available on crate features MPSNeuralNetwork and MPSCNNConvolution only.
pub unsafe fn initWithSource_weights( this: Allocated<Self>, source_node: &MPSNNImageNode, weights: &ProtocolObject<dyn MPSCNNConvolutionDataSource>, ) -> Retained<Self>
MPSNeuralNetwork and MPSCNNConvolution only.Init a node representing a MPSCNNConvolution kernel
Parameter sourceNode: The MPSNNImageNode representing the source MPSImage for the filter
Parameter weights: A pointer to a valid object conforming to the MPSCNNConvolutionDataSource
protocol. This object is provided by you to encapsulate storage for
convolution weights and biases. If it is used for training, it may not
have a neuron embedded in the convolution descriptor.
Returns: A new MPSNNFilter node for a MPSCNNConvolution kernel.
Source§impl MPSCNNBinaryFullyConnectedNode
Methods declared on superclass MPSNNFilterNode.
impl MPSCNNBinaryFullyConnectedNode
Methods declared on superclass MPSNNFilterNode.
Methods from Deref<Target = MPSCNNBinaryConvolutionNode>§
Sourcepub unsafe fn convolutionGradientState(
&self,
) -> Option<Retained<MPSCNNConvolutionGradientStateNode>>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn convolutionGradientState( &self, ) -> Option<Retained<MPSCNNConvolutionGradientStateNode>>
MPSNeuralNetwork only.unavailable
Methods from Deref<Target = MPSCNNConvolutionNode>§
Sourcepub unsafe fn trainingStyle(&self) -> MPSNNTrainingStyle
Available on crate features MPSNeuralNetwork and MPSNeuralNetworkTypes only.
pub unsafe fn trainingStyle(&self) -> MPSNNTrainingStyle
MPSNeuralNetwork and MPSNeuralNetworkTypes only.The training style of the forward node will be propagated to gradient nodes made from it
Sourcepub unsafe fn setTrainingStyle(&self, training_style: MPSNNTrainingStyle)
Available on crate features MPSNeuralNetwork and MPSNeuralNetworkTypes only.
pub unsafe fn setTrainingStyle(&self, training_style: MPSNNTrainingStyle)
MPSNeuralNetwork and MPSNeuralNetworkTypes only.Setter for trainingStyle.
Sourcepub unsafe fn accumulatorPrecision(
&self,
) -> MPSNNConvolutionAccumulatorPrecisionOption
Available on crate features MPSNeuralNetwork and MPSNeuralNetworkTypes only.
pub unsafe fn accumulatorPrecision( &self, ) -> MPSNNConvolutionAccumulatorPrecisionOption
MPSNeuralNetwork and MPSNeuralNetworkTypes only.Set the floating-point precision used by the convolution accumulator
Default: MPSNNConvolutionAccumulatorPrecisionOptionFloat
Sourcepub unsafe fn setAccumulatorPrecision(
&self,
accumulator_precision: MPSNNConvolutionAccumulatorPrecisionOption,
)
Available on crate features MPSNeuralNetwork and MPSNeuralNetworkTypes only.
pub unsafe fn setAccumulatorPrecision( &self, accumulator_precision: MPSNNConvolutionAccumulatorPrecisionOption, )
MPSNeuralNetwork and MPSNeuralNetworkTypes only.Setter for accumulatorPrecision.
Sourcepub unsafe fn convolutionGradientState(
&self,
) -> Option<Retained<MPSCNNConvolutionGradientStateNode>>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn convolutionGradientState( &self, ) -> Option<Retained<MPSCNNConvolutionGradientStateNode>>
MPSNeuralNetwork only.A node to represent a MPSCNNConvolutionGradientState object
Use this if the convolution is mirrored by a convolution transpose node later on in the graph to make sure that the size of the image returned from the convolution transpose matches the size of the image passed in to this node.
Methods from Deref<Target = MPSNNFilterNode>§
Sourcepub unsafe fn resultImage(&self) -> Retained<MPSNNImageNode>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn resultImage(&self) -> Retained<MPSNNImageNode>
MPSNeuralNetwork only.Get the node representing the image result of the filter
Except where otherwise noted, the precision used for the result image (see format property) is copied from the precision from the first input image node.
Sourcepub unsafe fn resultState(&self) -> Option<Retained<MPSNNStateNode>>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn resultState(&self) -> Option<Retained<MPSNNStateNode>>
MPSNeuralNetwork only.convenience method for resultStates[0]
If resultStates is nil, returns nil
Sourcepub unsafe fn resultStates(&self) -> Option<Retained<NSArray<MPSNNStateNode>>>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn resultStates(&self) -> Option<Retained<NSArray<MPSNNStateNode>>>
MPSNeuralNetwork only.Get the node representing the state result of the filter
If more than one, see description of subclass for ordering.
Sourcepub unsafe fn paddingPolicy(&self) -> Retained<ProtocolObject<dyn MPSNNPadding>>
Available on crate features MPSNeuralNetwork and MPSNeuralNetworkTypes only.
pub unsafe fn paddingPolicy(&self) -> Retained<ProtocolObject<dyn MPSNNPadding>>
MPSNeuralNetwork and MPSNeuralNetworkTypes only.The padding method used for the filter node
The padding policy configures how the filter centers the region of interest in the source image. It principally is responsible for setting the MPSCNNKernel.offset and the size of the image produced, and sometimes will also configure .sourceFeatureChannelOffset, .sourceFeatureChannelMaxCount, and .edgeMode. It is permitted to set any other filter properties as needed using a custom padding policy. The default padding policy varies per filter to conform to consensus expectation for the behavior of that filter. In some cases, pre-made padding policies are provided to match the behavior of common neural networking frameworks with particularly complex or unexpected behavior for specific nodes. See MPSNNDefaultPadding class methods in MPSNeuralNetworkTypes.h for more.
BUG: MPS doesn’t provide a good way to reset the MPSKernel properties in the context of a MPSNNGraph after the kernel is finished encoding. These values carry on to the next time the graph is used. Consequently, if your custom padding policy modifies the property as a function of the previous value, e.g.:
kernel.someProperty += 2;
then the second time the graph runs, the property may have an inconsistent value, leading to unexpected behavior. The default padding computation runs before the custom padding method to provide it with a sense of what is expected for the default configuration and will reinitialize the value in the case of the .offset. However, that computation usually doesn’t reset other properties. In such cases, the custom padding policy may need to keep a record of the original value to enable consistent behavior.
Sourcepub unsafe fn setPaddingPolicy(
&self,
padding_policy: &ProtocolObject<dyn MPSNNPadding>,
)
Available on crate features MPSNeuralNetwork and MPSNeuralNetworkTypes only.
pub unsafe fn setPaddingPolicy( &self, padding_policy: &ProtocolObject<dyn MPSNNPadding>, )
MPSNeuralNetwork and MPSNeuralNetworkTypes only.Setter for paddingPolicy.
Sourcepub unsafe fn label(&self) -> Option<Retained<NSString>>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn label(&self) -> Option<Retained<NSString>>
MPSNeuralNetwork only.A string to help identify this object.
Sourcepub unsafe fn setLabel(&self, label: Option<&NSString>)
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn setLabel(&self, label: Option<&NSString>)
MPSNeuralNetwork only.Sourcepub unsafe fn gradientFilterWithSource(
&self,
gradient_image: &MPSNNImageNode,
) -> Retained<MPSNNGradientFilterNode>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn gradientFilterWithSource( &self, gradient_image: &MPSNNImageNode, ) -> Retained<MPSNNGradientFilterNode>
MPSNeuralNetwork only.Return the gradient (backwards) version of this filter.
The backwards training version of the filter will be returned. The non-gradient image and state arguments for the filter are automatically obtained from the target.
Parameter gradientImage: The gradient images corresponding with the resultImage
of the target
Sourcepub unsafe fn gradientFilterWithSources(
&self,
gradient_images: &NSArray<MPSNNImageNode>,
) -> Retained<MPSNNGradientFilterNode>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn gradientFilterWithSources( &self, gradient_images: &NSArray<MPSNNImageNode>, ) -> Retained<MPSNNGradientFilterNode>
MPSNeuralNetwork only.Return the gradient (backwards) version of this filter.
The backwards training version of the filter will be returned. The non-gradient image and state arguments for the filter are automatically obtained from the target.
Parameter gradientImages: The gradient images corresponding with the resultImage
of the target
Sourcepub unsafe fn gradientFiltersWithSources(
&self,
gradient_images: &NSArray<MPSNNImageNode>,
) -> Retained<NSArray<MPSNNGradientFilterNode>>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn gradientFiltersWithSources( &self, gradient_images: &NSArray<MPSNNImageNode>, ) -> Retained<NSArray<MPSNNGradientFilterNode>>
MPSNeuralNetwork only.Return multiple gradient versions of the filter
MPSNNFilters that consume multiple inputs generally result in multiple conjugate filters for the gradient computation at the end of training. For example, a single concatenation operation that concatenates multple images will result in an array of slice operators that carve out subsections of the input gradient image.
Sourcepub unsafe fn gradientFiltersWithSource(
&self,
gradient_image: &MPSNNImageNode,
) -> Retained<NSArray<MPSNNGradientFilterNode>>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn gradientFiltersWithSource( &self, gradient_image: &MPSNNImageNode, ) -> Retained<NSArray<MPSNNGradientFilterNode>>
MPSNeuralNetwork only.Return multiple gradient versions of the filter
MPSNNFilters that consume multiple inputs generally result in multiple conjugate filters for the gradient computation at the end of training. For example, a single concatenation operation that concatenates multple images will result in an array of slice operators that carve out subsections of the input gradient image.
Sourcepub unsafe fn trainingGraphWithSourceGradient_nodeHandler(
&self,
gradient_image: Option<&MPSNNImageNode>,
node_handler: MPSGradientNodeBlock,
) -> Option<Retained<NSArray<MPSNNFilterNode>>>
Available on crate features MPSNeuralNetwork and block2 only.
pub unsafe fn trainingGraphWithSourceGradient_nodeHandler( &self, gradient_image: Option<&MPSNNImageNode>, node_handler: MPSGradientNodeBlock, ) -> Option<Retained<NSArray<MPSNNFilterNode>>>
MPSNeuralNetwork and block2 only.Build training graph from inference graph
This method will iteratively build the training portion of a graph based on an inference graph. Self should be the last node in the inference graph. It is typically a loss layer, but can be anything. Typically, the “inference graph” used here is the desired inference graph with a dropout node and a loss layer node appended.
The nodes that are created will have default properties. In certain cases, these may not be appropriate (e.g. if you want to do CPU based updates of convolution weights instead of default GPU updates.) In such cases, your application should use the nodeHandler to configure the new nodes as they are created.
BUG: This method can not follow links to regions of the graph that are connected to the rest of the graph solely via MPSNNStateNodes. A gradient image input is required to construct a MPSNNGradientFilterNode from a inference filter node.
Parameter gradientImage: The input gradient image for the first gradient
node in the training section of the graph. If nil,
self.resultImage is used. This results in a standard monolithic
training graph. If the graph is instead divided into multiple
subgraphs (potentially to allow for your custom code to appear
inbetween MPSNNGraph segments) a new MPSImageNode*
may be substituted.
Parameter nodeHandler: An optional block to allow for customization of gradient
nodes and intermediate images as the graph is constructed.
It may also be used to prune braches of the developing
training graph. If nil, the default handler is used. It builds
the full graph, and assigns any inferenceNodeSources[i].handle
to their gradient counterparts.
Returns: The list of new MPSNNFilterNode training graph termini. These MPSNNFilterNodes are not necessarily all MPSNNGradientFilterNodes. To build a full list of nodes created, use a custom nodeHandler. If no nodes are created nil is returned.
§Safety
node_handler must be a valid pointer or null.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init/new methods).
§Example
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.Use Ivar::load instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass: for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
§Panics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
§Examples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementations§
Source§impl AsRef<AnyObject> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl AsRef<AnyObject> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§impl AsRef<MPSCNNBinaryConvolutionNode> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl AsRef<MPSCNNBinaryConvolutionNode> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§fn as_ref(&self) -> &MPSCNNBinaryConvolutionNode
fn as_ref(&self) -> &MPSCNNBinaryConvolutionNode
Source§impl AsRef<MPSCNNBinaryFullyConnectedNode> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl AsRef<MPSCNNBinaryFullyConnectedNode> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§impl AsRef<MPSCNNConvolutionNode> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl AsRef<MPSCNNConvolutionNode> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§fn as_ref(&self) -> &MPSCNNConvolutionNode
fn as_ref(&self) -> &MPSCNNConvolutionNode
Source§impl AsRef<MPSNNFilterNode> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl AsRef<MPSNNFilterNode> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§fn as_ref(&self) -> &MPSNNFilterNode
fn as_ref(&self) -> &MPSNNFilterNode
Source§impl AsRef<NSObject> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl AsRef<NSObject> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§impl Borrow<AnyObject> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl Borrow<AnyObject> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§impl Borrow<MPSCNNBinaryConvolutionNode> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl Borrow<MPSCNNBinaryConvolutionNode> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§fn borrow(&self) -> &MPSCNNBinaryConvolutionNode
fn borrow(&self) -> &MPSCNNBinaryConvolutionNode
Source§impl Borrow<MPSCNNConvolutionNode> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl Borrow<MPSCNNConvolutionNode> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§fn borrow(&self) -> &MPSCNNConvolutionNode
fn borrow(&self) -> &MPSCNNConvolutionNode
Source§impl Borrow<MPSNNFilterNode> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl Borrow<MPSNNFilterNode> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§fn borrow(&self) -> &MPSNNFilterNode
fn borrow(&self) -> &MPSNNFilterNode
Source§impl Borrow<NSObject> for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl Borrow<NSObject> for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§impl ClassType for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl ClassType for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§const NAME: &'static str = "MPSCNNBinaryFullyConnectedNode"
const NAME: &'static str = "MPSCNNBinaryFullyConnectedNode"
Source§type Super = MPSCNNBinaryConvolutionNode
type Super = MPSCNNBinaryConvolutionNode
Source§type ThreadKind = <<MPSCNNBinaryFullyConnectedNode as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<MPSCNNBinaryFullyConnectedNode as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl Debug for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§impl Deref for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl Deref for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§impl Hash for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl Hash for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§impl MPSNNTrainableNode for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl MPSNNTrainableNode for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§unsafe fn trainingStyle(&self) -> MPSNNTrainingStyle
unsafe fn trainingStyle(&self) -> MPSNNTrainingStyle
MPSNeuralNetworkTypes only.Source§unsafe fn setTrainingStyle(&self, training_style: MPSNNTrainingStyle)
unsafe fn setTrainingStyle(&self, training_style: MPSNNTrainingStyle)
MPSNeuralNetworkTypes only.trainingStyle.Source§impl Message for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl Message for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§impl NSObjectProtocol for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl NSObjectProtocol for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_refSource§fn isMemberOfClass(&self, cls: &AnyClass) -> bool
fn isMemberOfClass(&self, cls: &AnyClass) -> bool
Source§fn respondsToSelector(&self, aSelector: Sel) -> bool
fn respondsToSelector(&self, aSelector: Sel) -> bool
Source§fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
Source§fn debugDescription(&self) -> Retained<NSObject>
fn debugDescription(&self) -> Retained<NSObject>
Source§impl PartialEq for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl PartialEq for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§impl RefEncode for MPSCNNBinaryFullyConnectedNode
Available on crate feature MPSNeuralNetwork only.
impl RefEncode for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.Source§const ENCODING_REF: Encoding = <MPSCNNBinaryConvolutionNode as ::objc2::RefEncode>::ENCODING_REF
const ENCODING_REF: Encoding = <MPSCNNBinaryConvolutionNode as ::objc2::RefEncode>::ENCODING_REF
impl DowncastTarget for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.impl Eq for MPSCNNBinaryFullyConnectedNode
MPSNeuralNetwork only.