Module: Farce::Strict

Defined in:
lib/farce/strict.rb,
lib/farce/strict/map.rb,
lib/farce/strict/set.rb,
lib/farce/strict/atom.rb,
lib/farce/strict/flag.rb,
lib/farce/strict/lazy.rb,
lib/farce/strict/port.rb,
lib/farce/strict/lease.rb,
lib/farce/strict/queue.rb,
lib/farce/strict/vector.rb,
lib/farce/strict/counter.rb,
lib/farce/strict/lfu_map.rb,
lib/farce/strict/lru_map.rb,
lib/farce/strict/lazy_ref.rb,
lib/farce/strict/molecule.rb,
lib/farce/strict/tree_map.rb,
lib/farce/strict/weak_map.rb,
lib/farce/strict/weak_set.rb,
lib/farce/strict/exchanger.rb,
lib/farce/strict/lease_map.rb,
lib/farce/strict/weak_atom.rb,
lib/farce/strict/lease_pool.rb,
lib/farce/strict/sorted_set.rb,
lib/farce/strict/timer_queue.rb,
lib/farce/strict/weak_key_map.rb,
lib/farce/strict/priority_queue.rb,
lib/farce/strict/weak_value_map.rb

Overview

Shareable containers that store shareable values directly.

Defined Under Namespace

Classes: Atom, Exchanger, LFUMap, LRUMap, Lazy, LazyRef, Lease, LeaseMap, LeasePool, Map, Molecule, Port, PriorityQueue, Queue, Set, SortedSet, TimerQueue, TreeMap, Vector, WeakAtom, WeakKeyMap, WeakMap, WeakSet, WeakValueMap

Constant Summary collapse

Flag =

Alias for Flag so Farce::Strict can be more easily used as a namespace.

Farce::Flag
Counter =

Alias for Counter so Farce::Strict can be more easily used as a namespace.

Farce::Counter

Class Method Summary collapse

Class Method Details

.enfarce(object, freeze: nil) {|object| ... } ⇒ BasicObject

Converts vanilla Ruby objects into their Farce::Strict equivalents.

Examples:

Farce::Strict.enfarce({ foo: ["bar"] }) { Ractor.make_shareable(it) }
# =>  #<Farce::Strict::Map {foo: #<Farce::Strict::Vector ["bar"]>}>

Parameters:

  • object (BasicObject) —

    The root object to convert

  • freeze (Boolean, nil) (defaults to: nil) —

    Whether to freeze the converted objects. If set to nil (default), the freezing behavior will depend on the original object's frozen state.

Yields:

  • (object) —

    Optional block, called with any object that doesn't have a specific conversion defined.

Yield Parameters:

  • object (BasicObject) —

    the object to convert

Yield Returns:

  • (BasicObject) —

    the converted object

Returns:

  • (BasicObject) —

    the converted object

See Also:



26
# File 'lib/farce/strict.rb', line 26

def self.enfarce(object, **, &) = Internal::Converter.new(self, **, &).convert(object)