# Trait extendr_api::prelude::ScalarOperand

source · `pub trait ScalarOperand: 'static + Clone { }`

## Expand description

Elements that can be used as direct operands in arithmetic with arrays.

For example, `f64`

is a `ScalarOperand`

which means that for an array `a`

,
arithmetic like `a + 1.0`

, and, `a * 2.`

, and `a += 3.`

are allowed.

In the description below, let `A`

be an array or array view,
let `B`

be an array with owned data,
and let `C`

be an array with mutable data.

`ScalarOperand`

determines for which scalars `K`

operations `&A @ K`

, and `B @ K`

,
and `C @= K`

are defined, as * right hand side operands*, for applicable
arithmetic operators (denoted

`@`

).* Left hand side* scalar operands are not related to this trait
(they need one

`impl`

per concrete scalar type); but they are still
implemented for the same types, allowing operations
`K @ &A`

, and `K @ B`

for primitive numeric types `K`

.This trait * does not* limit which elements can be stored in an array in general.
Non-

`ScalarOperand`

types can still participate in arithmetic as array elements in
in array-array operations.## Object Safety§

**not**object safe.