MathCell in ndarray - Rust

pub struct MathCell<T>(/* private fields */);
Expand description

A transparent wrapper of Cell<T> which is identical in every way, except it will implement arithmetic operators as well.

The purpose of MathCell is to be used from .cell_view(). The MathCell derefs to Cell, so all the cell’s methods are available.

1.0.0 · Source

Sets the contained value.

§Examples
use std::cell::Cell;

let c = Cell::new(5);

c.set(10);
1.17.0 · Source

Swaps the values of two Cells.

The difference with std::mem::swap is that this function doesn’t require a &mut reference.

§Panics

This function will panic if self and other are different Cells that partially overlap. (Using just standard library methods, it is impossible to create such partially overlapping Cells. However, unsafe code is allowed to e.g. create two &Cell<[i32; 2]> that partially overlap.)

§Examples
use std::cell::Cell;

let c1 = Cell::new(5i32);
let c2 = Cell::new(10i32);
c1.swap(&c2);
assert_eq!(10, c1.get());
assert_eq!(5, c2.get());
1.17.0 · Source

Replaces the contained value with val, and returns the old contained value.

§Examples
use std::cell::Cell;

let cell = Cell::new(5);
assert_eq!(cell.get(), 5);
assert_eq!(cell.replace(10), 5);
assert_eq!(cell.get(), 10);
1.0.0 · Source

Returns a copy of the contained value.

§Examples
use std::cell::Cell;

let c = Cell::new(5);

let five = c.get();
1.88.0 · Source

Updates the contained value using a function.

§Examples
use std::cell::Cell;

let c = Cell::new(5);
c.update(|x| x + 1);
assert_eq!(c.get(), 6);
1.12.0 · Source

Returns a raw pointer to the underlying data in this cell.

§Examples
use std::cell::Cell;

let c = Cell::new(5);

let ptr = c.as_ptr();
1.11.0 · Source

Returns a mutable reference to the underlying data.

This call borrows Cell mutably (at compile-time) which guarantees that we possess the only reference.

However be cautious: this method expects self to be mutable, which is generally not the case when using a Cell. If you require interior mutability by reference, consider using RefCell which provides run-time checked mutable borrows through its borrow_mut method.

§Examples
use std::cell::Cell;

let mut c = Cell::new(5);
*c.get_mut() += 1;

assert_eq!(c.get(), 6);
1.17.0 · Source

Takes the value of the cell, leaving Default::default() in its place.

§Examples
use std::cell::Cell;

let c = Cell::new(5);
let five = c.take();

assert_eq!(five, 5);
assert_eq!(c.into_inner(), 0);
Source

🔬This is a nightly-only experimental API. (cell_get_cloned)

Get a clone of the Cell that contains a copy of the original value.

This allows a cheaply Clone-able type like an Rc to be stored in a Cell, exposing the cheaper clone() method.

§Examples
#![feature(cell_get_cloned)]

use core::cell::Cell;
use std::rc::Rc;

let rc = Rc::new(1usize);
let c1 = Cell::new(rc);
let c2 = c1.get_cloned();
assert_eq!(*c2.into_inner(), 1);
Source§

Assignable element, simply self.set(input).

Source§

Assign the value input to the element that self represents.

Source§
Source§
Source§
Source§
Source§

The resulting type after dereferencing.

Source§

Dereferences the value.

Source§
Source§

Mutably dereferences the value.

Source§
Source§
Source§

Tests for self and other values to be equal, and is used by ==.

1.0.0 · Source§

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Source§
Source§

This method returns an ordering between self and other values if one exists. Read more

Source§

Tests less than (for self and other) and is used by the < operator. Read more

Source§

Tests less than or equal to (for self and other) and is used by the <= operator. Read more

Source§

Tests greater than (for self and other) and is used by the > operator. Read more

Source§

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Source§