Rust SDK for Stellar XDR.

Overview

rs-stellar-xdr

Rust SDK for Stellar XDR.

This repository contains code that is in early development, incomplete, not tested, and not recommended for use. The API is unstable, experimental, and is receiving breaking changes frequently.

Usage

Include in your toml:

stellar-xdr = { git = "https://github.com/stellar/rs-stellar-xdr", rev = "..." }

The crate has two features and three tiers of functionality:

  1. std – The std feature provides all functionality (types, encode, decode), and is the default feature set.
  2. alloc – The alloc feature uses Box and Vec types for recursive references and arrays, and is automatically enabled if the std feature is enabled. The default global allocator is used. Support for a custom allocator will be added in #39. No encode or decode capability exists, only types. Encode and decode capability will be added in #46.
  3. If std or alloc are not enabled recursive and array types requires static lifetime values. No encode or decode capability exists. Encode and decode capability will be added in #47.
Comments
  • Test Fwk: Add function for constructing an ScMap in order

    Test Fwk: Add function for constructing an ScMap in order

    Semantically, an ScMap is an ordered structure to present efficient look-up. This is not encoded in the XDR of course, so it is possible to construct an ScMap out of order. Having encountered this issue yesterday, I feel confident it is (a) a foot-gun and (b) quite difficult to debug when it occurs.

    Let's make it impossible--or at the very least difficult--to construct an ScMap out of order.

    bug 
    opened by jonjove 11
  • Expand `ScStatus` type, include various error codes

    Expand `ScStatus` type, include various error codes

    What

    [TODO: Short statement about what is changing.]

    Why

    This is needed for host to support fallible version of contract calling -- returning a substantial error code instead of trapping, which allows the calling code to continue running.

    Known limitations

    [TODO or N/A]

    opened by jayz22 5
  • CAP-52 XDR

    CAP-52 XDR

    What

    Add the XDR for CAP-52, specifically InvokeHostFunctionOp.

    Why

    Required to support CAP-52 in stellar/rs-stellar-contract-env and stellar/stellar-core.

    Known limitations

    N/A

    opened by jonjove 5
  • Make XDR types that wrap builtin types type aliases

    Make XDR types that wrap builtin types type aliases

    XDR typedefs are being rendered as composites but it would make usage of the XDR less verbose if they were rendered as type aliases. There are tradeoffs, but this is worth considering for developer ergonomics.

    For example:

    Typedefs currently render as composites like so:

    #[derive(Clone, Debug, Hash, PartialEq, Eq)]
    pub struct AccountId(pub PublicKey);
    
    #[derive(Clone, Debug, Hash, PartialEq, Eq)]
    pub enum PublicKey {
        Ed25519(Uint256),
    }
    
    #[derive(Clone, Debug, Hash, PartialEq, Eq)]
    pub struct Uint256(pub [u8; 32]);
    
    AccountId(PublicKey::Ed25519(Uint256([...])));
    

    Typedefs that render as aliases would reduce some of the verbosity like so:

    pub type AccountId = PublicKey;
    
    #[derive(Clone, Debug, Hash, PartialEq, Eq)]
    pub enum PublicKey {
        Ed25519(Uint256),
    }
    
    pub type Uint256 = [u8; 32];
    
    AccountId::Ed25519([...]);
    

    The benefits are:

    1. Convenience and reduced verbosity.

    2. It will be easier to support some updates to the XDR that are binary backwards compatible. For example, XDR would allow us to redefine the AccountId as an extension of PublicKey, by adding new cases only valid for AccountIds and not PublicKeys. The AccountId would convert from an alias into a complete definition and most code that uses the AccountId would remain unchanged assuming the existing arms retained their existing names.

    There are however tradeoffs:

    1. There is a loss of specificity. A developer will be able to pass a PublicKey as an AccountId without any conversion. An AccountId is always a PublicKey so to some degree this is maybe irrelevant, but maybe this allows for some class of bugs.

    2. Lack of clarity. As can be seen in the first example above it is very clear that the AccountId is a public key, where-as it is ambiguous in the second example where the AccountId is described as an Ed25519.

    3. It will not be possible to add functions or implement traits only for AccountIds. Any added functions will apply to the aliased type also.

    opened by leighmcculloch 5
  • Add stellar-xdr bin

    Add stellar-xdr bin

    What

    Add a stellar-xdr binary to the stellar-xdr crate that can decode XDR using the XDR in the crate.

    Also make it possible to import the lib crate with both XDRs, which is now the default, and specifying feature curr or next results in current behavior.

    Why

    So that every release of stellar-xdr is accompanied by a tool that can decode XDR created by the crate.

    I initially created this tool separately, but it occurred to me that unless it is inside this crate, there will be versions of this crate that don't have a corresponding CLI that can decode XDR. It would be convenient if this is true though.

    The CLI dependencies and code are added behind a feature such that they do not pollute the dependency graph of anyone importing the crate for typical library usage.

    opened by leighmcculloch 4
  • Support Arbitrary

    Support Arbitrary

    Obviously this needs to move upstream to xdrgen (I will post a version of the minimal change needed there too) but this is a sketch of what support for Arbitrary looks like. Very straightforward -- the only question I think I have is whether @leighmcculloch you'd like it to be cfg'ed behind another feature or not. Argument for feature-cfg'ing is that obviously "it's more code" people might not want to compile; argument against is that "every feature makes a larger powerset".

    opened by graydon 2
  • Add Validate impl for ScMap and Map ScVal variant that can be invalid

    Add Validate impl for ScMap and Map ScVal variant that can be invalid

    What

    Add Validate trait and impl for ScMap and ScVal::Map variant that can be invalid regardless of any other context.

    Why

    Facilitate users of the XDR validating that the ScVal types are valid. There are likely to be multiple places that we'll need to validate these XDR values. For map types this is especially easy to mess up, and will be one thing in the toolbox that we use to prevent footguns so that users do not see signature failures for transactions that they submit a misordered map for that they signed for.

    Follow up to https://github.com/stellar/rs-stellar-xdr/pull/111 Close #113 https://github.com/stellar/rs-stellar-xdr/issues/98

    Known limitations

    [TODO or N/A]

    opened by leighmcculloch 2
  • Check generated code matches .x files in CI

    Check generated code matches .x files in CI

    What

    Check generated code matches .x files in CI.

    Why

    It's easy to miss generating the latest code.

    Close https://github.com/stellar/rs-stellar-xdr/issues/80

    Known limitations

    [TODO or N/A]

    opened by leighmcculloch 2
  • Missing must_use tags

    Missing must_use tags

    I got several errors like

    error: this method could have a `#[must_use]` attribute
        --> src/curr.rs:7865:5
         |
    7865 |     pub fn iter(&self) -> Iter<'_, PeerStats> {
         |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add the attribute: `#[must_use] pub fn iter(&self) -> Iter<'_, PeerStats>`
         |
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate
    

    when generating from the XDR fields. The error always occurs on pub fn iter.

    bug 
    opened by jonjove 2
  • Implement Default for everything

    Implement Default for everything

    Unfortunately derive(Default) only works on structs, but xdrpp produces a default constructor for tagged unions which default-constructs the discriminant (which I think 0-initializes the discriminant enum via scalar initialization in C++ which is maybe a touch risky except in practice we always define a 0-valued discriminant). In rust's case you'd have to pick one but picking the first enum case is probably harmless and it's frequently useful -- it's just "writing what the user would write in that case, transitively..."

    opened by graydon 2
  • Anonymous structs inside unions can be flattened inside the union

    Anonymous structs inside unions can be flattened inside the union

    Xdrgen currently generates a new struct for every union arm that contains an anonymous struct. This makes sense for most languages it generates for because most languages cannot represent anonymous struct-like types within a union arm, without defining a new type/class/struct to represent those fields.

    However, rust can represent a struct as a union arm without needing to define a new struct separately.

    It would reduce the verbosity of using the Rust XDR if we could flatten anonymous struct types into the union definition itself.

    It may not be practical to make this change as it may require significantly changing parts of xdrgen that are shared with all language generators.

    opened by leighmcculloch 2
  • Parallelize feature builds and tests across instances

    Parallelize feature builds and tests across instances

    What

    Break up the 148 build configurarations into groups of builds to run in parallel.

    Why

    Running all the builds in serial is slow. 148 builds is a lot of compiles and linker runs.

    Running all the builds in parallel is also slow. GitHub Actions can be slow to provision so many instances, although it can do it, this build will be slower than the first.

    https://github.com/taiki-e/cargo-hack/pull/175 adds the ability to cargo-hack to get the commands it will run, and then we can group those commands and run them across multiple instances.

    opened by leighmcculloch 0
  • Tests on main branch are taking 45mins and timing out

    Tests on main branch are taking 45mins and timing out

    The tests on the main branch no longer pass because they take 45mins and time out.

    This doesn't happen on PRs because we speed PRs up by grouping features together for testing.

    It's probably time for us to split the test runs over multiple CI jobs.

    opened by leighmcculloch 0
  • Add test suite to ensure ScVal and RawVal order consistency

    Add test suite to ensure ScVal and RawVal order consistency

    It's probably not something we can conveniently do right now. It'll probably be easier to do this once something like https://github.com/stellar/rs-stellar-contract-env/pull/81 is completed.

    opened by leighmcculloch 0
