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_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
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