Class: Rust::Types::PrimitiveInteger

Inherits:
Type
  • Object
show all
Defined in:
lib/rust_require/types/primitives.rb

Direct Known Subclasses

Isize, Usize

Instance Attribute Summary

Attributes inherited from Type

#rust_type

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Type

#c_input_conversion, #c_input_type, #c_output_conversion, #c_output_type, #c_type, #ffi_input_type, #ffi_output_type, #ffi_type, #ruby_output_conversion, rust_type

Constructor Details

#initializePrimitiveInteger

Returns a new instance of PrimitiveInteger.



20
21
22
23
24
# File 'lib/rust_require/types/primitives.rb', line 20

def initialize
    @bits = self.class.bits
    @signed = self.class.signed
    super
end

Class Method Details

.bitsObject



26
# File 'lib/rust_require/types/primitives.rb', line 26

def self.bits; @bits; end

.signedObject



27
# File 'lib/rust_require/types/primitives.rb', line 27

def self.signed; @signed; end

Instance Method Details

#ruby_input_conversion(num) ⇒ Object



44
45
46
47
# File 'lib/rust_require/types/primitives.rb', line 44

def ruby_input_conversion(num)
  type_check(num)
  num
end

#rust_type_regexObject



29
30
31
# File 'lib/rust_require/types/primitives.rb', line 29

def rust_type_regex
  @rust_type ? super : /.^/ # will never match
end

#type_check(num) ⇒ Object

Raises:

  • (ArgumentError)


33
34
35
36
37
38
39
40
41
42
# File 'lib/rust_require/types/primitives.rb', line 33

def type_check(num)
  bounds = if @signed
    (-2**(@bits-1)+1)..(2**(@bits-1)-1)
  else
    0..(2**@bits-1)
  end

  raise ArgumentError, "#{num.inspect} is no integer." unless [Fixnum, Bignum].include? num.class
  raise ArgumentError, "#{num} is not in the expected input range #{bounds}" unless bounds.include? num
end