All Projects → anima-engine → Mrusty

anima-engine / Mrusty

Licence: mpl-2.0
mruby safe bindings for Rust

Programming Languages

ruby
36898 projects - #4 most used programming language
rust
11053 projects

Labels

Projects that are alternatives of or similar to Mrusty

Silentbridge
Silentbridge is a toolkit for bypassing 802.1x-2010 and 802.1x-2004.
Stars: ✭ 136 (-29.53%)
Mutual labels:  bridge
Scapix
Scapix Language Bridge
Stars: ✭ 171 (-11.4%)
Mutual labels:  bridge
Geyser
A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.
Stars: ✭ 2,851 (+1377.2%)
Mutual labels:  bridge
Rogcat
A `adb logcat` wrapper
Stars: ✭ 137 (-29.02%)
Mutual labels:  bridge
Rayo.js
Micro framework for Node.js
Stars: ✭ 170 (-11.92%)
Mutual labels:  bridge
Twig Bridge
Provides integration for Twig with various Symfony components.
Stars: ✭ 2,170 (+1024.35%)
Mutual labels:  bridge
Rialto
Manage Node resources with PHP
Stars: ✭ 128 (-33.68%)
Mutual labels:  bridge
Ws Tcp Relay
A simple relay between WebSocket clients and TCP servers
Stars: ✭ 186 (-3.63%)
Mutual labels:  bridge
Esp32 Serial Bridge
Wifi to 3x Serial bridge based on a ESP32
Stars: ✭ 169 (-12.44%)
Mutual labels:  bridge
Cppsharp
Tools and libraries to glue C/C++ APIs to high-level languages
Stars: ✭ 2,221 (+1050.78%)
Mutual labels:  bridge
Strimzi Kafka Bridge
Apache Kafka bridge
Stars: ✭ 137 (-29.02%)
Mutual labels:  bridge
Airconnect
Use AirPlay to stream to UPnP/Sonos & Chromecast devices
Stars: ✭ 2,349 (+1117.1%)
Mutual labels:  bridge
Mautrix Facebook
A Matrix-Facebook Messenger puppeting bridge
Stars: ✭ 172 (-10.88%)
Mutual labels:  bridge
Foxy
A fast, reliable, and secure NPM/Yarn bridge for Composer
Stars: ✭ 137 (-29.02%)
Mutual labels:  bridge
Monolog Bridge
Provides integration for Monolog with various Symfony components.
Stars: ✭ 2,238 (+1059.59%)
Mutual labels:  bridge
Designpatterns
🔑Elements of Reusable Object-Oriented Software🔓is a software engineering book describing software design patterns. The book's authors are Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides with a foreword by Grady Booch.
Stars: ✭ 134 (-30.57%)
Mutual labels:  bridge
Phpunit Bridge
Provides utilities for PHPUnit, especially user deprecation notices management.
Stars: ✭ 2,150 (+1013.99%)
Mutual labels:  bridge
Bridge.
Minecraft Add-on Editor | We strive to provide the best development experience possible
Stars: ✭ 193 (+0%)
Mutual labels:  bridge
Openmqttgateway
MQTT gateway for ESP8266, ESP32, Sonoff RF Bridge or Arduino with bidirectional 433mhz/315mhz/868mhz, Infrared communications, BLE, Bluetooth, beacons detection, mi flora, mi jia, LYWSD02, LYWSD03MMC, Mi Scale, TPMS, BBQ thermometer compatibility, SMS & LORA.
Stars: ✭ 2,413 (+1150.26%)
Mutual labels:  bridge
Webrtc To Sip
Setup for a WEBRTC client and Kamailio server to call SIP clients
Stars: ✭ 173 (-10.36%)
Mutual labels:  bridge

mrusty. mruby safe bindings for Rust

Build Status Coverage Status Cargo Crate

mrusty lets you:

  • run Ruby 1.9 files with a very restricted API (without having to install Ruby)
  • reflect Rust structs and enums in mruby and run them

It does all this in a safely neat way, while also bringing spec testing and a REPL to the table.

Documentation

Example

A very simple example of a Container struct which will be passed to mruby and which is perfectly callable.

// mrusty_class!
#[macro_use]
extern crate mrusty;

use mrusty::{Mruby, MrubyImpl};

let mruby = Mruby::new();

struct Cont {
    value: i32
}

// Cont should not flood the current namespace. We will add it with require.
mrusty_class!(Cont, "Container", {
    // Converts mruby types automatically & safely.
    def!("initialize", |v: i32| {
        Cont { value: v }
    });

    // Converts slf to Cont.
    def!("value", |mruby, slf: (&Cont)| {
        mruby.fixnum(slf.value)
    });
});

// Add file to the context, making it requirable.
mruby.def_file::<Cont>("cont");

// Add spec testing.
describe!(Cont, "
  context 'when containing 1' do
    it 'returns 1 when calling #value' do
      expect(Container.new(1).value).to eql 1
    end
  end
");

let result = mruby.run("
  require 'cont'

  Container.new(3).value
").unwrap(); // Returns Value.

println!("{}", result.to_i32().unwrap()); // Prints "3".
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].