Releases(v0.0.11)
  • v0.0.11(Dec 8, 2022)

    What's Changed

    • Fix apt-get install by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/218
    • Bump version to 0.0.11 by @github-actions in https://github.com/stellar/rs-stellar-xdr/pull/219

    Full Changelog: https://github.com/stellar/rs-stellar-xdr/compare/v0.0.10...v0.0.11

    Source code(tar.gz)
    Source code(zip)
    stellar-xdr-0.0.11-aarch64-apple-darwin(8.19 MB)
    stellar-xdr-0.0.11-aarch64-unknown-linux-gnu(12.76 MB)
    stellar-xdr-0.0.11-x86_64-apple-darwin(7.89 MB)
    stellar-xdr-0.0.11-x86_64-pc-windows-msvc.exe(6.45 MB)
    stellar-xdr-0.0.11-x86_64-unknown-linux-gnu(12.50 MB)
  • v0.0.10(Dec 8, 2022)

    What's Changed

    • Remove a few unnecessary dependencies by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/214
    • Upgrade crate-git-revision to 0.0.4 by @brson in https://github.com/stellar/rs-stellar-xdr/pull/213
    • Bump version to 0.0.10 by @github-actions in https://github.com/stellar/rs-stellar-xdr/pull/217

    Full Changelog: https://github.com/stellar/rs-stellar-xdr/compare/v0.0.9...v0.0.10

    Source code(tar.gz)
    Source code(zip)
  • v0.0.9(Dec 1, 2022)

    What's Changed

    • Fix embedding xdr version by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/209
    • Add publishing binaries to GitHub Releases by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/208
    • Bump version to 0.0.9 by @github-actions in https://github.com/stellar/rs-stellar-xdr/pull/211

    Full Changelog: https://github.com/stellar/rs-stellar-xdr/compare/v0.0.8...v0.0.9

    Source code(tar.gz)
    Source code(zip)
    stellar-xdr-0.0.9-aarch64-apple-darwin(8.29 MB)
    stellar-xdr-0.0.9-aarch64-unknown-linux-gnu(12.94 MB)
    stellar-xdr-0.0.9-x86_64-apple-darwin(7.99 MB)
    stellar-xdr-0.0.9-x86_64-pc-windows-msvc.exe(6.63 MB)
    stellar-xdr-0.0.9-x86_64-unknown-linux-gnu(12.68 MB)
  • v0.0.8(Dec 1, 2022)

    What's Changed

    • Fix build by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/186
    • Update rust-version by @github-actions in https://github.com/stellar/rs-stellar-xdr/pull/185
    • Rust-XDR for contract deployment changes specified in CAP-46-02 by @dmkozh in https://github.com/stellar/rs-stellar-xdr/pull/187
    • Add Lib version and XDR version to library (submodule edition) by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/189
    • Update git submodule locations by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/190
    • Update to transition from BigInt to {ui}128 by @graydon in https://github.com/stellar/rs-stellar-xdr/pull/191
    • Update crate-git-revision to 0.0.3 by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/193
    • Change version to be a struct by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/194
    • pub mod int128_helpers by @graydon in https://github.com/stellar/rs-stellar-xdr/pull/192
    • Update xdr/next to 026c9cd and regenerate by @graydon in https://github.com/stellar/rs-stellar-xdr/pull/195
    • Update xdrgen by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/196
    • Bump version to 0.0.8 by @github-actions in https://github.com/stellar/rs-stellar-xdr/pull/197
    • Update xdrgen by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/199
    • Fix xdrgen version by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/200
    • Add stellar-xdr bin by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/198
    • Fix examples in docs by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/201
    • Render friendly errors when errors occur in CLI by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/203
    • Always group ancilliary features in tests by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/206
    • Run publish dry run on main by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/207

    New Contributors

    • @dmkozh made their first contribution in https://github.com/stellar/rs-stellar-xdr/pull/187

    Full Changelog: https://github.com/stellar/rs-stellar-xdr/compare/v0.0.7...v0.0.8

    Binaries for this release were published retroactively in https://github.com/stellar/rs-stellar-xdr/pull/208.

    Source code(tar.gz)
    Source code(zip)
    stellar-xdr-0.0.8-aarch64-apple-darwin(8.29 MB)
    stellar-xdr-0.0.8-aarch64-unknown-linux-gnu(12.93 MB)
    stellar-xdr-0.0.8-x86_64-apple-darwin(7.99 MB)
    stellar-xdr-0.0.8-x86_64-pc-windows-msvc.exe(6.63 MB)
    stellar-xdr-0.0.8-x86_64-unknown-linux-gnu(12.68 MB)
  • v0.0.7(Nov 2, 2022)

    What's Changed

    • Update xdrgen and get BytesM/StringM by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/181
    • Use prebuilt binaries in ci by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/182
    • Bump version to 0.0.7 by @github-actions in https://github.com/stellar/rs-stellar-xdr/pull/184

    Full Changelog: https://github.com/stellar/rs-stellar-xdr/compare/v0.0.6...v0.0.7

    Source code(tar.gz)
    Source code(zip)
  • v0.0.6(Oct 5, 2022)

    What's Changed

    • Improve caching of Rust build artifacts and update workflows by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/154
    • Remove bump-version make target by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/155
    • Set the target-dir for cargo installs by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/156
    • Separate build and test in ci by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/157
    • Add publish dry run to build on release branches by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/158
    • Separate the publish workflows and use new versions by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/159
    • Update xdr by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/162
    • Add release documentation by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/160
    • Remove ScHash and PublicKey from SCObject by @jayz22 in https://github.com/stellar/rs-stellar-xdr/pull/163
    • Update xdr by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/164
    • Add error enum to the contract spec by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/165
    • Update for host function success scval by @graydon in https://github.com/stellar/rs-stellar-xdr/pull/166
    • Update rust-version by @github-actions in https://github.com/stellar/rs-stellar-xdr/pull/167
    • Regenerate xdr by @sisuresh in https://github.com/stellar/rs-stellar-xdr/pull/168
    • Update XDR and xdrgen by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/169
    • Update XDR and xdrgen by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/170
    • Rename HOST_FN_CREATE_CONTRACT_WITH_SOURCE to HOST_FN_CREATE_CONTRACT_WITH_SOURCE_ACCOUNT by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/171
    • Update XDR by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/172
    • Update XDR by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/173
    • Update XDR by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/174
    • Update XDR by @sisuresh in https://github.com/stellar/rs-stellar-xdr/pull/175
    • Update XDR and xdrgen by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/176
    • Update xdr by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/177
    • Add functions for reading XDR to the end of the stream by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/178
    • Add AccountId ScVal conversions by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/179
    • Bump version to 0.0.6 by @github-actions in https://github.com/stellar/rs-stellar-xdr/pull/180

    Full Changelog: https://github.com/stellar/rs-stellar-xdr/compare/v0.0.2...v0.0.6

    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(Aug 31, 2022)

    What's Changed

    • Add build cache in ci by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/129
    • Update cargo-hack by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/130
    • Fix complete job in ci by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/131
    • Change BINARY to BYTES by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/134
    • Fix ci complete job (again) by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/135
    • Support Arbitrary by @graydon in https://github.com/stellar/rs-stellar-xdr/pull/132
    • Add ci workflow to set min rust-version by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/136
    • Regenerate XDR to get contract code by @jonjove in https://github.com/stellar/rs-stellar-xdr/pull/137
    • Update rust-version by @github-actions in https://github.com/stellar/rs-stellar-xdr/pull/138
    • Add VecM::into_opton, and related fns by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/139
    • Add names to input types in spec functions by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/140
    • Add ContractEvent and ContractEventType definitions from CAP-56 by @jayz22 in https://github.com/stellar/rs-stellar-xdr/pull/141
    • Make contract id on event optional by @sisuresh in https://github.com/stellar/rs-stellar-xdr/pull/142
    • Regenerate from stellar-xdr-next@35f1e4e by @graydon in https://github.com/stellar/rs-stellar-xdr/pull/143
    • Regenerate from stellar-xdr-next@950dcd3 by @graydon in https://github.com/stellar/rs-stellar-xdr/pull/144
    • Add BytesN as type by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/145
    • Add VecM::to_string_lossy by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/146
    • Update next xdr by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/147
    • Update xdr to get spec lib by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/148
    • Impl From<&u64> for ScVal by @jonjove in https://github.com/stellar/rs-stellar-xdr/pull/149
    • Add release jobs by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/150
    • Release by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/151
    • Fix makefile targets for bumping version and publishing by @leighmcculloch in https://github.com/stellar/rs-stellar-xdr/pull/152
    • Bump version to 0.0.2 by @github-actions in https://github.com/stellar/rs-stellar-xdr/pull/153

    New Contributors

    • @github-actions made their first contribution in https://github.com/stellar/rs-stellar-xdr/pull/138

    Full Changelog: https://github.com/stellar/rs-stellar-xdr/compare/v0.0.1...v0.0.2

    Source code(tar.gz)
    Source code(zip)
