Struct stm_core::TVar [] [src]

pub struct TVar<T> { /* fields omitted */ }

A variable that can be used in a STM-Block

Methods

impl<T> TVar<T> where
    T: Any + Sync + Send + Clone
[src]

[src]

Create a new TVar.

[src]

read_atomic reads a value atomically, without starting a transaction.

It is semantically equivalent to


let var = TVar::new(0);
atomically(|trans| var.read(trans));

but more efficient.

read_atomic returns a clone of the value.

[src]

Read a value atomically but return a reference.

This is mostly used internally, but can be useful in some cases, because read_atomic clones the inner value, which may be expensive.

[src]

The normal way to access a var.

It is equivalent to transaction.read(&var), but more convenient.

[src]

The normal way to write a var.

It is equivalent to transaction.write(&var, value), but more convenient.

[src]

Modify the content of a TVar with the function f.



let var = TVar::new(21);
atomically(|trans| 
    var.modify(trans, |x| x*2)
);

assert_eq!(var.read_atomic(), 42);

[src]

Replaces the value of a TVar with a new one, returning the old one.


let var = TVar::new(0);
let x = atomically(|trans| 
    var.replace(trans, 42)
);

assert_eq!(x, 0);
assert_eq!(var.read_atomic(), 42);

[src]

Check if two TVars refer to the same position.

[src]

Access the control block of the var.

Internal use only!

Trait Implementations

impl<T: Clone> Clone for TVar<T>
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl<T> Debug for TVar<T> where
    T: Any + Sync + Send + Clone,
    T: Debug
[src]

Debug output a struct.

Note that this function does not print the state atomically. If another thread modifies the datastructure at the same time, it may print an inconsistent state. If you need an accurate view, that reflects current thread-local state, you can implement it easily yourself with atomically.

Running atomically inside a running transaction panics. Therefore fmt uses prints the state.

[src]

Formats the value using the given formatter. Read more

Auto Trait Implementations

impl<T> Send for TVar<T> where
    T: Send

impl<T> Sync for TVar<T> where
    T: Sync