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,545 @@
1
+ //! Derive and proc macros for magnus.
2
+ //!
3
+ //! ```
4
+ //! #[magnus::wrap(class = "RbPoint", free_immediately, size)]
5
+ //! struct Point {
6
+ //! x: isize,
7
+ //! y: isize,
8
+ //! }
9
+ //!
10
+ //! #[magnus::init]
11
+ //! fn init(ruby: &magnus::Ruby) -> Result<(), magnus::Error> {
12
+ //! ruby.define_class("RbPoint", ruby.class_object())?;
13
+ //! Ok(())
14
+ //! }
15
+ //! ```
16
+
17
+ #![warn(missing_docs)]
18
+
19
+ use proc_macro::TokenStream;
20
+ use syn::parse_macro_input;
21
+
22
+ mod init;
23
+ mod typed_data;
24
+ mod util;
25
+
26
+ /// Mark a function as the 'init' function to be run for a library when it is
27
+ /// `require`d by Ruby code.
28
+ ///
29
+ /// The init function is used to define your Ruby modules & classes, bind
30
+ /// functions as Ruby methods, etc.
31
+ ///
32
+ /// # Attributes
33
+ ///
34
+ /// * `name = "..."` - sets the name of the init function exported for Ruby.
35
+ /// This default's to the current crate's name. The name will be prepended
36
+ /// with `Init_` and `-` will be replaced with `_`. This (minus the `Init_`
37
+ /// prefix) must match the name of the final `.so`/`.bundle` file.
38
+ ///
39
+ /// # Examples
40
+ ///
41
+ /// ```
42
+ /// fn distance(a: (f64, f64), b: (f64, f64)) -> f64 {
43
+ /// ((b.0 - a.0).powi(2) + (b.1 - a.1).powi(2)).sqrt()
44
+ /// }
45
+ ///
46
+ /// #[magnus::init]
47
+ /// fn init(ruby: &magnus::Ruby) {
48
+ /// ruby.define_global_function("distance", magnus::function!(distance, 2));
49
+ /// }
50
+ /// ```
51
+ /// The init function can also return `Result<(), magnus::Error>`.
52
+ /// ```
53
+ /// use magnus::{function, method, prelude::*, Error, Ruby};
54
+ ///
55
+ /// #[magnus::wrap(class = "Euclid::Point", free_immediately, size)]
56
+ /// struct Point {
57
+ /// x: isize,
58
+ /// y: isize,
59
+ /// }
60
+ ///
61
+ /// impl Point {
62
+ /// fn new(x: isize, y: isize) -> Self {
63
+ /// Self { x, y }
64
+ /// }
65
+ ///
66
+ /// fn x(&self) -> isize {
67
+ /// self.x
68
+ /// }
69
+ ///
70
+ /// fn y(&self) -> isize {
71
+ /// self.y
72
+ /// }
73
+ /// }
74
+ ///
75
+ /// #[magnus::init]
76
+ /// fn init(ruby: &Ruby) -> Result<(), Error> {
77
+ /// let module = ruby.define_module("Euclid")?;
78
+ /// let class = module.define_class("Point", ruby.class_object())?;
79
+ /// class.define_singleton_method("new", function!(Point::new, 2))?;
80
+ /// class.define_method("x", method!(Point::x, 0))?;
81
+ /// class.define_method("y", method!(Point::y, 0))?;
82
+ /// Ok(())
83
+ /// }
84
+ /// ```
85
+ /// Setting the name.
86
+ /// ```
87
+ /// #[magnus::init(name = "example")]
88
+ /// fn init() {
89
+ /// ()
90
+ /// }
91
+ /// ```
92
+ #[proc_macro_attribute]
93
+ pub fn init(attrs: TokenStream, item: TokenStream) -> TokenStream {
94
+ let mut name = None;
95
+ if !attrs.is_empty() {
96
+ let attr_parser = syn::meta::parser(|meta| {
97
+ if meta.path.is_ident("name") {
98
+ name = Some(meta.value()?.parse::<syn::LitStr>()?.value());
99
+ Ok(())
100
+ } else {
101
+ Err(meta.error("unsupported attribute"))
102
+ }
103
+ });
104
+ parse_macro_input!(attrs with attr_parser);
105
+ }
106
+ match init::expand(name, parse_macro_input!(item)) {
107
+ Ok(tokens) => tokens,
108
+ Err(e) => e.into_compile_error(),
109
+ }
110
+ .into()
111
+ }
112
+
113
+ /// Allows a Rust type to be passed to Ruby, where it is automatically wrapped
114
+ /// as a Ruby object.
115
+ ///
116
+ /// For more control over the wrapping behavior, see [`TypedData`].
117
+ ///
118
+ /// # Attributes
119
+ ///
120
+ /// The `#[wrap]` macro supports several attributes to configure its behavior:
121
+ ///
122
+ /// * `class = "..."` (required):
123
+ /// Specifies the Ruby class associated with the Rust type. Supports module
124
+ /// paths, such as `Foo::Bar::Baz`, to locate nested classes.
125
+ ///
126
+ /// * `name = "..."`:
127
+ /// Specifies a debug name for the type. This name must be unique and
128
+ /// defaults to the class name if not explicitly provided.
129
+ ///
130
+ /// * `free_immediately`:
131
+ /// Indicates that the Rust type should be dropped as soon as the Ruby object
132
+ /// is garbage collected. This is only safe if the type's [`Drop`]
133
+ /// implementation does not call Ruby, as calling Ruby during the garbage
134
+ /// collection process is unsafe and can lead to undefined behavior.
135
+ ///
136
+ /// * `size`:
137
+ /// Reports the [`std::mem::size_of_val`] of the type to Ruby, helping Ruby's
138
+ /// garbage collector determine when to run.
139
+ ///
140
+ /// * `unsafe_generics`:
141
+ /// Disables compile-time checks for types with generics, allowing their use
142
+ /// with `#[wrap]`. This should only be used if you are confident that the
143
+ /// derived implementation of [`TypedData`] is correct for your generic type.
144
+ ///
145
+ /// # Variant Attributes
146
+ ///
147
+ /// When wrapping enums, the `#[magnus(...)]` attribute can also be applied to
148
+ /// individual variants to define specific behavior for them:
149
+ ///
150
+ /// * `class = "..."`:
151
+ /// Specifies the Ruby class associated with a particular variant. This is
152
+ /// useful for defining subclasses for the variants.
153
+ ///
154
+ /// # Examples
155
+ ///
156
+ /// Wrapping a struct:
157
+ ///
158
+ /// ```
159
+ /// use magnus::{function, prelude::*, wrap, Ruby};
160
+ ///
161
+ /// #[wrap(class = "Point", free_immediately, size)]
162
+ /// struct Point {
163
+ /// x: isize,
164
+ /// y: isize,
165
+ /// }
166
+ ///
167
+ /// fn point(x: isize, y: isize) -> Point {
168
+ /// Point { x, y }
169
+ /// }
170
+ ///
171
+ /// fn distance(a: &Point, b: &Point) -> f64 {
172
+ /// (((b.x - a.x).pow(2) + (b.y - a.y).pow(2)) as f64).sqrt()
173
+ /// }
174
+ ///
175
+ /// #[magnus::init]
176
+ /// fn init(ruby: &Ruby) {
177
+ /// ruby.define_global_function("point", function!(point, 2));
178
+ /// ruby.define_global_function("distance", function!(distance, 2));
179
+ /// }
180
+ /// ```
181
+ ///
182
+ /// See [`examples/point.rs`] for the complete example.
183
+ ///
184
+ /// [`examples/point.rs`]: https://github.com/matsadler/magnus/blob/main/examples/point.rs
185
+ ///
186
+ /// Handling mutability:
187
+ ///
188
+ /// ```
189
+ /// use std::cell::RefCell;
190
+ ///
191
+ /// use magnus::{prelude::*, wrap};
192
+ ///
193
+ /// struct Point {
194
+ /// x: isize,
195
+ /// y: isize,
196
+ /// }
197
+ ///
198
+ /// #[wrap(class = "Point")]
199
+ /// struct MutPoint(RefCell<Point>);
200
+ ///
201
+ /// impl MutPoint {
202
+ /// fn set_x(&self, i: isize) {
203
+ /// self.0.borrow_mut().x = i;
204
+ /// }
205
+ /// }
206
+ /// ```
207
+ ///
208
+ /// See [`examples/mut_point.rs`] for the complete example.
209
+ ///
210
+ /// [`examples/mut_point.rs`]: https://github.com/matsadler/magnus/blob/main/examples/mut_point.rs
211
+ ///
212
+ /// Supporting subclassing:
213
+ ///
214
+ /// ```
215
+ /// use std::cell::RefCell;
216
+ ///
217
+ /// use magnus::{function, method, prelude::*, wrap, Error, Ruby};
218
+ ///
219
+ /// #[derive(Default)]
220
+ /// struct Point {
221
+ /// x: isize,
222
+ /// y: isize,
223
+ /// }
224
+ ///
225
+ /// #[derive(Default)]
226
+ /// #[wrap(class = "Point")]
227
+ /// struct MutPoint(RefCell<Point>);
228
+ ///
229
+ /// impl MutPoint {
230
+ /// fn initialize(&self, x: isize, y: isize) {
231
+ /// let mut this = self.0.borrow_mut();
232
+ /// this.x = x;
233
+ /// this.y = y;
234
+ /// }
235
+ /// }
236
+ ///
237
+ /// #[magnus::init]
238
+ /// fn init(ruby: &Ruby) -> Result<(), Error> {
239
+ /// let class = ruby.define_class("Point", ruby.class_object()).unwrap();
240
+ /// class.define_alloc_func::<MutPoint>();
241
+ /// class.define_method("initialize", method!(MutPoint::initialize, 2))?;
242
+ /// Ok(())
243
+ /// }
244
+ /// ```
245
+ ///
246
+ /// Error handling:
247
+ ///
248
+ /// ```
249
+ /// use std::cell::RefCell;
250
+ ///
251
+ /// use magnus::{prelude::*, wrap, Error, Ruby};
252
+ ///
253
+ /// struct Point {
254
+ /// x: isize,
255
+ /// y: isize,
256
+ /// }
257
+ ///
258
+ /// #[wrap(class = "Point")]
259
+ /// struct MutPoint(RefCell<Point>);
260
+ ///
261
+ /// impl MutPoint {
262
+ /// fn add_x(ruby: &Ruby, rb_self: &Self, val: isize) -> Result<isize, Error> {
263
+ /// if let Some(sum) = rb_self.0.borrow().x.checked_add(val) {
264
+ /// rb_self.0.borrow_mut().x = sum;
265
+ /// Ok(sum)
266
+ /// } else {
267
+ /// return Err(Error::new(
268
+ /// ruby.exception_range_error(),
269
+ /// "result out of range",
270
+ /// ));
271
+ /// }
272
+ /// }
273
+ /// }
274
+ /// ```
275
+ ///
276
+ /// Wrapping an enum with subclasses:
277
+ ///
278
+ /// ```
279
+ /// use std::f64::consts::PI;
280
+ ///
281
+ /// use magnus::{function, method, prelude::*, wrap, Ruby};
282
+ ///
283
+ /// #[wrap(class = "Shape")]
284
+ /// enum Shape {
285
+ /// #[magnus(class = "Circle")]
286
+ /// Circle { r: f64 },
287
+ /// #[magnus(class = "Rectangle")]
288
+ /// Rectangle { x: f64, y: f64 },
289
+ /// }
290
+ ///
291
+ /// impl Shape {
292
+ /// fn area(&self) -> f64 {
293
+ /// match self {
294
+ /// Shape::Circle { r } => PI * r * r,
295
+ /// Shape::Rectangle { x, y } => x * y,
296
+ /// }
297
+ /// }
298
+ /// }
299
+ ///
300
+ /// #[magnus::init]
301
+ /// fn init(ruby: &Ruby) -> Result<(), magnus::Error> {
302
+ /// let shape = ruby.define_class("Shape", ruby.class_object())?;
303
+ /// shape.define_method("area", method!(Shape::area, 0))?;
304
+ ///
305
+ /// let circle = ruby.define_class("Circle", shape)?;
306
+ /// circle.define_singleton_method("new", function!(|r| Shape::Circle { r }, 1))?;
307
+ ///
308
+ /// let rectangle = ruby.define_class("Rectangle", shape)?;
309
+ /// rectangle.define_singleton_method("new", function!(|x, y| Shape::Rectangle { x, y }, 2))?;
310
+ ///
311
+ /// Ok(())
312
+ /// }
313
+ /// ```
314
+ ///
315
+ /// See [`examples/inheritance.rs`] for the complete example.
316
+ ///
317
+ /// [`examples/inheritance.rs`]: https://github.com/matsadler/magnus/blob/main/examples/inheritance.rs
318
+ #[proc_macro_attribute]
319
+ pub fn wrap(attrs: TokenStream, item: TokenStream) -> TokenStream {
320
+ typed_data::expand(parse_macro_input!(attrs), parse_macro_input!(item)).into()
321
+ }
322
+
323
+ /// Derives `DataTypeFunctions` with default implementations, for simple uses
324
+ /// of [`TypedData`].
325
+ ///
326
+ /// For cases where no custom `DataTypeFunctions` are required a default
327
+ /// implementation can be derived. The [`macro@wrap`] macro may be a simpler
328
+ /// alternative in this use case.
329
+ #[proc_macro_derive(DataTypeFunctions)]
330
+ pub fn derive_data_type_functions(input: TokenStream) -> TokenStream {
331
+ typed_data::expand_derive_data_type_functions(parse_macro_input!(input)).into()
332
+ }
333
+
334
+ /// Derives `TypedData`, allowing a Rust type to be passed to Ruby and
335
+ /// automatically wrapped as a Ruby object.
336
+ ///
337
+ /// For simpler use cases, consider using [`macro@wrap`].
338
+ ///
339
+ /// # Attributes
340
+ ///
341
+ /// The `#[magnus(...)]` attribute supports the following values to configure
342
+ /// its behavior:
343
+ ///
344
+ /// * `class = "..."` (required):
345
+ /// Specifies the Ruby class associated with the Rust type. Supports module
346
+ /// paths, such as `Foo::Bar::Baz`.
347
+ ///
348
+ /// * `name = "..."`:
349
+ /// Specifies a debug name for the type. This name must be unique and
350
+ /// defaults to the class name if not explicitly provided.
351
+ ///
352
+ /// * `free_immediately`:
353
+ /// Indicates that the Rust type should be dropped as soon as the Ruby object
354
+ /// is garbage collected. This is only safe if the type's [`Drop`] and
355
+ /// `DataTypeFunctions::free` implementations do not call Ruby.
356
+ /// If safe this should be enabled as this performs better and is more
357
+ /// memory efficient.
358
+ ///
359
+ /// * `mark`:
360
+ /// Enables Ruby to call the `DataTypeFunctions::mark` function.
361
+ ///
362
+ /// * `size`:
363
+ /// Enables Ruby to call the `DataTypeFunctions::size` function.
364
+ ///
365
+ /// * `compact`:
366
+ /// Enables Ruby to call the `DataTypeFunctions::compact` function.
367
+ ///
368
+ /// * `wb_protected`:
369
+ /// Enable the 'write barrier protected' flag.
370
+ ///
371
+ /// Types that contain Ruby values by default do not participate in
372
+ /// generational GC (they are scanned every GC). This flag asserts all
373
+ /// operations that write Ruby values to this type are protected with
374
+ /// write barriers (see `typed_data::Writebarrier::writebarrier`) so this
375
+ /// type can participate in generational GC.
376
+ ///
377
+ /// The write barrier is hard to get right. Magnus recommends you do not use
378
+ /// this flag.
379
+ ///
380
+ /// * `frozen_shareable`:
381
+ /// Sets the `frozen_shareable` flag for objects that can be safely accessed
382
+ /// concurrently from multiple threads when frozen. This allows objects to
383
+ /// shared between Ractors.
384
+ ///
385
+ /// * `unsafe_generics`:
386
+ /// Disables compile-time checks for types with generics, allowing their use
387
+ /// with `#[magnus(...)]`. Use this only if you are confident the derived
388
+ /// implementation is correct for your generic type.
389
+ ///
390
+ /// # Field Attributes
391
+ ///
392
+ /// The `#[magnus(...)]` attribute can be set on struct fields with the
393
+ /// following values:
394
+ ///
395
+ /// * `opaque_attr_reader`:
396
+ /// For a Ruby value wrapped in `Opaque`, creates an accessor method that
397
+ /// returns the unwrapped Ruby value.
398
+ ///
399
+ /// # Variant Attributes
400
+ ///
401
+ /// The `#[magnus(...)]` attribute can be set on enum variants with the
402
+ /// following values:
403
+ ///
404
+ /// * `class = "..."`:
405
+ /// Specifies the Ruby class associated with the variant. Supports module
406
+ /// paths, such as `Foo::Bar::Baz`.
407
+ ///
408
+ /// # Examples
409
+ ///
410
+ /// Wrapping a struct
411
+ ///
412
+ /// ```
413
+ /// use magnus::{function, prelude::*, DataTypeFunctions, Ruby, TypedData};
414
+ ///
415
+ /// #[derive(DataTypeFunctions, TypedData)]
416
+ /// #[magnus(class = "Point", size, free_immediately)]
417
+ /// struct Point {
418
+ /// x: isize,
419
+ /// y: isize,
420
+ /// }
421
+ ///
422
+ /// // wraps `Point` struct in a Ruby `Point` object when returned to Ruby.
423
+ /// fn point(x: isize, y: isize) -> Point {
424
+ /// Point { x, y }
425
+ /// }
426
+ ///
427
+ /// // automatically unwraps `Point` objects to references to `Point`` structs
428
+ /// // when invoking the function.
429
+ /// fn distance(a: &Point, b: &Point) -> f64 {
430
+ /// (((b.x - a.x).pow(2) + (b.y - a.y).pow(2)) as f64).sqrt()
431
+ /// }
432
+ ///
433
+ /// #[magnus::init]
434
+ /// fn init(ruby: &Ruby) {
435
+ /// ruby.define_global_function("point", function!(point, 2));
436
+ /// ruby.define_global_function("distance", function!(distance, 2));
437
+ /// }
438
+ /// ```
439
+ ///
440
+ /// Wrapping an enum with subclasses:
441
+ ///
442
+ /// ```
443
+ /// use magnus::{class, prelude::*, wrap, Error, Ruby};
444
+ ///
445
+ /// #[wrap(class = "Shape")]
446
+ /// enum Shape {
447
+ /// #[magnus(class = "Circle")]
448
+ /// Circle { r: f64 },
449
+ /// #[magnus(class = "Rectangle")]
450
+ /// Rectangle { x: f64, y: f64 },
451
+ /// }
452
+ ///
453
+ /// #[magnus::init]
454
+ /// fn init(ruby: &Ruby) -> Result<(), Error> {
455
+ /// let shape = ruby.define_class("Shape", ruby.class_object())?;
456
+ /// ruby.define_class("Circle", shape)?;
457
+ /// ruby.define_class("Rectangle", shape)?;
458
+ /// Ok(())
459
+ /// }
460
+ /// ```
461
+ ///
462
+ /// Custom `DataTypeFunctions` implementation:
463
+ ///
464
+ /// ```
465
+ /// use std::mem::size_of_val;
466
+ ///
467
+ /// use magnus::{DataTypeFunctions, TypedData};
468
+ ///
469
+ /// #[derive(TypedData)]
470
+ /// #[magnus(class = "Name", size, free_immediately)]
471
+ /// struct Name {
472
+ /// first: String,
473
+ /// last: String,
474
+ /// }
475
+ ///
476
+ /// impl DataTypeFunctions for Name {
477
+ /// fn size(&self) -> usize {
478
+ /// size_of_val(&self.first) + size_of_val(&self.last)
479
+ /// }
480
+ /// }
481
+ /// ```
482
+ ///
483
+ /// Struct containing Ruby values:
484
+ ///
485
+ /// ```
486
+ /// use magnus::{
487
+ /// class, function, gc, method, prelude::*, typed_data::Obj, value::Opaque, DataTypeFunctions,
488
+ /// Ruby, TypedData,
489
+ /// };
490
+ ///
491
+ /// #[derive(DataTypeFunctions, TypedData)]
492
+ /// #[magnus(class = "Point", size, free_immediately)]
493
+ /// struct Point {
494
+ /// x: isize,
495
+ /// y: isize,
496
+ /// }
497
+ ///
498
+ /// #[derive(TypedData)]
499
+ /// #[magnus(class = "Line", free_immediately, mark)]
500
+ /// struct Line {
501
+ /// #[magnus(opaque_attr_reader)]
502
+ /// start: Opaque<Obj<Point>>,
503
+ /// #[magnus(opaque_attr_reader)]
504
+ /// end: Opaque<Obj<Point>>,
505
+ /// }
506
+ ///
507
+ /// impl Line {
508
+ /// fn new(start: Obj<Point>, end: Obj<Point>) -> Self {
509
+ /// Self {
510
+ /// start: start.into(),
511
+ /// end: end.into(),
512
+ /// }
513
+ /// }
514
+ ///
515
+ /// fn length(&self) -> f64 {
516
+ /// let start = self.start();
517
+ /// let end = self.end();
518
+ ///
519
+ /// (((end.x - start.x).pow(2) + (end.y - start.y).pow(2)) as f64).sqrt()
520
+ /// }
521
+ /// }
522
+ ///
523
+ /// impl DataTypeFunctions for Line {
524
+ /// fn mark(&self, marker: &gc::Marker) {
525
+ /// marker.mark(self.start);
526
+ /// marker.mark(self.end);
527
+ /// }
528
+ /// }
529
+ ///
530
+ /// #[magnus::init]
531
+ /// fn init(ruby: &Ruby) -> Result<(), magnus::Error> {
532
+ /// let line = ruby.define_class("Line", ruby.class_object())?;
533
+ /// line.define_singleton_method("new", function!(Line::new, 2))?;
534
+ /// line.define_method("length", method!(Line::length, 0))?;
535
+ /// Ok(())
536
+ /// }
537
+ /// ```
538
+ #[proc_macro_derive(TypedData, attributes(magnus))]
539
+ pub fn derive_typed_data(input: TokenStream) -> TokenStream {
540
+ match typed_data::expand_derive_typed_data(parse_macro_input!(input)) {
541
+ Ok(tokens) => tokens,
542
+ Err(e) => e.into_compile_error(),
543
+ }
544
+ .into()
545
+ }
@@ -23,7 +23,7 @@ pub fn expand_derive_data_type_functions(input: DeriveInput) -> TokenStream {
23
23
  }
