module Concurrent::ImmutableStruct

A thread-safe, immutable variation of Ruby's standard `Struct`.

@see ruby-doc.org/core/Struct.html Ruby standard library `Struct`

Constants

FACTORY

Public Class Methods

included(base) click to toggle source
# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 12
def self.included(base)
  base.safe_initialization!
end

Private Class Methods

new(*args, &block) click to toggle source

@!macro struct_new

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 82
def self.new(*args, &block)
  clazz_name = nil
  if args.length == 0
    raise ArgumentError.new('wrong number of arguments (0 for 1+)')
  elsif args.length > 0 && args.first.is_a?(String)
    clazz_name = args.shift
  end
  FACTORY.define_struct(clazz_name, args, &block)
end

Public Instance Methods

==(other) click to toggle source

@!macro struct_equality

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 51
def ==(other)
  ns_equality(other)
end
[](member) click to toggle source

@!macro struct_get

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 46
def [](member)
  ns_get(member)
end
each(&block) click to toggle source

@!macro struct_each

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 56
def each(&block)
  return enum_for(:each) unless block_given?
  ns_each(&block)
end
each_pair(&block) click to toggle source

@!macro struct_each_pair

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 62
def each_pair(&block)
  return enum_for(:each_pair) unless block_given?
  ns_each_pair(&block)
end
inspect() click to toggle source

@!macro struct_inspect

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 29
def inspect
  ns_inspect
end
Also aliased as: to_s
merge(other, &block) click to toggle source

@!macro struct_merge

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 36
def merge(other, &block)
  ns_merge(other, &block)
end
select(&block) click to toggle source

@!macro struct_select

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 68
def select(&block)
  return enum_for(:select) unless block_given?
  ns_select(&block)
end
to_a()
Alias for: values
to_h() click to toggle source

@!macro struct_to_h

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 41
def to_h
  ns_to_h
end
to_s()
Alias for: inspect
values() click to toggle source

@!macro struct_values

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 17
def values
  ns_values
end
Also aliased as: to_a
values_at(*indexes) click to toggle source

@!macro struct_values_at

# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 24
def values_at(*indexes)
  ns_values_at(indexes)
end

Private Instance Methods

initialize_copy(original) click to toggle source

@!visibility private

Calls superclass method
# File lib/concurrent-ruby/concurrent/immutable_struct.rb, line 76
def initialize_copy(original)
  super(original)
  ns_initialize_copy
end