Owner
Stellar
Stellar
Rust for the Windows App SDK

Rust for the Windows App SDK The windows-app crate makes the Windows App SDK (formerly known as Project Reunion) available to Rust developers.

Microsoft 212 Nov 22, 2022
[Unofficial] Azure SDK for Rust

[Unofficial] Azure SDK for Rust This repository is for the development of the unofficial Azure SDK for Rust. It is unofficial because it is not yet su

Microsoft Azure 390 Dec 30, 2022
First Git on Rust is reimplementation with rust in order to learn about rust, c and git.

First Git on Rust First Git on Rust is reimplementation with rust in order to learn about rust, c and git. Reference project This project refer to the

Nobkz 1 Jan 28, 2022
A stupid macro that compiles and executes Rust and spits the output directly into your Rust code

inline-rust This is a stupid macro inspired by inline-python that compiles and executes Rust and spits the output directly into your Rust code. There

William 19 Nov 29, 2022
Learn-rust - An in-depth resource to learn Rust 🦀

Learning Rust ?? Hello friend! ?? Welcome to my "Learning Rust" repo, a home for my notes as I'm learning Rust. I'm structuring everything into lesson

Lazar Nikolov 7 Jan 28, 2022
A highly modular Bitcoin Lightning library written in Rust. Its Rust-Lightning, not Rusty's Lightning!

