code_ownership 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +8 -14
  3. data/ext/cargo-vendor/magnus-0.8.2/.cargo-checksum.json +1 -0
  4. data/ext/cargo-vendor/magnus-0.8.2/.cargo_vcs_info.json +6 -0
  5. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/CHANGELOG.md +66 -1
  6. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/Cargo.lock +243 -9
  7. data/ext/cargo-vendor/magnus-0.8.2/Cargo.toml +277 -0
  8. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/Cargo.toml.orig +11 -6
  9. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/README.md +75 -23
  10. data/ext/cargo-vendor/magnus-0.8.2/build.rs +15 -0
  11. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/complete_object/test/temperature_test.rb +4 -4
  12. data/ext/cargo-vendor/magnus-0.8.2/examples/inheritance.rs +66 -0
  13. data/ext/cargo-vendor/magnus-0.8.2/examples/mut_point.rs +116 -0
  14. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/api.rs +4 -3
  15. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/class.rs +9 -7
  16. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/encoding.rs +5 -5
  17. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/error.rs +12 -3
  18. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/fiber.rs +5 -5
  19. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/gc.rs +3 -3
  20. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/integer.rs +134 -0
  21. data/ext/cargo-vendor/magnus-0.8.2/src/io.rs +230 -0
  22. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/lib.rs +53 -54
  23. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/macros.rs +2 -2
  24. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/method.rs +14 -100
  25. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/module.rs +1 -1
  26. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/mutex.rs +1 -1
  27. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_array.rs +2 -2
  28. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_bignum.rs +100 -3
  29. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_hash.rs +63 -1
  30. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_string.rs +31 -231
  31. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_typed_data.rs +6 -9
  32. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/rb_sys.rs +4 -4
  33. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/scan_args.rs +3 -3
  34. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/thread.rs +16 -10
  35. data/ext/cargo-vendor/magnus-0.8.2/src/time.rs +462 -0
  36. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/try_convert.rs +64 -2
  37. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/typed_data.rs +113 -11
  38. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/value/flonum.rs +1 -1
  39. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/value.rs +83 -6
  40. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/test +1 -1
  41. data/ext/cargo-vendor/magnus-0.8.2/tests/hash.rs +44 -0
  42. data/ext/cargo-vendor/magnus-0.8.2/tests/io.rs +62 -0
  43. data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/return_iter.rs +1 -1
  44. data/ext/cargo-vendor/magnus-0.8.2/tests/string.rs +23 -0
  45. data/ext/cargo-vendor/magnus-0.8.2/tests/time.rs +71 -0
  46. data/ext/cargo-vendor/magnus-macros-0.8.0/.cargo-checksum.json +1 -0
  47. data/ext/cargo-vendor/magnus-macros-0.8.0/.cargo_vcs_info.json +6 -0
  48. data/ext/cargo-vendor/magnus-macros-0.8.0/Cargo.lock +47 -0
  49. data/ext/cargo-vendor/{magnus-macros-0.6.0 → magnus-macros-0.8.0}/Cargo.toml +10 -1
  50. data/ext/cargo-vendor/{magnus-macros-0.6.0 → magnus-macros-0.8.0}/Cargo.toml.orig +1 -1
  51. data/ext/cargo-vendor/magnus-macros-0.8.0/src/lib.rs +545 -0
  52. data/ext/cargo-vendor/{magnus-macros-0.6.0 → magnus-macros-0.8.0}/src/typed_data.rs +3 -3
  53. data/ext/cargo-vendor/{magnus-macros-0.6.0 → magnus-macros-0.8.0}/src/util.rs +1 -1
  54. data/ext/cargo-vendor/serde_magnus-0.10.0/.cargo-checksum.json +1 -0
  55. data/ext/cargo-vendor/serde_magnus-0.10.0/.cargo_vcs_info.json +6 -0
  56. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/Cargo.lock +77 -75
  57. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/Cargo.toml +3 -3
  58. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/Cargo.toml.orig +7 -4
  59. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/README.md +8 -5
  60. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/de/array_deserializer.rs +12 -8
  61. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/de/array_enumerator.rs +12 -7
  62. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/de/deserializer.rs +21 -18
  63. data/ext/cargo-vendor/serde_magnus-0.10.0/src/de/enum_deserializer.rs +35 -0
  64. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/de/hash_deserializer.rs +18 -11
  65. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/de/mod.rs +76 -76
  66. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/de/variant_deserializer.rs +10 -9
  67. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/error.rs +10 -4
  68. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/lib.rs +6 -5
  69. data/ext/cargo-vendor/serde_magnus-0.10.0/src/ser/enums.rs +11 -0
  70. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/ser/map_serializer.rs +11 -12
  71. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/ser/mod.rs +53 -50
  72. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/ser/seq_serializer.rs +11 -10
  73. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/src/ser/serializer.rs +50 -34
  74. data/ext/cargo-vendor/serde_magnus-0.10.0/src/ser/struct_serializer.rs +40 -0
  75. data/ext/cargo-vendor/serde_magnus-0.10.0/src/ser/struct_variant_serializer.rs +45 -0
  76. data/ext/cargo-vendor/serde_magnus-0.10.0/src/ser/tuple_variant_serializer.rs +38 -0
  77. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/deserializing_arrays.rs +3 -3
  78. data/ext/cargo-vendor/serde_magnus-0.10.0/tests/deserializing_booleans.rs +15 -0
  79. data/ext/cargo-vendor/serde_magnus-0.10.0/tests/deserializing_enums.rs +39 -0
  80. data/ext/cargo-vendor/serde_magnus-0.10.0/tests/deserializing_floats.rs +12 -0
  81. data/ext/cargo-vendor/serde_magnus-0.10.0/tests/deserializing_integers.rs +18 -0
  82. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/deserializing_maps.rs +3 -2
  83. data/ext/cargo-vendor/serde_magnus-0.10.0/tests/deserializing_options.rs +15 -0
  84. data/ext/cargo-vendor/serde_magnus-0.10.0/tests/deserializing_results.rs +17 -0
  85. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/deserializing_strings.rs +7 -7
  86. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/deserializing_structs.rs +9 -9
  87. data/ext/cargo-vendor/serde_magnus-0.10.0/tests/deserializing_tuples.rs +27 -0
  88. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/deserializing_vecs.rs +3 -3
  89. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/serializing_arrays.rs +3 -3
  90. data/ext/cargo-vendor/serde_magnus-0.10.0/tests/serializing_booleans.rs +15 -0
  91. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/serializing_enums.rs +9 -7
  92. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/serializing_floats.rs +2 -2
  93. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/serializing_integers.rs +4 -4
  94. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/serializing_maps.rs +3 -2
  95. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/serializing_options.rs +3 -3
  96. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/serializing_results.rs +5 -4
  97. data/ext/cargo-vendor/serde_magnus-0.10.0/tests/serializing_strings.rs +30 -0
  98. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/serializing_structs.rs +15 -7
  99. data/ext/cargo-vendor/serde_magnus-0.10.0/tests/serializing_tuples.rs +35 -0
  100. data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/tests/serializing_vecs.rs +3 -3
  101. data/ext/code_ownership/Cargo.toml +2 -2
  102. data/ext/code_ownership/extconf.rb +2 -1
  103. data/ext/code_ownership/src/lib.rs +16 -16
  104. data/lib/code_ownership/cli.rb +1 -0
  105. data/lib/code_ownership/private/file_path_finder.rb +3 -7
  106. data/lib/code_ownership/private/file_path_team_cache.rb +5 -9
  107. data/lib/code_ownership/private/for_file_output_builder.rb +0 -1
  108. data/lib/code_ownership/private/team_finder.rb +8 -14
  109. data/lib/code_ownership/version.rb +2 -2
  110. data/lib/code_ownership.rb +12 -17
  111. metadata +182 -186
  112. data/ext/cargo-vendor/magnus-0.7.1/.cargo-checksum.json +0 -1
  113. data/ext/cargo-vendor/magnus-0.7.1/.cargo_vcs_info.json +0 -6
  114. data/ext/cargo-vendor/magnus-0.7.1/Cargo.toml +0 -95
  115. data/ext/cargo-vendor/magnus-0.7.1/build.rs +0 -5
  116. data/ext/cargo-vendor/magnus-0.7.1/examples/mut_point.rs +0 -60
  117. data/ext/cargo-vendor/magnus-0.7.1/src/time.rs +0 -190
  118. data/ext/cargo-vendor/magnus-0.7.1/tests/hash.rs +0 -25
  119. data/ext/cargo-vendor/magnus-0.7.1/tests/string.rs +0 -13
  120. data/ext/cargo-vendor/magnus-macros-0.6.0/.cargo-checksum.json +0 -1
  121. data/ext/cargo-vendor/magnus-macros-0.6.0/.cargo_vcs_info.json +0 -6
  122. data/ext/cargo-vendor/magnus-macros-0.6.0/src/lib.rs +0 -401
  123. data/ext/cargo-vendor/rb-sys-env-0.1.2/.cargo-checksum.json +0 -1
  124. data/ext/cargo-vendor/rb-sys-env-0.1.2/.cargo_vcs_info.json +0 -6
  125. data/ext/cargo-vendor/rb-sys-env-0.1.2/Cargo.toml +0 -25
  126. data/ext/cargo-vendor/rb-sys-env-0.1.2/Cargo.toml.orig +0 -14
  127. data/ext/cargo-vendor/rb-sys-env-0.1.2/LICENSE-APACHE +0 -190
  128. data/ext/cargo-vendor/rb-sys-env-0.1.2/LICENSE-MIT +0 -21
  129. data/ext/cargo-vendor/rb-sys-env-0.1.2/readme.md +0 -119
  130. data/ext/cargo-vendor/rb-sys-env-0.1.2/src/defines.rs +0 -37
  131. data/ext/cargo-vendor/rb-sys-env-0.1.2/src/lib.rs +0 -180
  132. data/ext/cargo-vendor/rb-sys-env-0.1.2/src/rb_env.rs +0 -110
  133. data/ext/cargo-vendor/rb-sys-env-0.1.2/src/ruby_version.rs +0 -163
  134. data/ext/cargo-vendor/rb-sys-env-0.1.2/src/utils.rs +0 -6
  135. data/ext/cargo-vendor/serde_magnus-0.9.0/.cargo-checksum.json +0 -1
  136. data/ext/cargo-vendor/serde_magnus-0.9.0/.cargo_vcs_info.json +0 -6
  137. data/ext/cargo-vendor/serde_magnus-0.9.0/src/de/enum_deserializer.rs +0 -30
  138. data/ext/cargo-vendor/serde_magnus-0.9.0/src/ser/enums.rs +0 -11
  139. data/ext/cargo-vendor/serde_magnus-0.9.0/src/ser/struct_serializer.rs +0 -36
  140. data/ext/cargo-vendor/serde_magnus-0.9.0/src/ser/struct_variant_serializer.rs +0 -37
  141. data/ext/cargo-vendor/serde_magnus-0.9.0/src/ser/tuple_variant_serializer.rs +0 -33
  142. data/ext/cargo-vendor/serde_magnus-0.9.0/tests/deserializing_booleans.rs +0 -18
  143. data/ext/cargo-vendor/serde_magnus-0.9.0/tests/deserializing_enums.rs +0 -39
  144. data/ext/cargo-vendor/serde_magnus-0.9.0/tests/deserializing_floats.rs +0 -12
  145. data/ext/cargo-vendor/serde_magnus-0.9.0/tests/deserializing_integers.rs +0 -18
  146. data/ext/cargo-vendor/serde_magnus-0.9.0/tests/deserializing_options.rs +0 -15
  147. data/ext/cargo-vendor/serde_magnus-0.9.0/tests/deserializing_results.rs +0 -17
  148. data/ext/cargo-vendor/serde_magnus-0.9.0/tests/deserializing_tuples.rs +0 -31
  149. data/ext/cargo-vendor/serde_magnus-0.9.0/tests/serializing_booleans.rs +0 -15
  150. data/ext/cargo-vendor/serde_magnus-0.9.0/tests/serializing_strings.rs +0 -30
  151. data/ext/cargo-vendor/serde_magnus-0.9.0/tests/serializing_tuples.rs +0 -27
  152. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/.cargo/config.toml +0 -0
  153. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/Gemfile +0 -0
  154. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/LICENSE +0 -0
  155. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/complete_object/Rakefile +0 -0
  156. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/complete_object/lib/temperature.rb +0 -0
  157. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/custom_exception_ruby/Rakefile +0 -0
  158. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/custom_exception_ruby/lib/ahriman/error.rb +0 -0
  159. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/custom_exception_ruby/lib/ahriman.rb +0 -0
  160. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/custom_exception_ruby/test/error_test.rb +0 -0
  161. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/custom_exception_rust/Rakefile +0 -0
  162. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/custom_exception_rust/lib/ahriman.rb +0 -0
  163. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/custom_exception_rust/test/error_test.rb +0 -0
  164. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/fibonacci.rs +0 -0
  165. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/hello_world.rs +0 -0
  166. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/point.rs +0 -0
  167. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/rust_blank/Rakefile +0 -0
  168. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/rust_blank/lib/rust_blank.rb +0 -0
  169. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/rust_blank/test/bench.rb +0 -0
  170. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/examples/rust_blank/test/blank_test.rb +0 -0
  171. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/block.rs +0 -0
  172. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/embed.rs +0 -0
  173. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/enumerator.rs +0 -0
  174. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/exception.rs +0 -0
  175. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/float.rs +0 -0
  176. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/into_value.rs +0 -0
  177. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/numeric.rs +0 -0
  178. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/object.rs +0 -0
  179. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/process.rs +0 -0
  180. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_complex.rs +0 -0
  181. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_file.rs +0 -0
  182. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_float.rs +0 -0
  183. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_match.rs +0 -0
  184. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_object.rs +0 -0
  185. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_rational.rs +0 -0
  186. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_regexp.rs +0 -0
  187. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/r_struct.rs +0 -0
  188. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/range.rs +0 -0
  189. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/src/symbol.rs +0 -0
  190. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/allocate_before_init.rs +0 -0
  191. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/array_slice.rs +0 -0
  192. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/block_call.rs +0 -0
  193. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/bytes.rs +0 -0
  194. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/call_proc.rs +0 -0
  195. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/classname.rs +0 -0
  196. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/clone.rs +0 -0
  197. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/codepoints.rs +0 -0
  198. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/debug_exception.rs +0 -0
  199. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/encoding_capable.rs +0 -0
  200. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/enumerator.rs +0 -0
  201. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/enumeratorize.rs +0 -0
  202. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/float_convert_from_value.rs +0 -0
  203. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/float_convert_to_value.rs +0 -0
  204. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/fmt.rs +0 -0
  205. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/freeze.rs +0 -0
  206. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/integer_convert_to_value.rs +0 -0
  207. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/integer_traits.rs +0 -0
  208. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/ivar.rs +0 -0
  209. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/lazy_id.rs +0 -0
  210. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/make_proc.rs +0 -0
  211. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/proc_new.rs +0 -0
  212. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/range.rs +0 -0
  213. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/return_custom_error.rs +0 -0
  214. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/scan_args.rs +0 -0
  215. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/str.rs +0 -0
  216. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/struct.rs +0 -0
  217. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/symbol.rs +0 -0
  218. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/try_convert_array.rs +0 -0
  219. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/tuple_to_array.rs +0 -0
  220. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/typed_data.rs +0 -0
  221. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/typed_data_obj.rs +0 -0
  222. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/typed_data_subclass.rs +0 -0
  223. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/typed_data_subclass_from_ruby.rs +0 -0
  224. /data/ext/cargo-vendor/{magnus-0.7.1 → magnus-0.8.2}/tests/yield.rs +0 -0
  225. /data/ext/cargo-vendor/{magnus-macros-0.6.0 → magnus-macros-0.8.0}/LICENSE +0 -0
  226. /data/ext/cargo-vendor/{magnus-macros-0.6.0 → magnus-macros-0.8.0}/src/init.rs +0 -0
  227. /data/ext/cargo-vendor/{serde_magnus-0.9.0 → serde_magnus-0.10.0}/LICENSE +0 -0
