Add INT2FIX
, INT2NUM
, FIX2LONG
and NUM2LONG
#406
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces several new integer conversion functions to the Stable API, enhancing the capabilities of the
rb-sys
crate for handling Ruby integer types.Changes
Added the following functions to the
StableApiDefinition
trait:int2fix
: Converts a C int to a Ruby Fixnumint2num
: Converts a C int to a Ruby Integer (Fixnum or Bignum)fix2long
: Converts a Ruby Fixnum to a C longnum2long
: Converts a Ruby Integer (Fixnum or Bignum) to a C longImplemented these functions in both the pure Rust and compiled C versions of the Stable API.
Added corresponding macros in
macros.rs
:INT2FIX
INT2NUM
FIX2LONG
NUM2LONG
Impact
These additions will allow Rust developers using
rb-sys
to more easily work with Ruby's integer types, providing a safer and more idiomatic way to convert between Rust and Ruby number representations.Testing
The PR includes extensive parity tests to ensure that the new functions behave identically to their Ruby counterparts across a wide range of input values, including edge cases like maximum and minimum Fixnum values.