SimConnect SDK in Rust. An opinionated SimConnect Client that encapsulates the C API fully and optimizes for developer experience.

Overview

SimConnect SDK

Crates Documentation CI license Crates.io
An opinionated SimConnect Client that encapsulates the C API fully and optimizes for developer experience.

Usage

[dependencies]
simconnect-sdk = { version = "0.2", features = ["derive"] }
use simconnect_sdk::{Notification, SimConnect, SimConnectObject};

/// A data structure that will be used to receive data from SimConnect.
/// See the documentation of `SimConnectObject` for more information on the arguments of the `simconnect` attribute.
#[derive(Debug, Clone, SimConnectObject)]
#[simconnect(period = "second")]
#[allow(dead_code)]
struct AirplaneData {
    #[simconnect(name = "TITLE")]
    title: String,
    #[simconnect(name = "CATEGORY")]
    category: String,
    #[simconnect(name = "PLANE LATITUDE", unit = "degrees")]
    lat: f64,
    #[simconnect(name = "PLANE LONGITUDE", unit = "degrees")]
    lon: f64,
    #[simconnect(name = "PLANE ALTITUDE", unit = "feet")]
    alt: f64,
    #[simconnect(name = "SIM ON GROUND")]
    sim_on_ground: bool,
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = SimConnect::new("Receiving data example");

    match client {
        Ok(mut client) => {
            let mut notifications_received = 0;

            loop {
                let notification = client.get_next_dispatch()?;

                match notification {
                    Some(Notification::Open) => {
                        println!("Connection opened.");

                        // After the connection is successfully open, we register the struct
                        client.register_object::<AirplaneData>()?;
                    }
                    Some(Notification::Object(data)) => {
                        if let Ok(airplane_data) = AirplaneData::try_from(&data) {
                            println!("{airplane_data:?}");

                            notifications_received += 1;

                            // After we have received 10 notifications, we unregister the struct
                            if notifications_received > 10 {
                                client.unregister_object::<AirplaneData>()?;
                                println!("Subscription stopped.");
                                break;
                            }
                        }
                    }
                    _ => (),
                }

                // sleep for about a frame to reduce CPU usage
                std::thread::sleep(std::time::Duration::from_millis(16));
            }
        }
        Err(e) => {
            println!("Error: {e:?}")
        }
    }

    Ok(())
}

See more examples.

Contributing

Contributions are welcome and encouraged! See CONTRIBUTING.md.

Supported features

See FEATURES.md.

Credits

Inspired by rylev/msfs2020 and Sequal32/simconnect-rust.

