Product in std::iter - Rust
Description: Trait to represent types that can be created by multiplying elements of an iterator.

## Product

# Trait Product

1.12.0 · Source

    pub trait Product<A = Self>: Sized {
        // Required method
        fn product<I>(iter: I) -> Self
           where I: Iterator<Item = A>;
    }

Expand description

Trait to represent types that can be created by multiplying elements of an iterator.

This trait is used to implement `Iterator::product()`. Types which implement this trait can be generated by using the `product()` method on an iterator. Like `FromIterator`, this trait should rarely be called directly.

## Required Methods§

1.12.0 · Source

#### fn product<I>(iter: I) -> Self
where I: Iterator<Item = A>,

Takes an iterator and generates `Self` from the elements by multiplying the items.

## Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

## Implementors§

1.12.0 · Source§

### impl Product for f16

1.12.0 · Source§

### impl Product for f32

1.12.0 · Source§

### impl Product for f64

1.12.0 · Source§

### impl Product for f128

1.12.0 · Source§

### impl Product for i8

1.12.0 · Source§

### impl Product for i16

1.12.0 · Source§

### impl Product for i32

1.12.0 · Source§

### impl Product for i64

1.12.0 · Source§

### impl Product for i128

1.12.0 · Source§

### impl Product for isize

1.12.0 · Source§

### impl Product for u8

1.12.0 · Source§

### impl Product for u16

1.12.0 · Source§

### impl Product for u32

1.12.0 · Source§

### impl Product for u64

1.12.0 · Source§

### impl Product for u128

1.12.0 · Source§

### impl Product for usize

1.91.0 · Source§

### impl Product for Saturating<u8>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.91.0 · Source§

### impl Product for Saturating<u16>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.91.0 · Source§

### impl Product for Saturating<u32>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.91.0 · Source§

### impl Product for Saturating<u64>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.91.0 · Source§

### impl Product for Saturating<u128>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.91.0 · Source§

### impl Product for Saturating<usize>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.14.0 · Source§

### impl Product for Wrapping<i8>

1.14.0 · Source§

### impl Product for Wrapping<i16>

1.14.0 · Source§

### impl Product for Wrapping<i32>

1.14.0 · Source§

### impl Product for Wrapping<i64>

1.14.0 · Source§

### impl Product for Wrapping<i128>

1.14.0 · Source§

### impl Product for Wrapping<isize>

1.14.0 · Source§

### impl Product for Wrapping<u8>

1.14.0 · Source§

### impl Product for Wrapping<u16>

1.14.0 · Source§

### impl Product for Wrapping<u32>

1.14.0 · Source§

### impl Product for Wrapping<u64>

1.14.0 · Source§

### impl Product for Wrapping<u128>

1.14.0 · Source§

### impl Product for Wrapping<usize>

1.12.0 · Source§

### impl<'a> Product<&'a f16> for f16

1.12.0 · Source§

### impl<'a> Product<&'a f32> for f32

1.12.0 · Source§

### impl<'a> Product<&'a f64> for f64

1.12.0 · Source§

### impl<'a> Product<&'a f128> for f128

1.12.0 · Source§

### impl<'a> Product<&'a i8> for i8

1.12.0 · Source§

### impl<'a> Product<&'a i16> for i16

1.12.0 · Source§

### impl<'a> Product<&'a i32> for i32

1.12.0 · Source§

### impl<'a> Product<&'a i64> for i64

1.12.0 · Source§

### impl<'a> Product<&'a i128> for i128

1.12.0 · Source§

### impl<'a> Product<&'a isize> for isize

1.12.0 · Source§

### impl<'a> Product<&'a u8> for u8

1.12.0 · Source§

### impl<'a> Product<&'a u16> for u16

1.12.0 · Source§

### impl<'a> Product<&'a u32> for u32

1.12.0 · Source§

### impl<'a> Product<&'a u64> for u64

1.12.0 · Source§

### impl<'a> Product<&'a u128> for u128

1.12.0 · Source§

### impl<'a> Product<&'a usize> for usize

1.91.0 · Source§

### impl<'a> Product<&'a Saturating<u8>> for Saturating<u8>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.91.0 · Source§

### impl<'a> Product<&'a Saturating<u16>> for Saturating<u16>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.91.0 · Source§

### impl<'a> Product<&'a Saturating<u32>> for Saturating<u32>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.91.0 · Source§

### impl<'a> Product<&'a Saturating<u64>> for Saturating<u64>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.91.0 · Source§

### impl<'a> Product<&'a Saturating<u128>> for Saturating<u128>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.91.0 · Source§

### impl<'a> Product<&'a Saturating<usize>> for Saturating<usize>

The short-circuiting behavior of this implementation is unspecified. If you care about short-circuiting, use `Iterator::fold` directly.

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<i8>> for Wrapping<i8>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<i16>> for Wrapping<i16>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<i32>> for Wrapping<i32>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<i64>> for Wrapping<i64>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<i128>> for Wrapping<i128>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<isize>> for Wrapping<isize>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<u8>> for Wrapping<u8>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<u16>> for Wrapping<u16>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<u32>> for Wrapping<u32>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<u64>> for Wrapping<u64>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<u128>> for Wrapping<u128>

1.14.0 · Source§

### impl<'a> Product<&'a Wrapping<usize>> for Wrapping<usize>

Source§

### impl<'a, const N: usize> Product<&'a Simd<f32, N>> for Simd<f32, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<f64, N>> for Simd<f64, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<i8, N>> for Simd<i8, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<i16, N>> for Simd<i16, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<i32, N>> for Simd<i32, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<i64, N>> for Simd<i64, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<isize, N>> for Simd<isize, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<u8, N>> for Simd<u8, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<u16, N>> for Simd<u16, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<u32, N>> for Simd<u32, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<u64, N>> for Simd<u64, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<'a, const N: usize> Product<&'a Simd<usize, N>> for Simd<usize, N>
where LaneCount<N>: SupportedLaneCount,

1.37.0 · Source§

### impl<T, U> Product<Option<U>> for Option<T>
where T: Product<U>,

1.16.0 · Source§

### impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where T: Product<U>,

Source§

### impl<const N: usize> Product for Simd<f32, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<f64, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<i8, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<i16, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<i32, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<i64, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<isize, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<u8, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<u16, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<u32, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<u64, N>
where LaneCount<N>: SupportedLaneCount,

Source§

### impl<const N: usize> Product for Simd<usize, N>
where LaneCount<N>: SupportedLaneCount,