24
24
 
25
25
  pub fn expand_derive_typed_data(input: DeriveInput) -> Result<TokenStream, Error> {
26
- let attrs = match util::get_magnus_attrubute(&input.attrs)? {
26
+ let attrs = match util::get_magnus_attribute(&input.attrs)? {
27
27
  Some(v) => v,
28
28
  None => return Err(Error::new(input.span(), "missing #[magnus] attribute")),
29
29
  };
@@ -101,7 +101,7 @@ pub fn expand_derive_typed_data(input: DeriveInput) -> Result<TokenStream, Error
101
101
  let mut arms = Vec::new();
102
102
  if let Data::Enum(DataEnum { ref variants, .. }) = input.data {
103
103
  for variant in variants.into_iter() {
104
- let attrs = match util::get_magnus_attrubute(&variant.attrs)? {
104
+ let attrs = match util::get_magnus_attribute(&variant.attrs)? {
105
105
  Some(v) => v,
106
106
  None => continue,
107
107
  };
@@ -156,7 +156,7 @@ pub fn expand_derive_typed_data(input: DeriveInput) -> Result<TokenStream, Error
156
156
  }) = input.data
157
157
  {
158
158
  for field in named {
159
- let attrs = match util::get_magnus_attrubute(&field.attrs)? {
159
+ let attrs = match util::get_magnus_attribute(&field.attrs)? {
160
160
  Some(v) => v,
161
161
  None => continue,
162
162
  };
@@ -1,6 +1,6 @@
1
1
  use syn::{spanned::Spanned, Attribute, Error};
2
2
 
3
- pub fn get_magnus_attrubute(attrs: &[Attribute]) -> Result<Option<&Attribute>, Error> {
3
+ pub fn get_magnus_attribute(attrs: &[Attribute]) -> Result<Option<&Attribute>, Error> {
4
4
  let attrs = attrs
5
5
  .iter()
6
6
  .filter(|attr| attr.path().is_ident("magnus"))
@@ -0,0 +1 @@
1
+ {"files":{".cargo_vcs_info.json":"2c38e040fea253142cb5a88f405d5f4c062118b5550641a009bf3b30e7f9699f","Cargo.lock":"1ed6717180355d2a3b20b126d28fefa66ee37c3f8b60d1cc6fa4f74702c8d202","Cargo.toml":"5079fbefcc7954a3ad0dac5b30941a3e40f9d2b5660bfe4487b532b115728562","Cargo.toml.orig":"248511fc699d0cee31cc2a37210092049a626e73ae30225797b03a90d59b1b9f","LICENSE":"b13a15a45244679c4be9cc2e3a6e93e18d971fe890350e131f68a8f7d013d8ad","README.md":"e503b7e52e357adadf3827053e7f57a11500988c0a416c216ad474a9b3e3e119","src/de/array_deserializer.rs":"1f42ec33e453dc3f7da70fd67205514a39a103ab53a4f1694ccffbd6d35e4022","src/de/array_enumerator.rs":"32811edb0e1bbf621a16ee350985c246ee1d2ae9d64ec1b939fce7b3f4224cec","src/de/deserializer.rs":"99b25308b7635a09b297626b9fda4f215b025c215ee00a04fe5bd87852f19deb","src/de/enum_deserializer.rs":"4d381ecf4dc8ef9d619a9095d01376c3ccdc798d1ca434166c655fafea1420e6","src/de/hash_deserializer.rs":"8e30abfb865d99506585faaba06473cbb2b81fbc4969a518979a0417111d4344","src/de/mod.rs":"b3246446aa3a753fc2e5bb105fcc714c72928952697eaf8df4d38b57bee5c2ce","src/de/variant_deserializer.rs":"12e050e8d1aad7c1729086c2e0bc5bb9e5fb50749f0abc62f587684e222400aa","src/error.rs":"f3490e6323cfb1d2f311eb127393a755d077bf5a8c4990e14d2dfd546a18482e","src/lib.rs":"e62af27388e0bcbf91986b2789590c9b1b939031d494ecdeeb2f002d46db2b32","src/ser/enums.rs":"b68468f459f98aaa89cf86fdacf8f91439a53b53a25af66d11660772d79bba6c","src/ser/map_serializer.rs":"a8fa655d63ca8ca12107061c8ffc4779908acd608952a77b1ee7bcde52751812","src/ser/mod.rs":"cea133e2e4abd68f3d4b9f1ec7985bbea6b0790b76f9243cf32f3b4fe3770ad4","src/ser/seq_serializer.rs":"1521207de5b8469f33ddb936f1a126ee8b5117aa9c9067b6558d95d63709ebec","src/ser/serializer.rs":"c8e3834042d72c7fee92d029f7743be57607a13c70627ff9988674b9c68049e4","src/ser/struct_serializer.rs":"07b6de2746f11914660e82f9cb8c7fa714fddc3af1bc0f0ac0cb30dadea9a604","src/ser/struct_variant_serializer.rs":"dea6fbe823045d86128c3dde0b1613653a7199390939f1ce092a41c88ba4ee3f","src/ser/tuple_variant_serializer.rs":"0f0879f939d822cd83e86813f5b30741ce9dccae69572ea62c4336b1783277ca","tests/deserializing_arrays.rs":"00f2c4aaa2da6e1e32d4b7b50f8841087518074e5701ec4e2667df151d05b908","tests/deserializing_booleans.rs":"c36ef7e1bce155166bfd89626e4a0e3a56e8f31948f8691a2ab2f439a6c9bd57","tests/deserializing_enums.rs":"9930b4fc875ffed2a168fe32c8d42848fca7109175c7cc84455dd554abe25f60","tests/deserializing_floats.rs":"0d1b7c7c7f607f3599a3bd090f47113856ed6ca484a1b2b4d9336186fe3202a2","tests/deserializing_integers.rs":"fb8994ec18f91404583141f82703c02291dfda4571d43e843631f9f606ca8c7f","tests/deserializing_maps.rs":"bbadcee9578f92a56a0101698d97887d0b1ed719290cf4de6f803d237707e575","tests/deserializing_options.rs":"64a17c3bda53526a6a03c5d3aa43ea693a7f53251e80265b5ffe5256e5a0c7cd","tests/deserializing_results.rs":"538fac6cd2f76142b80beed35aabbc1641aa8927dd750c9d7e01614fe5cbfb3f","tests/deserializing_strings.rs":"b74758e444f53549d31c26defe5f8896ab661e461a2b2958d0f3a6626dae795e","tests/deserializing_structs.rs":"f4a145c10442ad689fe3d3f6d750c286bbab266fa7231802e38a6df03d3f2fee","tests/deserializing_tuples.rs":"0ab7ccf9c143fb3da2e238bc6e3c5b82ccecaee1dd1b0def36d762df2b0583bf","tests/deserializing_vecs.rs":"26d09798e73a315ce3c70e1463bef5a5f67b76f33575cc0b9012d6785b588b41","tests/serializing_arrays.rs":"c2be6d3dcc28334bcdd97d8da0f0c87816caafc13197e2f708c683eac4f9ab5d","tests/serializing_booleans.rs":"301afdc45cd5d96c2534d0a4e485cc856e2381cbf89b106b758b562eb82e7a8b","tests/serializing_enums.rs":"2b03414a7560e3979ed3f3cf312c417833e7d48343e462ff46effacde25328e1","tests/serializing_floats.rs":"2a4a73cb8b4f92c7f3ae66926f7cc174d547af3ba5cef876193fa9b11fe2130f","tests/serializing_integers.rs":"70cc2836f5ea96e2ffe8f671cf64cc1f499ca703ca5d6b83fd2c2dd489503591","tests/serializing_maps.rs":"ed1ba4644f93c97c53969cbbcee082bdeb80ea42b034be5cb74706a66617f42a","tests/serializing_options.rs":"adec0f3cee27f8144b4eaab90c29ac02f72faf8d93a2b7ac2be1192904f4018d","tests/serializing_results.rs":"547106207266e648280bf60e4c8a36df50be0a7d467b59bf083d4accc9484d36","tests/serializing_strings.rs":"84cbbd43f497857be9129dc45184c827061b665dc88efd43702bd78f573de233","tests/serializing_structs.rs":"5287d45724a83ad0f075e54095fb71aeca45b228c745136f9159b157bdc2de6b","tests/serializing_tuples.rs":"a4ea4e188f59341a6c2bba4acc91848a32a113fadc1754e3c3a31a1322b04cf0","tests/serializing_vecs.rs":"fad941c4641fa142c80ce866633d0d37adfd3922783de5776b2dbd2aad3563bd"},"package":"c4a5121544138e6a14036e48ecbe589fb63577f35620caaa32642257b412c317"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "git": {
3
+ "sha1": "0d583c6926757460a27e7bc99c07bd6139fc5350"
4
+ },
5
+ "path_in_vcs": ""
6
+ }