@@ -0,0 +1,35 @@
1
+ use super::VariantDeserializer;
2
+ use crate::error::Error;
3
+ use magnus::{Ruby, Value};
4
+ use serde::de::{DeserializeSeed, EnumAccess, IntoDeserializer};
5
+
6
+ pub struct EnumDeserializer<'r> {
7
+ ruby: &'r Ruby,
8
+ variant: String,
9
+ value: Value,
10
+ }
11
+
12
+ impl<'r> EnumDeserializer<'r> {
13
+ pub fn new(ruby: &'r Ruby, variant: String, value: Value) -> EnumDeserializer<'r> {
14
+ EnumDeserializer {
15
+ ruby,
16
+ variant,
17
+ value,
18
+ }
19
+ }
20
+ }
21
+
22
+ impl<'r, 'i> EnumAccess<'i> for EnumDeserializer<'r> {
23
+ type Variant = VariantDeserializer<'r>;
24
+ type Error = Error;
25
+
26
+ fn variant_seed<Seed>(self, seed: Seed) -> Result<(Seed::Value, Self::Variant), Error>
27
+ where
28
+ Seed: DeserializeSeed<'i>,
29
+ {
30
+ let deserializer = VariantDeserializer::new(self.ruby, self.value);
31
+
32
+ seed.deserialize(self.variant.into_deserializer())
33
+ .map(|value| (value, deserializer))
34
+ }
35
+ }
@@ -1,24 +1,26 @@
1
1
  use super::{array_enumerator::ArrayEnumerator, Deserializer};
2
2
  use crate::error::Error;
3
- use magnus::{exception, value::ReprValue, RHash};
3
+ use magnus::{value::ReprValue, RHash, Ruby};
4
4
  use serde::de::{DeserializeSeed, MapAccess};
5
5
  use std::iter::Peekable;
6
6
 
7
- pub struct HashDeserializer {
7
+ pub struct HashDeserializer<'r> {
8
+ ruby: &'r Ruby,
8
9
  hash: RHash,
9
- keys: Peekable<ArrayEnumerator>,
10
+ keys: Peekable<ArrayEnumerator<'r>>,
10
11
  }
11
12
 
12
- impl HashDeserializer {
13
- pub fn new(hash: RHash) -> Result<HashDeserializer, Error> {
13
+ impl<'r> HashDeserializer<'r> {
14
+ pub fn new(ruby: &'r Ruby, hash: RHash) -> Result<HashDeserializer<'r>, Error> {
14
15
  Ok(HashDeserializer {
16
+ ruby,
15
17
  hash,
16
- keys: ArrayEnumerator::new(hash.funcall("keys", ())?).peekable(),
18
+ keys: ArrayEnumerator::new(ruby, hash.funcall("keys", ())?).peekable(),
17
19
  })
18
20
  }
19
21
  }
20
22
 
21
- impl<'i> MapAccess<'i> for HashDeserializer {
23
+ impl<'r, 'i> MapAccess<'i> for HashDeserializer<'r> {
22
24
  type Error = Error;
23
25
 
24
26
  fn next_key_seed<Seed>(&mut self, seed: Seed) -> Result<Option<Seed::Value>, Self::Error>
@@ -26,10 +28,12 @@ impl<'i> MapAccess<'i> for HashDeserializer {
26
28
  Seed: DeserializeSeed<'i>,
27
29
  {
28
30
  match self.keys.peek() {
29
- Some(&Ok(key)) => seed.deserialize(Deserializer::new(key)).map(Some),
31
+ Some(&Ok(key)) => seed
32
+ .deserialize(Deserializer::new(self.ruby, key))
33
+ .map(Some),
30
34
 
31
35
  Some(Err(error)) => Err(Error::new(
32
- exception::runtime_error(),
36
+ self.ruby.exception_runtime_error(),
33
37
  format!("encountered unexpected error: {}", error),
34
38
  )),
35
39
 
@@ -42,9 +46,12 @@ impl<'i> MapAccess<'i> for HashDeserializer {
42
46
  Seed: DeserializeSeed<'i>,
43
47
  {
44
48
  match self.keys.next() {
45
- Some(Ok(key)) => seed.deserialize(Deserializer::new(self.hash.aref(key)?)),
49
+ Some(Ok(key)) => seed.deserialize(Deserializer::new(self.ruby, self.hash.aref(key)?)),
46
50
  Some(Err(error)) => Err(error.into()),
47
- None => Err(Error::new(exception::index_error(), "index out of range")),
51
+ None => Err(Error::new(
52
+ self.ruby.exception_index_error(),
53
+ "index out of range",
54
+ )),
48
55
  }
49
56
  }
50
57
  }
@@ -13,7 +13,7 @@ use self::{
13
13
  hash_deserializer::HashDeserializer, variant_deserializer::VariantDeserializer,
14
14
  };
15
15
 
16
- use magnus::{Error, IntoValue};
16
+ use magnus::{Error, IntoValue, Ruby};
17
17
  use serde::Deserialize;
18
18
 
19
19
  /// Deserialize a Ruby [`Value`][`magnus::Value`] to Rust.
@@ -25,13 +25,13 @@ use serde::Deserialize;
25
25
  /// #### Unit type
26
26
  ///
27
27
  /// ```
28
- /// # let _cleanup = unsafe { magnus::embed::init() };
28
+ /// # let ruby = unsafe { magnus::embed::init() };
29
29
  /// #
30
30
  /// use magnus::{eval, Value};
31
31
  /// use serde_magnus::deserialize;
32
32
  ///
33
- /// let input: Value = eval!("nil")?;
34
- /// let output: () = deserialize(input)?;
33
+ /// let input: Value = eval!(&ruby, "nil")?;
34
+ /// let output: () = deserialize(&ruby, input)?;
35
35
  /// assert_eq!((), output);
36
36
  /// #
37
37
  /// # Ok::<(), magnus::Error>(())
@@ -43,10 +43,10 @@ use serde::Deserialize;
43
43
  /// # use magnus::{eval, Value};
44
44
  /// # use serde_magnus::deserialize;
45
45
  /// #
46
- /// # let _cleanup = unsafe { magnus::embed::init() };
46
+ /// # let ruby = unsafe { magnus::embed::init() };
47
47
  /// #
48
- /// let input: Value = eval!("true")?;
49
- /// let output: bool = deserialize(input)?;
48
+ /// let input: Value = eval!(&ruby, "true")?;
49
+ /// let output: bool = deserialize(&ruby, input)?;
50
50
  /// assert_eq!(true, output);
51
51
  /// #
52
52
  /// # Ok::<(), magnus::Error>(())
@@ -58,10 +58,10 @@ use serde::Deserialize;
58
58
  /// # use magnus::{eval, Value};
59
59
  /// # use serde_magnus::deserialize;
60
60
  /// #
61
- /// # let _cleanup = unsafe { magnus::embed::init() };
61
+ /// # let ruby = unsafe { magnus::embed::init() };
62
62
  /// #
63
- /// let input: Value = eval!("1234")?;
64
- /// let output: i64 = deserialize(input)?;
63
+ /// let input: Value = eval!(&ruby, "1234")?;
64
+ /// let output: i64 = deserialize(&ruby, input)?;
65
65
  /// assert_eq!(1234, output);
66
66
  /// #
67
67
  /// # Ok::<(), magnus::Error>(())
@@ -73,10 +73,10 @@ use serde::Deserialize;
73
73
  /// # use magnus::{eval, Value};
74
74
  /// # use serde_magnus::deserialize;
75
75
  /// #
76
- /// # let _cleanup = unsafe { magnus::embed::init() };
76
+ /// # let ruby = unsafe { magnus::embed::init() };
77
77
  /// #
78
- /// let input: Value = eval!("3.14")?;
79
- /// let output: f64 = deserialize(input)?;
78
+ /// let input: Value = eval!(&ruby, "3.14")?;
79
+ /// let output: f64 = deserialize(&ruby, input)?;
80
80
  /// assert_eq!(3.14, output);
81
81
  /// #
82
82
  /// # Ok::<(), magnus::Error>(())
@@ -88,10 +88,10 @@ use serde::Deserialize;
88
88
  /// # use magnus::{eval, Value};
89
89
  /// # use serde_magnus::deserialize;
90
90
  /// #
91
- /// # let _cleanup = unsafe { magnus::embed::init() };
91
+ /// # let ruby = unsafe { magnus::embed::init() };
92
92
  /// #
93
- /// let input: Value = eval!(r#""Hello, world!""#)?;
94
- /// let output: String = deserialize(input)?;
93
+ /// let input: Value = eval!(&ruby, r#""Hello, world!""#)?;
94
+ /// let output: String = deserialize(&ruby, input)?;
95
95
  /// assert_eq!("Hello, world!", output);
96
96
  /// #
97
97
  /// # Ok::<(), magnus::Error>(())
@@ -103,14 +103,14 @@ use serde::Deserialize;
103
103
  /// # use magnus::{eval, Value};
104
104
  /// # use serde_magnus::deserialize;
105
105
  /// #
106
- /// # let _cleanup = unsafe { magnus::embed::init() };
106
+ /// # let ruby = unsafe { magnus::embed::init() };
107
107
  /// #
108
- /// let input: Value = eval!("nil")?;
109
- /// let output: Option<i64> = deserialize(input)?;
108
+ /// let input: Value = eval!(&ruby, "nil")?;
109
+ /// let output: Option<i64> = deserialize(&ruby, input)?;
110
110
  /// assert_eq!(None, output);
111
111
  ///
112
- /// let input: Value = eval!("1234")?;
113
- /// let output: Option<i64> = deserialize(input)?;
112
+ /// let input: Value = eval!(&ruby, "1234")?;
113
+ /// let output: Option<i64> = deserialize(&ruby, input)?;
114
114
  /// assert_eq!(Some(1234), output);
115
115
  /// #
116
116
  /// # Ok::<(), magnus::Error>(())
@@ -122,14 +122,14 @@ use serde::Deserialize;
122
122
  /// # use magnus::{eval, Value};
123
123
  /// # use serde_magnus::deserialize;
124
124
  /// #
125
- /// # let _cleanup = unsafe { magnus::embed::init() };
125
+ /// # let ruby = unsafe { magnus::embed::init() };
126
126
  /// #
127
- /// let input: Value = eval!("{ 'Ok' => 1234 }")?;
128
- /// let output: Result<i64, String> = deserialize(input)?;
127
+ /// let input: Value = eval!(&ruby, "{ 'Ok' => 1234 }")?;
128
+ /// let output: Result<i64, String> = deserialize(&ruby, input)?;
129
129
  /// assert_eq!(Ok(1234), output);
130
130
  ///
131
- /// let input: Value = eval!("{ 'Err' => 'something went wrong' }")?;
132
- /// let output: Result<i64, String> = deserialize(input)?;
131
+ /// let input: Value = eval!(&ruby, "{ 'Err' => 'something went wrong' }")?;
132
+ /// let output: Result<i64, String> = deserialize(&ruby, input)?;
133
133
  /// assert_eq!(Err("something went wrong".into()), output);
134
134
  /// #
135
135
  /// # Ok::<(), magnus::Error>(())
@@ -143,15 +143,15 @@ use serde::Deserialize;
143
143
  /// # use magnus::{eval, Value};
144
144
  /// # use serde_magnus::deserialize;
145
145
  /// #
146
- /// # let _cleanup = unsafe { magnus::embed::init() };
146
+ /// # let ruby = unsafe { magnus::embed::init() };
147
147
  /// #
148
148
  /// use serde::Deserialize;
149
149
  ///
150
150
  /// #[derive(PartialEq, Debug, Deserialize)]
151
151
  /// struct Foo;
152
152
  ///
153
- /// let input: Value = eval!("nil")?;
154
- /// let output: Foo = deserialize(input)?;
153
+ /// let input: Value = eval!(&ruby, "nil")?;
154
+ /// let output: Foo = deserialize(&ruby, input)?;
155
155
  /// assert_eq!(Foo, output);
156
156
  /// #
157
157
  /// # Ok::<(), magnus::Error>(())
@@ -163,15 +163,15 @@ use serde::Deserialize;
163
163
  /// # use magnus::{eval, Value};
164
164
  /// # use serde_magnus::deserialize;
165
165
  /// #
166
- /// # let _cleanup = unsafe { magnus::embed::init() };
166
+ /// # let ruby = unsafe { magnus::embed::init() };
167
167
  /// #
168
168
  /// use serde::Deserialize;
169
169
  ///
170
170
  /// #[derive(PartialEq, Debug, Deserialize)]
171
171
  /// struct Foo(u16);
172
172
  ///
173
- /// let input: Value = eval!("1234")?;
174
- /// let output: Foo = deserialize(input)?;
173
+ /// let input: Value = eval!(&ruby, "1234")?;
174
+ /// let output: Foo = deserialize(&ruby, input)?;
175
175
  /// assert_eq!(Foo(1234), output);
176
176
  /// #
177
177
  /// # Ok::<(), magnus::Error>(())
@@ -183,15 +183,15 @@ use serde::Deserialize;
183
183
  /// # use magnus::{eval, Value};
184
184
  /// # use serde_magnus::deserialize;
185
185
  /// #
186
- /// # let _cleanup = unsafe { magnus::embed::init() };
186
+ /// # let ruby = unsafe { magnus::embed::init() };
187
187
  /// #
188
188
  /// use serde::Deserialize;
189
189
  ///
190
190
  /// #[derive(PartialEq, Debug, Deserialize)]
191
191
  /// struct Foo(u16, bool, String);
192
192
  ///
193
- /// let input: Value = eval!("[123, true, 'Hello, world!']")?;
194
- /// let output: Foo = deserialize(input)?;
193
+ /// let input: Value = eval!(&ruby, "[123, true, 'Hello, world!']")?;
194
+ /// let output: Foo = deserialize(&ruby, input)?;
195
195
  /// assert_eq!(Foo(123, true, "Hello, world!".into()), output);
196
196
  /// #
197
197
  /// # Ok::<(), magnus::Error>(())
@@ -204,7 +204,7 @@ use serde::Deserialize;
204
204
  /// # use serde::Deserialize;
205
205
  /// # use serde_magnus::deserialize;
206
206
  /// #
207
- /// # let _cleanup = unsafe { magnus::embed::init() };
207
+ /// # let ruby = unsafe { magnus::embed::init() };
208
208
  /// #
209
209
  /// #[derive(PartialEq, Debug, Deserialize)]
210
210
  /// struct Foo {
@@ -213,8 +213,8 @@ use serde::Deserialize;
213
213
  /// glorp: String
214
214
  /// }
215
215
  ///
216
- /// let input: Value = eval!("{ bar: 1234, baz: true, glorp: 'Hello, world!' }")?;
217
- /// let output: Foo = deserialize(input)?;
216
+ /// let input: Value = eval!(&ruby, "{ bar: 1234, baz: true, glorp: 'Hello, world!' }")?;
217
+ /// let output: Foo = deserialize(&ruby, input)?;
218
218
  /// assert_eq!(
219
219
  /// Foo { bar: 1234, baz: true, glorp: "Hello, world!".into() },
220
220
  /// output
@@ -247,13 +247,13 @@ use serde::Deserialize;
247
247
  /// # use serde::Deserialize;
248
248
  /// # use serde_magnus::deserialize;
249
249
  /// #
250
- /// # let _cleanup = unsafe { magnus::embed::init() };
250
+ /// # let ruby = unsafe { magnus::embed::init() };
251
251
  /// #
252
252
  /// # #[derive(PartialEq, Debug, Deserialize)]
253
253
  /// # enum Foo { Bar }
254
254
  /// #
255
- /// let input: Value = eval!("'Bar'")?;
256
- /// let output: Foo = deserialize(input)?;
255
+ /// let input: Value = eval!(&ruby, "'Bar'")?;
256
+ /// let output: Foo = deserialize(&ruby, input)?;
257
257
  /// assert_eq!(Foo::Bar, output);
258
258
  /// #
259
259
  /// # Ok::<(), magnus::Error>(())
@@ -266,13 +266,13 @@ use serde::Deserialize;
266
266
  /// # use serde::Deserialize;
267
267
  /// # use serde_magnus::deserialize;
268
268
  /// #
269
- /// # let _cleanup = unsafe { magnus::embed::init() };
269
+ /// # let ruby = unsafe { magnus::embed::init() };
270
270
  /// #
271
271
  /// # #[derive(PartialEq, Debug, Deserialize)]
272
272
  /// # enum Foo { Baz(u16) }
273
273
  /// #
274
- /// let input: Value = eval!("{ 'Baz' => 1234 }")?;
275
- /// let output: Foo = deserialize(input)?;
274
+ /// let input: Value = eval!(&ruby, "{ 'Baz' => 1234 }")?;
275
+ /// let output: Foo = deserialize(&ruby, input)?;
276
276
  /// assert_eq!(Foo::Baz(1234), output);
277
277
  /// #
278
278
  /// # Ok::<(), magnus::Error>(())
@@ -285,13 +285,13 @@ use serde::Deserialize;
285
285
  /// # use serde::Deserialize;
286
286
  /// # use serde_magnus::deserialize;
287
287
  /// #
288
- /// # let _cleanup = unsafe { magnus::embed::init() };
288
+ /// # let ruby = unsafe { magnus::embed::init() };
289
289
  /// #
290
290
  /// # #[derive(PartialEq, Debug, Deserialize)]
291
291
  /// # enum Foo { Glorp(u16, bool, String) }
292
292
  /// #
293
- /// let input: Value = eval!("{ 'Glorp' => [123, true, 'Hello, world!'] }")?;
294
- /// let output: Foo = deserialize(input)?;
293
+ /// let input: Value = eval!(&ruby, "{ 'Glorp' => [123, true, 'Hello, world!'] }")?;
294
+ /// let output: Foo = deserialize(&ruby, input)?;
295
295
  /// assert_eq!(Foo::Glorp(123, true, "Hello, world!".into()), output);
296
296
  /// #
297
297
  /// # Ok::<(), magnus::Error>(())
@@ -304,7 +304,7 @@ use serde::Deserialize;
304
304
  /// # use serde::Deserialize;
305
305
  /// # use serde_magnus::deserialize;
306
306
  /// #
307
- /// # let _cleanup = unsafe { magnus::embed::init() };
307
+ /// # let ruby = unsafe { magnus::embed::init() };
308
308
  /// #
309
309
  /// # #[derive(PartialEq, Debug, Deserialize)]
310
310
  /// # enum Foo {
@@ -315,7 +315,7 @@ use serde::Deserialize;
315
315
  /// # }
316
316
  /// # }
317
317
  /// #
318
- /// let input: Value = eval!(r#"
318
+ /// let input: Value = eval!(&ruby, r#"
319
319
  /// {
320
320
  /// "Quux" => {
321
321
  /// frob: 1234,
@@ -324,7 +324,7 @@ use serde::Deserialize;
324
324
  /// }
325
325
  /// }
326
326
  /// "#)?;
327
- /// let output: Foo = deserialize(input)?;
327
+ /// let output: Foo = deserialize(&ruby, input)?;
328
328
  /// assert_eq!(
329
329
  /// Foo::Quux { frob: 1234, wally: true, plugh: "Hello, world!".into() },
330
330
  /// output
@@ -341,10 +341,10 @@ use serde::Deserialize;
341
341
  /// # use magnus::{eval, Value};
342
342
  /// # use serde_magnus::deserialize;
343
343
  /// #
344
- /// # let _cleanup = unsafe { magnus::embed::init() };
344
+ /// # let ruby = unsafe { magnus::embed::init() };
345
345
  /// #
346
- /// let input: Value = eval!("[123, true, 'Hello, world!']")?;
347
- /// let output: (i16, bool, String) = deserialize(input)?;
346
+ /// let input: Value = eval!(&ruby, "[123, true, 'Hello, world!']")?;
347
+ /// let output: (i16, bool, String) = deserialize(&ruby, input)?;
348
348
  /// assert_eq!((123, true, "Hello, world!".into()), output);
349
349
  /// #
350
350
  /// # Ok::<(), magnus::Error>(())
@@ -356,10 +356,10 @@ use serde::Deserialize;
356
356
  /// # use magnus::{eval, Value};
357
357
  /// # use serde_magnus::deserialize;
358
358
  /// #
359
- /// # let _cleanup = unsafe { magnus::embed::init() };
359
+ /// # let ruby = unsafe { magnus::embed::init() };
360
360
  /// #
361
- /// let input: Value = eval!("[123, 456, 789]")?;
362
- /// let output: [i64; 3] = deserialize(input)?;
361
+ /// let input: Value = eval!(&ruby, "[123, 456, 789]")?;
362
+ /// let output: [i64; 3] = deserialize(&ruby, input)?;
363
363
  /// assert_eq!([123, 456, 789], output);
364
364
  /// #
365
365
  /// # Ok::<(), magnus::Error>(())
@@ -373,10 +373,10 @@ use serde::Deserialize;
373
373
  /// # use magnus::{eval, Value};
374
374
  /// # use serde_magnus::deserialize;
375
375
  /// #
376
- /// # let _cleanup = unsafe { magnus::embed::init() };
376
+ /// # let ruby = unsafe { magnus::embed::init() };
377
377
  /// #
378
- /// let input: Value = eval!("[123, 456, 789]")?;
379
- /// let output: Vec<u64> = deserialize(input)?;
378
+ /// let input: Value = eval!(&ruby, "[123, 456, 789]")?;
379
+ /// let output: Vec<u64> = deserialize(&ruby, input)?;
380
380
  /// assert_eq!(vec![123, 456, 789], output);
381
381
  /// #
382
382
  /// # Ok::<(), magnus::Error>(())
@@ -388,11 +388,11 @@ use serde::Deserialize;
388
388
  /// # use magnus::{eval, Value};
389
389
  /// # use serde_magnus::deserialize;
390
390
  /// #
391
- /// # let _cleanup = unsafe { magnus::embed::init() };
391
+ /// # let ruby = unsafe { magnus::embed::init() };
392
392
  /// #
393
393
  /// use std::collections::HashMap;
394
394
  ///
395
- /// let input: Value = eval!(r#"
395
+ /// let input: Value = eval!(&ruby, r#"
396
396
  /// {
397
397
  /// "yes" => "no",
398
398
  /// "stop" => "go",
@@ -400,7 +400,7 @@ use serde::Deserialize;
400
400
  /// "goodbye" => "hello"
401
401
  /// }
402
402
  /// "#)?;
403
- /// let output: HashMap<String, String> = deserialize(input)?;
403
+ /// let output: HashMap<String, String> = deserialize(&ruby, input)?;
404
404
  /// assert_eq!(4, output.len());
405
405
  /// assert_eq!(Some(&String::from("no")), output.get("yes"));
406
406
  /// #
@@ -424,10 +424,10 @@ use serde::Deserialize;
424
424
  /// # use magnus::{eval, Error, Value};
425
425
  /// # use serde_magnus::deserialize;
426
426
  /// #
427
- /// # let _cleanup = unsafe { magnus::embed::init() };
427
+ /// # let ruby = unsafe { magnus::embed::init() };
428
428
  /// #
429
- /// let input: Value = eval!("'Hello, world!'")?;
430
- /// let output: Result<&str, Error> = deserialize(input);
429
+ /// let input: Value = eval!(&ruby, "'Hello, world!'")?;
430
+ /// let output: Result<&str, Error> = deserialize(&ruby, input);
431
431
  /// assert!(output.is_err());
432
432
  /// assert_eq!(
433
433
  /// r#"TypeError: invalid type: expected a borrowed string, got string "Hello, world!""#,
@@ -443,10 +443,10 @@ use serde::Deserialize;
443
443
  /// # use magnus::{eval, Error, Value};
444
444
  /// # use serde_magnus::deserialize;
445
445
  /// #
446
- /// # let _cleanup = unsafe { magnus::embed::init() };
446
+ /// # let ruby = unsafe { magnus::embed::init() };
447
447
  /// #
448
- /// let input: Value = eval!("'Hello, world!'")?;
449
- /// let output: String = deserialize(input)?;
448
+ /// let input: Value = eval!(&ruby, "'Hello, world!'")?;
449
+ /// let output: String = deserialize(&ruby, input)?;
450
450
  /// assert_eq!("Hello, world!", output);
451
451
  /// #
452
452
  /// # Ok::<(), magnus::Error>(())
@@ -460,10 +460,10 @@ use serde::Deserialize;
460
460
  /// # use magnus::{eval, Error, Value};
461
461
  /// # use serde_magnus::deserialize;
462
462
  /// #
463
- /// # let _cleanup = unsafe { magnus::embed::init() };
463
+ /// # let ruby = unsafe { magnus::embed::init() };
464
464
  /// #
465
- /// let input: Value = eval!("'☃'")?;
466
- /// let output: Result<&[u8], Error> = deserialize(input);
465
+ /// let input: Value = eval!(&ruby, "'☃'")?;
466
+ /// let output: Result<&[u8], Error> = deserialize(&ruby, input);
467
467
  /// assert!(output.is_err());
468
468
  /// assert_eq!(
469
469
  /// "TypeError: can't deserialize into byte slice",
@@ -479,20 +479,20 @@ use serde::Deserialize;
479
479
  /// # use magnus::{eval, Error, Value};
480
480
  /// # use serde_magnus::deserialize;
481
481
  /// #
482
- /// # let _cleanup = unsafe { magnus::embed::init() };
482
+ /// # let ruby = unsafe { magnus::embed::init() };
483
483
  /// #
484
484
  /// use serde_bytes::ByteBuf;
485
485
  ///
486
- /// let input: Value = eval!("'☃'")?;
487
- /// let output: ByteBuf = deserialize(input)?;
486
+ /// let input: Value = eval!(&ruby, "'☃'")?;
487
+ /// let output: ByteBuf = deserialize(&ruby, input)?;
488
488
  /// assert_eq!(vec![226, 152, 131], output.into_vec());
489
489
  /// #
490
490
  /// # Ok::<(), magnus::Error>(())
491
491
  /// ```
492
- pub fn deserialize<'i, Input, Output>(input: Input) -> Result<Output, Error>
492
+ pub fn deserialize<'i, Input, Output>(ruby: &Ruby, input: Input) -> Result<Output, Error>
493
493
  where
494
494
  Input: IntoValue,
495
495
  Output: Deserialize<'i>,
496
496
  {
497
- Output::deserialize(Deserializer::new(input.into_value())).map_err(Into::into)
497
+ Output::deserialize(Deserializer::new(ruby, input.into_value_with(ruby))).map_err(Into::into)
498
498
  }
@@ -1,19 +1,20 @@
1
1
  use super::{ArrayDeserializer, Deserializer, HashDeserializer};
2
2
  use crate::error::Error;
3
- use magnus::{value::ReprValue, RArray, RHash, Value};
3
+ use magnus::{value::ReprValue, RArray, RHash, Ruby, Value};
4
4
  use serde::de::{DeserializeSeed, Unexpected, VariantAccess};
5
5
 
6
- pub struct VariantDeserializer {
6
+ pub struct VariantDeserializer<'r> {
7
+ ruby: &'r Ruby,
7
8
  value: Value,
8
9
  }
9
10
 
10
- impl VariantDeserializer {
11
- pub fn new(value: Value) -> VariantDeserializer {
12
- VariantDeserializer { value }
11
+ impl<'r> VariantDeserializer<'r> {
12
+ pub fn new(ruby: &'r Ruby, value: Value) -> VariantDeserializer<'r> {
13
+ VariantDeserializer { ruby, value }
13
14
  }
14
15
  }
15
16
 
16
- impl<'i> VariantAccess<'i> for VariantDeserializer {
17
+ impl<'r, 'i> VariantAccess<'i> for VariantDeserializer<'r> {
17
18
  type Error = Error;
18
19
 
19
20
  fn unit_variant(self) -> Result<(), Self::Error> {
@@ -32,7 +33,7 @@ impl<'i> VariantAccess<'i> for VariantDeserializer {
32
33
  where
33
34
  Seed: DeserializeSeed<'i>,
34
35
  {
35
- seed.deserialize(Deserializer::new(self.value))
36
+ seed.deserialize(Deserializer::new(self.ruby, self.value))
36
37
  }
37
38
 
38
39
  fn tuple_variant<Visitor>(
@@ -44,7 +45,7 @@ impl<'i> VariantAccess<'i> for VariantDeserializer {
44
45
  Visitor: serde::de::Visitor<'i>,
45
46
  {
46
47
  if let Some(array) = RArray::from_value(self.value) {
47
- visitor.visit_seq(&mut ArrayDeserializer::new(array))
48
+ visitor.visit_seq(&mut ArrayDeserializer::new(self.ruby, array))
48
49
  } else {
49
50
  Err(serde::de::Error::invalid_type(
50
51
  #[allow(clippy::unnecessary_to_owned)]
@@ -63,7 +64,7 @@ impl<'i> VariantAccess<'i> for VariantDeserializer {
63
64
  Visitor: serde::de::Visitor<'i>,
64
65
  {
65
66
  if let Some(hash) = RHash::from_value(self.value) {
66
- visitor.visit_map(&mut HashDeserializer::new(hash)?)
67
+ visitor.visit_map(&mut HashDeserializer::new(self.ruby, hash)?)
67
68
  } else {
68
69
  Err(serde::de::Error::invalid_type(
69
70
  #[allow(clippy::unnecessary_to_owned)]
@@ -1,4 +1,4 @@
1
- use magnus::{exception, ExceptionClass};
1
+ use magnus::{ExceptionClass, Ruby};
2
2
  use std::{borrow::Cow, fmt};
3
3
 
4
4
  #[derive(Debug)]
@@ -30,7 +30,10 @@ impl serde::ser::Error for Error {
30
30
  where
31
31
  Message: fmt::Display,
32
32
  {
33
- Error::new(exception::runtime_error(), message.to_string())
33
+ Error::new(
34
+ Ruby::get().unwrap().exception_runtime_error(),
35
+ message.to_string(),
36
+ )
34
37
  }
35
38
  }
36
39
 
@@ -39,12 +42,15 @@ impl serde::de::Error for Error {
39
42
  where
40
43
  Message: fmt::Display,
41
44
  {
42
- Error::new(exception::runtime_error(), message.to_string())
45
+ Error::new(
46
+ Ruby::get().unwrap().exception_runtime_error(),
47
+ message.to_string(),
48
+ )
43
49
  }
44
50
 
45
51
  fn invalid_type(unexpected: serde::de::Unexpected, expected: &dyn serde::de::Expected) -> Self {
46
52
  Error::new(
47
- exception::type_error(),
53
+ Ruby::get().unwrap().exception_type_error(),
48
54
  format!("invalid type: expected {}, got {}", expected, unexpected),
49
55
  )
50
56
  }
@@ -9,7 +9,7 @@
9
9
  //! trait into a Ruby equivalent.
10
10
  //!
11
11
  //! ```
12
- //! # let _cleanup = unsafe { magnus::embed::init() };
12
+ //! # let ruby = unsafe { magnus::embed::init() };
13
13
  //! #
14
14
  //! use serde::{Serialize, Deserialize};
15
15
  //! use magnus::{eval, Value};
@@ -42,9 +42,10 @@
42
42
  //! ]
43
43
  //! };
44
44
  //!
45
- //! let post: Value = serialize(&post)?;
45
+ //! let post: Value = serialize(&ruby, &post)?;
46
46
  //!
47
47
  //! assert!(eval!(
48
+ //! &ruby,
48
49
  //! r#"
49
50
  //! post == {
50
51
  //! title: "Spring carnival planning update",
@@ -68,7 +69,7 @@
68
69
  //! # use serde::Deserialize;
69
70
  //! # use magnus::{eval, RHash};
70
71
  //! #
71
- //! # let _cleanup = unsafe { magnus::embed::init() };
72
+ //! # let ruby = unsafe { magnus::embed::init() };
72
73
  //! #
73
74
  //! # #[derive(Deserialize, PartialEq, Debug)]
74
75
  //! # struct Post {
@@ -86,7 +87,7 @@
86
87
  //! #
87
88
  //! use serde_magnus::deserialize;
88
89
  //!
89
- //! let post: RHash = eval!(r#"
90
+ //! let post: RHash = eval!(&ruby, r#"
90
91
  //! {
91
92
  //! title: "Spring carnival planning update",
92
93
  //! content: "Here's what's new.",
@@ -98,7 +99,7 @@
98
99
  //! }
99
100
  //! "#)?;
100
101
  //!
101
- //! let post: Post = deserialize(post)?;
102
+ //! let post: Post = deserialize(&ruby, post)?;
102
103
  //!
103
104
  //! assert_eq!(
104
105
  //! Post {
@@ -0,0 +1,11 @@
1
+ use crate::error::Error;
2
+ use magnus::{IntoValue, Ruby, Value};
3
+
4
+ pub fn nest<Data>(ruby: &Ruby, variant: &'static str, data: Data) -> Result<Value, Error>
5
+ where
6
+ Data: IntoValue,
7
+ {
8
+ let hash = ruby.hash_new();
9
+ hash.aset(variant, data)?;
10
+ Ok(hash.into_value_with(ruby))
11
+ }