Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Minutus
Heavily inspired by Magnus.
By minutus, you can easily embed mruby in Rust, and create mrbgem by Rust.
Minutus also provides sensible type casting, and you can define typed functions to mruby values and wrap rust structs in mruby objects.
Embed mruby in Rust
Add minutus to your crate's dependencies.
cargo add minutus --features mruby_3_1_0,link_mruby
Write code like:
// src/main.rs
// This enables you to call `some_method` from Rust world.
define_funcall!
Then, you can run your code:
$ cargo run
...
[1, 2, 3, 4]
retval is 10
If you want to use custom build_config.rb
(e.g. for using mrbgems),
you have to write custom build.rs
Minutus provides a helper for this purpose. See examples/custom-mruby.
Create mrbgem by Rust
Install minutus-mrbgem-template
and initialize mrbgem.
$ cargo install minutus-mrbgem-template
$ minutus-mrbgem-template mruby-example
$ tree mruby-example
mruby-example
├── Cargo.lock
├── Cargo.toml
├── LICENSE
├── README.md
├── Rakefile
├── mrbgem.rake
├── mrblib
│ └── mrb_example.rb
├── mruby-example.gem
├── src
│ ├── dummy.c
│ └── lib.rs
└── test
└── mrb_example.rb
Now, you can build and test mrbgem.
$ cd mruby-example && rake test
...
Total: 1456
OK: 1449
KO: 0
Crash: 0
Warning: 0
Skip: 7
Time: 0.06 seconds
Wrap Rust Structs in mruby Objects
You can wrap Rust's struct in mruby objects.
The following example defines TestMrbgem
class in mruby,
which has class method new
, and instance methods distance
and name_with_prefix
.
Define typed functions to mruby values
Use define_funcall!
macro.
!
define_funcall
Type casting
See minutus/src/types for details.
Rust type | mruby type |
---|---|
i8 , i16 , i32 , i64 , isize |
Integer |
u8 , u16 , u32 , u64 , usize |
Integer |
f32 , f64 |
Float |
String |
String |
Option<T> |
T or nil |
(T, U) , (T, U, V) , etc |
[T, U] , [T, U, V] , etc |
Vec<T> |
Array |
std::collections::HashMap<T, U> |
Hash |
minutus::types::RSymbol |
Symbol |
bool |
any object |
MrbData (structs marked by minutus::wrap ) |
corresponding class |
Any value in mruby can be cast to Rust's bool
.
Rust's bool
cast to mruby's true
or false
.
Supported mruby versions
Currently, only 3.1.0 is supported.
You can use mruby_master
feature, but it is not guaranteed to work.
Naming
Minutus is an antonym of Magnus, which means small.