Comments
  • Bump bindgen from 0.60.1 to 0.61.0

    Bump bindgen from 0.60.1 to 0.61.0

    Bumps bindgen from 0.60.1 to 0.61.0.

    Changelog

    Sourced from bindgen's changelog.

    0.61.0

    Released 2022/10/16

    Added

    • new feature: --sort-semantically flag to sort the output in a predefined manner [(#1743)].
    • new feature: Bindgen::emit_warnings method to emit warnings to stderr in build scripts.
    • new feature: --newtype-global-enum flag to generate enum variants as global constants.
    • new feature: --default-non-copy-union-style flag to set the default style of code used to generate unions with non-Copy members.
    • new feature: --bindgen-wrapper-union flag to mark any union that matches a regex and has a non-Copy member to use a bindgen-generated wrapper for its fields.
    • new feature: --manually-drop-union flag to mark any union that matches a regex and has a non-Copy member to use ManuallyDrop.
    • new feature: --merge-extern-blocks flag to merge several extern blocks that have the same ABI.
    • new feature: --no-size_t-is-usize flag to not bind size_t as usize.
    • new feature: Builder implements Clone.

    Changed

    • clap and regex have been updated, new msrv is 1.57.
    • The --enable-function-attribute-detection flag is also used to detect diverging functions so the generated bindings use ! as the return type.
    • The --size_t-is-usize flag is enabled by default.
    • Unused type aliases for <stdint.h> types are no longer emitted.
    • The blocklist options now can be used to block objective-C methods.
    • The core::ffi module is used the sized raw integer types instead of std::os::raw if the Rust target version is 1.64 or higher and the --use-core flag is enabled.
    • The bindgen CLI utility must be installed using cargo install bindgen-cli now.
    • Using bindgen as a library no longer pulls clap and any other CLI related dependencies.

    Fixed

    • Const correctness of incomplete arrays has been fixed. (#2301)
    • C++ inline namespaces don't panic. (#2294)

    [(#1743)]: rust-lang/rust-bindgen#1743

    Commits
    • 784d3e8 bindgen-cli v0.61.0
    • adb178a Specify readme.
    • 4f9b970 v0.61.0
    • 142f62a ci: clippy fixes.
    • c424e03 Add a few missing changelog entries.
    • 2c01810 Remove no-longer-correct include entry in Cargo.toml.
    • 6f6f9fb Move the csmith-fuzzing directory to the top level.
    • 17dd093 Handle incomplete external array constants
    • 626797b Merge pull request #2302 from ferrous-systems/clonable-builder
    • d241e95 Merge pull request #2299 from ferrous-systems/more-robust-postprocessing
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • Bump syn from 1.0.103 to 1.0.104

    Bump syn from 1.0.103 to 1.0.104

    Bumps syn from 1.0.103 to 1.0.104.

    Commits
    • 78fa618 Release 1.0.104
    • e054b03 Merge pull request #1244 from dtolnay/isnone
    • 3a0406d Make PathArguments::is_none() public
    • ac1dbf5 Time out workflows after 45 minutes
    • f510eb0 Update test suite to nightly-2022-11-25
    • 20087fc Update test suite to nightly-2022-11-24
    • dbc86fe Suppress "emit":"dep-info" json from syn-test-suite-feature-check
    • 1e82272 Fix renamed let_underscore_drop lint
    • 754236d Update test suite to nightly-2022-11-23
    • 4245c41 Update test suite to nightly-2022-11-19
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump bindgen from 0.61.0 to 0.62.0

    Bump bindgen from 0.61.0 to 0.62.0

    Bumps bindgen from 0.61.0 to 0.62.0.

    Changelog

    Sourced from bindgen's changelog.

    0.62.0

    Added

    • new feature: --override-abi flag to override the ABI used by functions matching a regular expression.
    • new feature: allow using the C-unwind ABI in --override-abi on nightly rust.

    Changed

    • Regex inputs are sanitized so alternation (a|b) is handled correctly but wildcard patterns (*) are now considered invalid.
    • the ParseCallbackstrait does not require to implement UnwindSafe.
    • the Builder::parse_callbacks method no longer overwrites previously added callbacks and composes them in a last-to-first manner.
    • any generated rust code containing unsafe operations inside unsafe functions is wrapped in unsafe blocks now.

    Fixed

    • Various issues with upcoming clang/libclang versions have been fixed.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump syn from 1.0.102 to 1.0.103

    Bump syn from 1.0.102 to 1.0.103

    Bumps syn from 1.0.102 to 1.0.103.

    Release notes

    Sourced from syn's releases.

    1.0.103

    Commits
    • c29c2ab Release 1.0.103
    • 8e81cad Merge pull request #1237 from dtolnay/partialord
    • 8db5adb Ignore cast_possible_wrap pedantic clippy lint
    • f6f7d8a Restrict PartialOrd comparison to only tokens in the same buffer
    • 8dd9b01 Touch up PR 1236
    • 2b3f742 Merge pull request #1236 from CAD97/cursor-cmp
    • f6a43aa Handle the case where verbatim enters a None group
    • e9fb6a9 Implement PartialOrd for Cursor
    • 26a605e Add test for Item::Verbatim splitting a None group
    • a807b16 Update test suite to nightly-2022-10-13
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump syn from 1.0.103 to 1.0.105

    Bump syn from 1.0.103 to 1.0.105

    Bumps syn from 1.0.103 to 1.0.105.

    Release notes

    Sourced from syn's releases.

    1.0.105

    • Improve parse errors related to dyn and impl type syntax (#1245)

    1.0.104

    • Add PathArguments::is_none()
    Commits
    • 998e863 Release 1.0.105
    • 02e2a21 Merge pull request #1247 from dtolnay/punctdrop
    • 9113ad0 Help infer may_dangle on type parameter of Punctuated iterator Drop impls
    • 3eaa443 Add regression test for issue 1246
    • 17f9a5c Merge pull request #1245 from dtolnay/bounds
    • db874dd Improve dyn/impl-related parse errors
    • b8b0761 Move TypeParamBound parse loop to associated function
    • 3e915e5 Clean up naming in rustc syntax tree manipulation
    • ecacc47 Import token::Lit now there's no conflict with MetaItemLit
    • 2647b2a Update test suite to nightly-2022-11-29
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump trybuild from 1.0.71 to 1.0.72

    Bump trybuild from 1.0.71 to 1.0.72

    Bumps trybuild from 1.0.71 to 1.0.72.

    Release notes

    Sourced from trybuild's releases.

    1.0.72

    • Fix a warning when using trybuild from a test-only Cargo package, i.e. without a library target (#208)
    Commits
    • 8d2c9e5 Release 1.0.72
    • cf55d34 Merge pull request #209 from dtolnay/cratetypes
    • 96764d0 Avoid enabling lib features when not depending on the lib
    • 280f22c Recognize when the current package has no lib target
    • e734d1c Time out workflows after 45 minutes
    • 7369d42 Fix renamed let_underscore_drop lint
    • bfbb075 Resolve clippy lints up to rust 1.45
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump bindgen from 0.62.0 to 0.63.0

    Bump bindgen from 0.62.0 to 0.63.0

    Bumps bindgen from 0.62.0 to 0.63.0.

    Changelog

    Sourced from bindgen's changelog.

    0.63.0

    Added

    Changed

    • Only wrap unsafe operations in unsafe blocks if the --wrap_unsafe_ops option is enabled.
    • Replace the name: &str argument for ParseCallbacks::add_derives by info: DeriveInfo.
    • All the rust targets equal or lower than 1.30 are being deprecated and will be removed in the future. If you have a good reason to use any of these targets, please report it in the issue tracker.

    Removed

    • The following deprecated methods and their equivalent CLI arguments were removed: whitelist_recursively, hide_type, blacklist_type, blacklist_function, blacklist_item, whitelisted_type, whitelist_type, whitelist_function, whitelisted_function, whitelist_var, whitelisted_var, unstable_rust.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.2.1)
  • v0.2.1(Oct 29, 2022)

    Added

    • #[derive(PartialEq)] has been added to Condition, DataType, FacilityType, NotificationGroup, Period, ViewType, ClientEvent, SystemEventRequest and SystemEvent.
    • #[derive(Eq)] has been added to Condition, DataType, FacilityType, NotificationGroup, Period, ViewType, ClientEvent and SystemEventRequest.

    Changed

    • The GitHub repository has been renamed from mihai-dinculescu/simconnect-sdk to mihai-dinculescu/simconnect-sdk-rs.
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Oct 29, 2022)

    Added

    • Notification::SystemEvent, SystemEventRequest and SystemEvent have been added. System Events can be subscribed to by using SimConnect::subscribe_to_system_event and unsubscribed from by using SimConnect::unsubscribe_from_system_event.

    Changed

    • Notification::Event has been renamed to Notification::ClientEvent.
    • Event has been renamed to ClientEvent and marked as non_exhaustive.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.3(Oct 24, 2022)

    Changed

    • SimConnect::get_next_dispatch will now return an error of type SimConnectError::UnimplementedMessageType instead of panicking on unrecognized notification types.
    • SimConnect::get_next_dispatch will now return an error of type SimConnectError::SimConnectException instead of Notification::Exception.
    • SimConnectError::SimConnectUnrecognizedEvent has been renamed to SimConnectError::UnimplementedEventType.
    • #[non_exhaustive] has been added to the SimConnectError and Notification enums.
    • The tracing information has been adjusted to be at the info and debug levels instead of info.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Oct 22, 2022)

  • v0.1.1(Oct 21, 2022)

  • v0.1.0(Oct 20, 2022)

Owner
Mihai Dinculescu
Mihai Dinculescu
Ecosystem of libraries and tools for writing and executing extremely fast GPU code fully in Rust.

Ecosystem of libraries and tools for writing and executing extremely fast GPU code fully in Rust.

Riccardo D'Ambrosio 2k Dec 5, 2022
Ecosystem of libraries and tools for writing and executing fast GPU code fully in Rust.

The Rust CUDA Project An ecosystem of libraries and tools for writing and executing extremely fast GPU code fully in Rust Guide | Getting Started | Fe

Rust GPU 2k Nov 28, 2022
A high performance python technical analysis library written in Rust and the Numpy C API.

Panther A efficient, high-performance python technical analysis library written in Rust using PyO3 and rust-numpy. Indicators ATR CMF SMA EMA RSI MACD

Greg 209 Nov 18, 2022
Network-agnostic, high-level game networking library for client-side prediction and server reconciliation.

WARNING: This crate currently depends on nightly rust unstable and incomplete features. crystalorb Network-agnostic, high-level game networking librar

Ernest Wong 170 Nov 12, 2022
Rust bindings for the C++ api of PyTorch.

tch-rs Rust bindings for the C++ api of PyTorch. The goal of the tch crate is to provide some thin wrappers around the C++ PyTorch api (a.k.a. libtorc

Laurent Mazare 2.2k Dec 2, 2022
Example of Rust API for Machine Learning

rust-machine-learning-api-example Example of Rust API for Machine Learning API example that uses resnet224 to infer images received in base64 and retu

vaaaaanquish 16 Oct 3, 2022
Rust API to run predictions with YoloV5 models.

YoloV5-API [WIP] API to run inferences with YoloV5 models. Written in Rust, based on OpenCV 4.5.5 If you need a C++ version, check my C++ Yolov5-API R

Mauro Sciancalepore 13 Oct 29, 2022
Proof of concept for a web API that can export 3MF files from parametric OpenSCAD models

Model API About A proof of concept for a web API that can export 3MF files from a parametric OpenSCAD model. A typical use would be to have a form on

Hanno Braun 4 Jul 23, 2022
Robust and Fast tokenizations alignment library for Rust and Python

Robust and Fast tokenizations alignment library for Rust and Python

Yohei Tamura 12 Oct 15, 2022
Narwhal and Tusk A DAG-based Mempool and Efficient BFT Consensus.

This repo contains a prototype of Narwhal and Tusk. It supplements the paper Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus.

Facebook Research 123 Nov 23, 2022
MesaTEE GBDT-RS : a fast and secure GBDT library, supporting TEEs such as Intel SGX and ARM TrustZone

MesaTEE GBDT-RS : a fast and secure GBDT library, supporting TEEs such as Intel SGX and ARM TrustZone MesaTEE GBDT-RS is a gradient boost decision tre

MesaLock Linux 179 Nov 18, 2022
[WIP] An experimental Java-like language and it's virtual machine, for learning Java and JVM.

Sky VM An experimental Java-like language and it's virtual machine, for learning Java and JVM. Dependencies Rust (rust-lang/rust) 2021 Edition, dual-l

Kk Shinkai 2 Jan 3, 2022
Some hacks and failed experiments surrounding nvidia's gamestream protocol and sunshine/moonlight implementations

Sunrise This repository contains a bunch of experiments surrounding the nvidia gamestream protocol and reimplementations in the form of sunshine and m

Victoria Brekenfeld 3 Nov 28, 2022
Msgpack serialization/deserialization library for Python, written in Rust using PyO3, and rust-msgpack. Reboot of orjson. msgpack.org[Python]

ormsgpack ormsgpack is a fast msgpack library for Python. It is a fork/reboot of orjson It serializes faster than msgpack-python and deserializes a bi

Aviram Hassan 132 Nov 30, 2022
Distributed compute platform implemented in Rust, and powered by Apache Arrow.

Ballista: Distributed Compute Platform Overview Ballista is a distributed compute platform primarily implemented in Rust, powered by Apache Arrow. It

Ballista 2.3k Nov 30, 2022
Tensors and differentiable operations (like TensorFlow) in Rust

autograd Differentiable operations and tensors backed by ndarray. Motivation Machine learning is one of the field where Rust lagging behind other lang

Ryo ASAKURA 401 Nov 22, 2022
A fast, safe and easy to use reinforcement learning framework in Rust.

RSRL (api) Reinforcement learning should be fast, safe and easy to use. Overview rsrl provides generic constructs for reinforcement learning (RL) expe

Thomas Spooner 137 Nov 26, 2022
Rust implementation of real-coded GA for solving optimization problems and training of neural networks

revonet Rust implementation of real-coded genetic algorithm for solving optimization problems and training of neural networks. The latter is also know

Yury Tsoy 19 Aug 11, 2022
A real-time implementation of "Ray Tracing in One Weekend" using nannou and rust-gpu.

Real-time Ray Tracing with nannou & rust-gpu An attempt at a real-time implementation of "Ray Tracing in One Weekend" by Peter Shirley. This was a per

null 87 Oct 28, 2022