Rust-Lightning is a Bitcoin Lightning library written in Rust. The main crate, lightning, does not handle networking, persistence, or any other I/O. Thus, it is runtime-agnostic, but users must implement basic networking logic, chain interactions, and disk storage. More information is available in the About section.

Lightning Dev Kit 850 Jan 3, 2023
Telegram bot help you to run Rust code in Telegram via Rust playground

RPG_BOT (Rust Playground Bot) Telegram bot help you to run Rust code in Telegram via Rust playground Bot interface The bot supports 3 straightforward

TheAwiteb 8 Dec 6, 2022
`Debug` in rust, but only supports valid rust syntax and outputs nicely formatted using pretty-please

dbg-pls A Debug-like trait for rust that outputs properly formatted code Showcase Take the following code: let code = r#" [ "Hello, World!

Conrad Ludgate 12 Dec 22, 2022
Playing with web dev in Rust. This is a sample Rust microservice that can be deployed on Kubernetes.

Playing with web dev in Rust. This is a sample Rust microservice that can be deployed on Kubernetes.

André Gomes 10 Nov 17, 2022
🐀 Building a federated alternative to reddit in rust

Lemmy A link aggregator / Reddit clone for the fediverse. Join Lemmy · Documentation · Report Bug · Request Feature · Releases · Code of Conduct About

LemmyNet 7.2k Jan 3, 2023
Applied offensive security with Rust

Black Hat Rust - Early Access Deep dive into offensive security with the Rust programming language Buy the book now! Summary Whether in movies or main

Sylvain Kerkour 2.2k Jan 2, 2023
Rholang runtime in rust

Rholang Runtime A rholang runtime written in Rust.

Jerry.Wang 17 Sep 23, 2022
Easy-to-use optional function arguments for Rust

OptArgs uses const generics to ensure compile-time correctness. I've taken the liberty of expanding and humanizing the macros in the reference examples.

Jonathan Kelley 37 Nov 18, 2022
A language server for lua written in rust

lua-analyzer lua-analyzer is a lsp server for lua. This is mostly for me to learn the lsp protocol and language analysis so suggestions are helpful. T

null 61 Dec 11, 2022
Rust library that can be reset if you think it's slow

GoodbyeKT Rust library that can be reset if you think it's slow

null 39 Jun 16, 2022
Cargo - The Rust package manager

Cargo downloads your Rust project’s dependencies and compiles your project.

The Rust Programming Language 9.5k Jan 4, 2023
A copypastable guide to implementing simple derive macros in Rust.

A copypastable guide to implementing simple derive macros in Rust. The goal Let's say we have a trait with a getter trait MyTrait {

Imbolc 131 Dec 27, 2022
Rust ABI safe code generator

CGlue offers an easy way to ABI (application binary interface) safety. Just a few annotations and your trait is ready to go!

Auri 142 Jan 2, 2023
An example project demonstrating integration with Rust for the ESP32-S2 and ESP32-C3 microcontrollers.

Rust ESP32 Example An example project demonstrating integration with Rust for the ESP32-S2 and ESP32-C3 microcontrollers.

Espressif Systems 303 Jan 4, 2023