Rust implementation of Surging Object DiGraph (SODG)

Overview

logo

EO principles respected here We recommend IntelliJ IDEA

cargo crates.io PDD status codecov Hits-of-Code Lines of code License docs.rs

This Rust library implements a Surging Object DiGraph (SODG) for reo virtual machine for EO programs.

Here is how you can create a di-graph:

use sodg::Sodg;
use sodg::Hex;
let mut g = Sodg::empty();
g.add(0)?; // add a vertex no.0
g.add(1)?; // add a vertex no.1
g.bind(0, 1, "foo/bar")?; // connect v0 to v1 with label "foo"
g.put(1, Hex::from_str_bytes("Hello, world!"))?; // attach data to v1

Then, you can find a vertex by the label of an edge departing from another vertex:

let id = g.kid(0, "foo")?;
assert_eq!(1, id);

Then, you can find all kids of a vertex:

let kids: Vec<(String, String, u32)> = g.kids(0);
assert_eq!("foo", kids[0].0);
assert_eq!("bar", kids[0].1);
assert_eq!(1, kids[0].2);

Then, you can read the data of a vertex:

let hex: Hex = g.data(1)?;
let num: i64 = hex.to_i64()?;
assert_eq!(42, num);

Then, you can print the graph:

println!("{:?}", g);

Also, you can serialize and deserialize the graph.

Read the documentation.

How to Contribute

First, install Rust and then:

$ cargo test --vv

If everything goes well, fork repository, make changes, send us a pull request. We will review your changes and apply them to the master branch shortly, provided they don't violate our quality standards. To avoid frustration, before sending us your pull request please run cargo test again. Also, run cargo fmt and cargo clippy.

Comments
  • find() with a closure

    find() with a closure

    This is what I would like to be able to do with Sodg.find() function:

    use sodg::Sodg;
    let mut g = Sodg::empty();
    g.add(0).unwrap();
    g.add(1).unwrap();
    g.bind(0, 1, "foo").unwrap();
    let v = g.find(0, "bar", |v, a| "foo").unwrap();
    assert_eq!(1, v);
    

    The closure that I provided to find function expects two parameters: 1) the ID of the vertex where finding algorithm stopped because edge "foo" is absent (v=0), 2) the name of the edge not found (a="bar"). The closure returns an alternative name of the edge and the search algorithm continues from it.

    opened by yegor256 12
  • #20: implement proof-of-concept BFS

    #20: implement proof-of-concept BFS "garbage collection" algorithm

    This is a minimal implementation of a very simple BFS "garbage collection" algorithm. It doesn't support cyclic references, common mark-and-sweep use-cases, and runs on every Sodg::data call, as outlined in (#20).

    opened by UARTman 9
  • Update Rust crate xml-builder to 0.5.1

    Update Rust crate xml-builder to 0.5.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | xml-builder | dependencies | patch | 0.5.0 -> 0.5.1 |


    Release Notes

    cocool97/xml-builder

    v0.5.1

    Fixes standalone attribute to render valid XML

    Thanks to @​bugeats for the PR !


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 7
  • Sodg::full()

    Sodg::full()

    Let's create a new function full() in the Sodg struct:

    pub fn full(&self, v: u32) -> Result<bool>;
    

    It should return FALSE if the data is not yet set. It should not affect the state of taken flag.

    enhancement 
    opened by yegor256 5
  • Update Rust crate serde to 1.0.148

    Update Rust crate serde to 1.0.148

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | serde (source) | dependencies | patch | 1.0.147 -> 1.0.148 |


    Release Notes

    serde-rs/serde

    v1.0.148

    Compare Source

    • Support remote derive for generic types that have private fields (#​2327)

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 5
  • Update Rust crate rstest to 0.16.0

    Update Rust crate rstest to 0.16.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | rstest | dependencies | minor | 0.15.0 -> 0.16.0 |


    Release Notes

    la10736/rstest

    v0.16.0

    Compare Source

    Changed
    • Show TEST START banner only when trace some argument: See #​158 for details.
    • Add values to test name: See #​160 for details.
    Fixed
    • Updated test fixtures to 1.64.0 compiler's error messages.

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 5
  • Implement a number of traits for `Hex`

    Implement a number of traits for `Hex`

    This is a conservative re-implementation of certain Hex methods to fit Rust's standard library traits more easily (#29). The changes can be summarized as:

    • Implemented conversion to Hex using Rust's standard From trait.
    • Moved parse functionality into the FromStr trait. Removed an unwrap from the implementation, allowing for proper parsing error handling.
    • Renamed from_str and from_string to from_str_bytes and from_string_bytes, to make way for the FromStr::from_str method and to make their meaning more clear.
    • Did a more proper implementation of the PartialEq::eq method, removing the need for allocations.
    • Implemented the marker trait Eq, signifying the true equivalence relation, as Hex matches all criteria. This won't have any visible effect on our current code, but might make interfacing with some methods of the standard library easier.

    I'll write up the failed experiments and proposals of what to improve next in the issue.

    opened by UARTman 5
  • #18: revamp Hex

    #18: revamp Hex

    This pull request is a minimal re-implementation of Hex as per my suggestion in #18.

    The only breaking API change is that .bytes is no longer a field, but a method that returns a slice. However, it didn't break anything except the tests, so I don't think changing it will be a problem.

    opened by UARTman 5
  • Update Rust crate anyhow to 1.0.69

    Update Rust crate anyhow to 1.0.69

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | anyhow | dependencies | patch | 1.0.68 -> 1.0.69 |


    Release Notes

    dtolnay/anyhow

    v1.0.69

    Compare Source

    • Documentation improvements

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 4
  • Update Rust crate regex to 1.7.1

    Update Rust crate regex to 1.7.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | regex | dependencies | patch | 1.7.0 -> 1.7.1 |


    Release Notes

    rust-lang/regex

    v1.7.1

    Compare Source

    ================== This release was done principally to try and fix the doc.rs rendering for the regex crate.

    Performance improvements:

    • PERF #​930: Optimize replacen. This also applies to replace, but not replace_all.

    Bug fixes:

    • BUG #​945: Maybe fix rustdoc rendering by just bumping a new release?

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 4
  • Sodg::find_with_closure() must pass

    Sodg::find_with_closure() must pass "self" to the closure

    At the moment it's impossible to get access to the graph from the closure (or I'm doing something wrong):

    use sodg::Sodg;
    let mut g = Sodg::empty();
    g.add(0).unwrap();
    g.add(1).unwrap();
    g.bind(0, 1, "foo").unwrap();
    assert!(g.find(0, "bar").is_err());
    let v = g.find_with_closure(0, "bar", |v, a, b| {
      g.find(123, "hello"); // can't compile this!
      Ok("foo".to_string())
    }).unwrap();
    assert_eq!(1, v);
    

    Let's make it possible somehow to access the graph from the closure. Maybe pass it as the 4th argument to the closure?

    bug 
    opened by yegor256 4
  • slice of Hex

    slice of Hex

    Let's add a new functionality of slicing to Hex, which should take a part of the data and return a new Hex:

    let a = Hex::from_str_bytes("Hello, world!");
    let b = a[5..];
    println!("{b}");
    

    Should print , world!.

    It should be very similar to how slicing works for strings in Rust.

    enhancement 
    opened by yegor256 1
  • clippy is not part of the build/test

    clippy is not part of the build/test

    When I run cargo build or cargo test, the clippy is not running. I have to do it with an extra step: cargo clippy. Would be great to make this style checker part of the build.

    bug 
    opened by yegor256 1
  • test coverage of Hex is pretty low

    test coverage of Hex is pretty low

    Look at this: https://app.codecov.io/gh/objectionary/sodg/blob/master/src/hex.rs We have a few important parts of the code that are not covered by tests at all. Let's add necessary tests.

    bug 
    opened by yegor256 0
  • avoid duplication in Sodg::merge()

    avoid duplication in Sodg::merge()

    Let's modify the function Serge::merge:

    pub fn merge(&mut self, other: Sodg) -> Result<()>;
    

    It should take all vertices from the other SODG and put them into the current one.

    What is important is that duplication must be avoided, using edges. For example, in the current SODG a vertex ν1 is bound to ν2 by the edge "foo". In the other SODG the same vertex ν1 is bound to ν3 with an edge "foo". The edge ν3 should not be created in the current SODG.

    enhancement 
    opened by yegor256 1
Releases(0.0.23)
  • 0.0.23(Feb 2, 2023)

    See #82, release log:

    • 2b0cde81d1770d4cfe27de86571450a32d1548a2 by @yegor256: clippy fix
    • 05a917e17fb9a78b93270ddff53a5df8760b690a by @yegor256: doc
    • 353ed501ff1965300fd87587f4f8448fa7195fa4 by @yegor256: to_dot
    • 82cd72f6aad367101cf3417b5aefbcb7620439b5 by @yegor256: #79 typo
    • 4b3d2fded0960a1cf55c4ae89b74da9df8656c2e by @yegor256: #79 gc log
    • a34875d7288558326847b648dd6ea35a3fe8329e by @yegor256: #79 gc feature
    • a31b67ce39f297a613f59780a8219abaec0057e7 by @yegor256: #79 check for space in path
    • 323f03eb37bb7824957b07d96b350b835ae68615 by @yegor256: #79 check for slash in path
    • 7391649bc13b7448dadc14af727f297316a6364c by @yegor256: #79 typo
    • 6c38e5847a2b13a98586c5e018a55ff284e35eba by @yegor256: #79 care about dot-starting lo...
    • 8e97e9dd607bdd0bc571e1cd765b53fe22e1cf0c by @yegor256: #79 msg
    • e68e61bbd0e81c2630107692f378d4098f836fcc by @yegor256: #79 alerts only on sober
    • 2b0326bed7c60b2259fbff893090706f7e036d6d by @yegor256: #79 prohibit empty tails in ed...
    • e28180c1f19ba3ea118bf6d48a259831d4cd59cc by @yegor256: #79 prohibit dots in labels
    • 445ec824551a7242b0f85ea564469b992ad737f5 by @yegor256: #79 match
    • d3303b003ad17d11225f8f10fac4bd49d564866c by @yegor256: #79 test
    • 6510d071deadae1da8813094b27ac40228fa7b01 by @yegor256: #79 log
    • 9ebed3cc362d1bab6f029112ef3397901cf3b3c3 by @yegor256: #79 removed kid_and_loc()
    • a8736a3554ee0ad996da9091fa69cf9c850cdc6f by @yegor256: #79 "sober" features
    • 8617c388f26367d68dca41a0441a088aec5d8769 by @yegor256: #79 typo
    • and 9 more...

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.22(Jan 14, 2023)

    See #78, release log:

    • 34906a223640e1c1519ca8b91749282300810a47 by @yegor256: #78 just two args
    • 484824f60d6804bf7f2e4bb4bba8af6b32d88867 by @yegor256: log

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.21(Jan 14, 2023)

    See #75, release log:

    • 48180274c051f558c2189a0e510fd14258406016 by @yegor256: shorter log
    • 9b1ca66a6782ff16ffd656cad70f1032c16be053 by @yegor256: shorter log
    • 70e7b56d6467ed1e07962c0ef4b033d89715f6c0 by @yegor256: locator is never empty
    • c401cd1d1075de77bc2cdb4ca24cc1eda69dacfc by @yegor256: doc fix
    • 7747d8ae68d72cd9d588c24399f82063f68360ac by @yegor256: more doc
    • 986f98436b26fb98a5adabf4ded62af48cc0425c by @yegor256: doc polished
    • 6b631c1354c936592313166ebaadc69b5bf1e884 by @yegor256: doc polished
    • 668963d3bd450bdb9766a26490a90b9ec4b2afcf by @yegor256: doc
    • c5866df3c4706151508fe37d26d48fd0359dac24 by @yegor256: better log

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.20(Jan 13, 2023)

    See #75, release log:

    • 56d1853410e92602396ec06ad43e2be0d50e3508 by @yegor256: kid_and_loc
    • 3b03ccd8a8333bd8d210f33cb30ab7bb1e34d245 by @yegor256: log
    • fdf7dcbcb63e85023ae12ef1d0927cbfec06cfe4 by @yegor256: doc

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.19(Jan 12, 2023)

    See #61, release log:

    • 9413652d35ebd7e491dba72017f7fc8c00570671 by @yegor256: #61 full()
    • 1177f76a15f98cf1c1d4c46706402dc9357112ab by @yegor256: #75 typo
    • 3208ee57c99ecbcfd9976fb091e47515d35656d3 by @yegor256: #75 logs fixed
    • c3ee604c79ec53d3ef967c492bc1bff7a37c92cc by @yegor256: #75 doc

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.18(Jan 12, 2023)

    See #75, release log:

    • 2242ad68ea31bb673e9adc92e5ad32a9ec87e2f1 by @yegor256: #75 unsafe solution
    • c5482f7532c19ff15a196519bfa3e8f767b80469 by @yegor256: #75 case explained
    • 967e9119c8bbd95cc61d63a904e752670b9f3666 by @yegor256: #75 immutable relay
    • 6c0f77d757e863308e286c2557bcd3a1b00f5d07 by @yegor256: #75 cleaner
    • f0f3c6c7baee1564689b6cc9b9f68ed7207ce7c5 by @yegor256: #75 test reproduces the proble...
    • c3c1c7f05080dc6c0b52fb5c068e9461b3cde45e by @yegor256: #74 doc formatting
    • 6f5bfcdd3ef02250387a90debaf4e21fe9b33898 by @yegor256: #74 more examples in doc
    • 75b03fca8ac8ea3613a88d496bee998de78d0841 by @yegor256: #74 comment removed
    • 21324a5c826a3a54a59f6eb4ebfd29dff071b588 by @yegor256: #74 better error messages
    • 556ee27f2c8aea30910440c4a2b97772b48e55a2 by @yegor256: #74 more examples in doc
    • 2b2347eeee51254c8dd267d787d980e9f1376674 by @yegor256: #74 doc formatting

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.17(Jan 11, 2023)

  • 0.0.16(Jan 11, 2023)

  • 0.0.15(Jan 11, 2023)

    See #72, release log:

    • cc691b28d6865da707240beee5e90d36ab012180 by @yegor256: #72 doc
    • 311d7dc62c80984a94474425502f9a21bcdeb543 by @yegor256: #72 pass relay recursively

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.14(Jan 11, 2023)

    See #71, release log:

    • 943ceba419316d6a39b7162858a5a01cb1f185b1 by @yegor256: typo
    • 2a630c7b7e0ad3440e1fc7e1ba1a72c3bdb72f39 by @yegor256: rename
    • 0b6903f6676bafb6598ed52e7a1cc57d2545aaee by @yegor256: Relay
    • cd3e370d08cf9b9a50741b0fac6d664815333964 by @yegor256: typo
    • 622f84fc25ee799537259f44ab634374ce75826b by @yegor256: better logging of errors

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.13(Jan 11, 2023)

    See #63, release log:

    • 2d9278f3a460e1b4812c2a797c536f864f65842a by @UARTman: #60: Fix test name
    • 66cca3451bfdde220058e9c389eec11cbd33b18d by @UARTman: #60: Fix find_with_closure I...
    • ff25c44888ab2e0f632d524c2cc0ee02ab4391ca by @UARTman: #63: Modify find_with_closure
    • d3a74621ef1f8b44ae41ac581568d8209063c389 by @UARTman: Merge branch 'master' into fin...
    • 8bbc2026cb146a4550fc27edf36b9afa79899905 by @renovate[bot]: Update Rust crate regex to 1.7...
    • c6119595f6ad70b78f85f6ff879fd12c9c8c7628 by @yegor256: typo
    • 2c77e6cc2e0f5689eddd7c1a34bd324afc0671c7 by @yegor256: better error reporting
    • 3e4bdb023624a521b24d0ca8979c1cb1b2230da3 by @yegor256: #root: no more root
    • 58a9a1688cf6c9c0d8035a5691e823d9f1c86db7 by @UARTman: #63: Modify find_with_closure
    • 9972cad444e20d43059233725154c3910ae55b8c by @UARTman: Fix nightly clippy warnings
    • a087f1a757a1dafc10021b03d1641213d1df7d9d by @UARTman: #56: Implement Hex::concat
    • fd8ca373bc45aee40a8cf28b58b6092cf3f95c91 by @yegor256: typo
    • e5d43e0cd4989cbabbf942f9c4bffb00d799b4ed by @yegor256: extra test for empty data
    • a5aa939464fff203358410fde7d4d211f7ec1954 by @yegor256: extra test
    • 8b8cb9d57eab69b25bf2437d457a0584ad6fa65f by @rultor: Merge branch '__rultor'
    • 85cd2113ad5a0d442ab094bf2ca7ec9712df50d5 by @UARTman: #20: fix collection algorithm
    • 663dfa4a1598f1c46921da2fce26a4bb653ecbc0 by @UARTman: #20: change naming convention
    • a6d095d1d8ffe4823fdde2188a4d97edf92f5582 by @yegor256: typo
    • 58b2dc1cfdd8f666b04432fcc6e2731cd15ab207 by @renovate[bot]: Update Rust crate predicates t...
    • 88a64be313bff2de5d09a4bc1fb5c55b0228b8ab by @renovate[bot]: Update Rust crate serde to 1.0...
    • and 26 more...

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.12(Nov 18, 2022)

    See #31, release log:

    • 11a28f0254a2ef7b973897888398246c584f65d7 by @yegor256: typo
    • 6d0fa3c94fed41c69aba221ed6941aa3ac96fe30 by @yegor256: find() is now using find_with_...
    • 54e9a1c198824883afaf97a9231937c21b140f6e by @UARTman: #31: implement `finds_with_clo...
    • 5185b25b2c7bfc3474016ab56332d5eeaf049423 by @UARTman: fix redundant cloning in `Sodg...
    • 2e9a0c7193db9de0992c73678936f6ea2be49e3d by @UARTman: #31: implement `find_with_clos...
    • df7b905aef69ccc72bc1efd66e46bf26bc772795 by @yegor256: #34 extra check
    • f864d17ea9f3696546aceff9fbd5b77b74b3c91c by @yegor256: #34 overwriting with tail
    • 9cf640a16c506ee053600a7f0d1df5c1f9754279 by @yegor256: #33 return a and tail from kid...
    • e9ca8d94e088d04c7e638c7f60f9300bc1c8e170 by @yegor256: #32 check for label names
    • 93b0c6854674cd78ce8dd84d35ebb7bf07e02685 by @yegor256: rename
    • 8deef0aa8812750fa541f78f6e523dcf9e73b78c by @yegor256: doc
    • 626552baa8e2b6c0e05acc6212ed36b1acbc0c52 by @UARTman: #28: refactor type declaration...
    • a404d4222f4b17a81d2f05e742d8e99cee1a8375 by @UARTman: #18: revamp Hex

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.11(Nov 5, 2022)

    See #25, release log:

    • f7a2038a341bfcfa854ce362d9ec232a1fd91780 by @yegor256: #25 replace by loc
    • 48c8e70d41407396fb790423b62d037624ce005f by @yegor256: #25 prohibit orphan edges
    • 5e1672ac157d5c00a5f332dad1a4644fedef10b5 by @yegor256: #25 prohibit empty labels thro...
    • a0fd544bc8c73a773b7565c39b2d71ec394ee693 by @yegor256: #25 allow duplicate .add()
    • 76862b2c944709ea1294b2ca3d67ab382d577034 by @yegor256: #25 prohibit loops through ale...
    • 83f65d205ab0f38121853ebb7693e454d92dce99 by @yegor256: #25 .loc()
    • eccdf9c90c8705bed413a249748fdf9d8c304ae9 by @yegor256: #25 find by prefix

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.10(Nov 5, 2022)

    See #24, release log:

    • 9ab93d9824151bd6b68d33f605319e5b69b4bff5 by @yegor256: #24 Script::from_string()
    • cb54ae8caeb5a605de2ffdc57a83f34a977502c1 by @yegor256: #24 kids() into one line
    • 9fd60f475cefb902defc8c36daba38ea97be585e by @yegor256: #24 kid() returns None
    • 41f7de327509fe6ed969ef0fc754bbe7bcbac339 by @yegor256: extra test

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.9(Nov 4, 2022)

    See #23, release log:

    • aaccce030d03acbb713cb18a501b0663702f1d07 by @yegor256: #23 doc
    • 0e82a947180bea0326c83f83518f321bdd81155a by @yegor256: #23 Hex.len()
    • 9b4c88f9a10005665994b4a905250c81d2f45e67 by @yegor256: #22 is_empty()
    • 891c55e6d12edd2f294fe1fa6f7435f2e7b77044 by @yegor256: #21 another URL
    • 60628c0479142aecd502366e744ca026b41b480f by @yegor256: #21 docs.rs badge

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.8(Nov 2, 2022)

    See #21, release log:

    • 63c904719e2ae212b3c3bf9a88edc46a8c22de0a by @yegor256: #21 Hex::byte_at()
    • a87d37300a6a01418ecb9ff8ad1ce3f4a077694e by @yegor256: #21 Hex::tail()
    • 925a637ab93492918da4c56a73d22fe55a5e1998 by @yegor256: test for from_bool()
    • d76f6d8aa10a50da45fec2630629a7acdcfce770 by @yegor256: more tests
    • d6d6558608cc01313bfede389f7ee6b3ee7c9dd4 by @yegor256: test
    • 012bf88fc003a808c0940fc9a7ecc2fff2fba3dc by @yegor256: test

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.7(Oct 28, 2022)

    See #19, release log:

    • 5d584d7617c9159c7018633faa918ca7191314ff by @yegor256: #19 more doc
    • 82965c755bee746488f091984c373e77eadc1be1 by @yegor256: better doc
    • b45af06b8dfd1e63d123c4e6a98b84e1d3e635db by @yegor256: clippy fix
    • e002de847a3a72a5908f6fbbc302a9a116805f33 by @yegor256: deps

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.6(Oct 14, 2022)

    See #17, release log:

    • 0ab5fdeea855172014f8d249c4bad4c1ea70d354 by @yegor256: #17 more doc
    • d38904afae3c94fa2187bb0c5d0c86a9d82adb7f by @yegor256: #17 alerts and ctors
    • 6e86d8f7d7442857114efa7d9be775bbf21d039b by @yegor256: no pub mods
    • f4847a46f2b0d105437cede8cff59efe4643c69c by @yegor256: doc
    • 89f37a29eb38c81209bb92af3267d9f62166fc88 by @yegor256: doc
    • 3e97799768fcf160451825e1f3db1177874bfd0c by @yegor256: check for utf8
    • d436ed3da51ca6306b48ba62dc6f1d2e1c29f172 by @yegor256: tests
    • 8ad817892a77d32d639884f360a9f89084b157a2 by @yegor256: #16 as_vec

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.5(Oct 13, 2022)

  • 0.0.4(Oct 13, 2022)

    See #7, release log:

    • eddef9563fbb347bea00d294bf204a8051c40bc8 by @yegor256: #7 clippy works
    • 8fc07b3d8fe75ca0b64ed2cdff65f72aa8d489ec by @yegor256: #7 clippy fixes
    • 15355a3dd9f7476d4b420a634ef2a8e7c1f270a4 by @yegor256: #7 Hex
    • 1ed5d126715aa02df20b4612f50744d00866e2f6 by @yegor256: #7 error msg
    • d6a86323224f03e3d7f53c78d6d3b27d814412ef by @yegor256: #7 doc
    • e1120ef2c5024af78dced18d1bfb13e0e613028a by @yegor256: #7 examples
    • 9ea9875966d1d1830e08bb385ba126415e67b481 by @yegor256: #7 set_root
    • ae00b82955968e9e341e5e751ea9cfc05155004f by @yegor256: #7 script
    • a1d79885c9b1fd918251386ef5ae56df7c46f592 by @yegor256: #7 simplified
    • a2bfad8034f76728bc1b23c426dd35b3236fbf43 by @yegor256: #7 rename
    • 73606df66eb2054b7047afebbbf0ab69b6a98e51 by @yegor256: #7 enable/disable alerts
    • 098d289198a4a0887fb38ed8bc4106b37f0799bb by @rultor: Merge branch '__rultor'
    • c73b4841afb26e329c5936090908fa8e516abb24 by @UARTman: Merge branch 'objectionary:mas...
    • 96324a02ba9a32d5f279f420af48a3cda04d0d14 by @UARTman: #6: fix formatting
    • ace7c6042023b284123412ab286102b2fac63722 by @alex-semenyuk: Add contribution instruction
    • 12d55c3e4e484ac9068e7e893e92291b5bd1cf38 by @alex-semenyuk: Add contribution instruction
    • f49fa0f8ee39ad76f4b6a6e0d573dc2ade9adcc0 by @UARTman: #6: fix ν and variable names
    • 2b3124a61f903c85103fc8936f69c5a56b9976e5 by @UARTman: #6: fix formatting
    • f0b21036c3f044482d2581b36a18e34c4e80e1c3 by @UARTman: #6: fix and enable `finds_all_...
    • a60fd5d37a61eeaec5c03cddf7399cbeff3eb4b0 by @UARTman: #6: implement kids
    • and 7 more...

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.3(Oct 11, 2022)

    See #5, release log:

    • 5a33bf9ced4598835bd3383560e53f9e3999d73e by @yegor256: #5 readme
    • 064fa4b922c2b492d0eb60f417a283e89344d267 by @yegor256: #5 rename to G
    • cb666fbd5a5c70a0ebb0efbf573fa8d01da8fbed by @yegor256: #5 renamed to SODG
    • 6287c7219ac17f1d9d3c0a1caf3211aaa46d5f07 by @yegor256: #5 more examples
    • afa5a87290dad40088d03fbd1e91e7f8379c121d by @yegor256: #5 moved Sot up
    • 6b2bacdc896e4d893c8b3788a70bc48ec0e1b86a by @yegor256: #1 more tests

    Released by Rultor 2.0-SNAPSHOT, see build log

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

    See #4, release log:

    • 5f287ade02bc5183468445b913224d5b5193af81 by @yegor256: #4 from_str
    • 769ab71a951748c6697a5faefccf365c9cd47343 by @yegor256: #1 todo
    • f7f8e1ed1cdae28e9922b0bbda4c568e87ba65a9 by @yegor256: #1 todo
    • d3042169e540f8add2aa60a2292d1dcb523cc998 by @yegor256: #1 typo

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
  • 0.0.1(Oct 4, 2022)

    See #1, release log:

    • 0a9c2387584b6b9a2ffad0ade4a5e973523e79aa by @yegor256: #1 fmt
    • f0b5d87ea8ea55df8745e81a77dd1bf030ac8c4a by @yegor256: #1 badges
    • 1f304c8d5a7ab69c2665dc55173478a368453cc8 by @yegor256: #1 doc
    • 16574f777333d8b69258b7f689fca78ba47a2b0b by @yegor256: #1 moved from reo
    • 3dc626d34e425fad7dddb2971b4eb38c976670ee by @yegor256: write/read
    • f854498ceb8b8f28928ed5779d12fd3b89b3ae26 by @yegor256: logo
    • 03a524cf4285af8c59a7ef955493c51860b3dbd1 by @yegor256: liks
    • 2fe0107ca15a049ed6320816aef44a4e44afc6bb by @yegor256: start

    Released by Rultor 2.0-SNAPSHOT, see build log

    Source code(tar.gz)
    Source code(zip)
Owner
Objectionary
EO Programming Language, Its Objects, and 𝜑-calculus
Objectionary
Rust implementation of Andrej Karpathy's micrograd for purposes of learning both ML and Rust.

micrograd_rs Rust implementation of Andrej Karpathy's micrograd for purposes of learning both ML and Rust. Main takeaways Basically the same takeaways

null 3 Oct 28, 2022
Ray Tracing: The Next Week implementation in Rust

rttnw Ray Tracing: The Next Week implementation in Rust How to run Install Rust: Link here. Run project git clone https://github.com/luliic2/rttnw cd

null 20 Apr 26, 2022
Rust implementation of µKanren, a featherweight relational programming language.

µKanren-rs This is a Rust implementation of µKanren, a featherweight relational programming language. See the original Scheme implementation here for

Eric Zhang 99 Dec 8, 2022
An implementation of Olm and Megolm in pure Rust.

A Rust implementation of Olm and Megolm vodozemac is a Rust implementation of libolm, a cryptographic library used for end-to-end encryption in Matrix

matrix.org 66 Dec 26, 2022
Pure Rust Implementation of secp256k1.

SECP256K1 implementation in pure Rust Cargo Documentation SECP256K1 implementation with no_std support. Currently we have implementation for: Convert

Parity Technologies 141 Dec 21, 2022
A Rust implementation of generic prefix tree (trie) map with wildcard capture support

prefix_tree_map A Rust implementation of generic prefix tree (trie) map with wildcard capture support. Design Trie is a good data structure for storin

EAimTY 3 Dec 6, 2022
fast rust implementation of online nonnegative matrix factorization as laid out in the paper "detect and track latent factors with online nonnegative matrix factorization"

ONMF status: early work in progress. still figuring this out. code still somewhat messy. api still in flux. fast rust implementation of online nonnega

null 2 Apr 10, 2020
A modular implementation of timely dataflow in Rust

Timely Dataflow Timely dataflow is a low-latency cyclic dataflow computational model, introduced in the paper Naiad: a timely dataflow system. This pr

Timely Dataflow 2.7k Dec 30, 2022
An alternative broken buggy Nix implementation in Rust + Java (for evaluation)

An alternative broken buggy Nix implementation in Rust + Java (for evaluation)

Moritz Hedtke 1 Feb 12, 2022
A fast lean and clean modern constraint programming solver implementation (in rust)

MaxiCP-rs This project aims at implementing a fast, and clean constraint programming solver with a focus on correctness, simplicity, maintainability a

Xavier Gillard 5 Dec 10, 2022
Rust implementation of Waku v2 (f.k.a. Whisper)

waku-rs Waku is a p2p messaging protocol tailored for the web3, with origins in Ethereum's Whisper. This Rust implementation is taking reference from

bernardo 12 Jul 11, 2022
The second Rust implementation on GitHub of third-party REST API client for Bilibili.

Bilibili REST API The second Rust implementation on GitHub of third-party REST API client for Bilibili. Designed to be lightweight and efficient. It's

null 4 Aug 25, 2022
Rust-only ext4 implementation without unsafe code.

Rust-Ext4 Rust-only ext4 implementation without unsafe code. Supporting features no_std Direct/Indirect Block Addressing (RO) Extent Tree Addressing (

null 7 Dec 5, 2022
Rust implementation of DVB-GSE

dvb-gse dvg-se is a Rust implementation of the DVB GSE (Generic Stream Encapsulation) protocol and related protocols. It is mainly intended to be used

Daniel Estévez 4 Dec 15, 2022
Tvix - A Rust implementation of Nix

Tvix Tvix is a new implementation of the Nix language and package manager. See the announcement post for information about the background of this proj

The Virus Lounge 49 Feb 17, 2023
Rust library provides a standalone implementation of the ROS (Robot Operating System) core

ROS-core implementation in Rust This Rust library provides a standalone implementation of the ROS (Robot Operating System) core. It allows you to run

Patrick Wieschollek 3 Apr 26, 2023
A Rust implementation of HyperLogLog trying to be parsimonious with memory.

?? HyperLogLog-rs This is a Rust library that provides an implementation of the HyperLogLog (HLL) algorithm, trying to be parsimonious with memory. Wh

Luca Cappelletti 10 May 16, 2023
A Rust implementation of V8's ValueSerializer and ValueDeserializer

v8_valueserializer This module implements the V8 ValueSerializer and ValueDeserializer API in Rust. It can serialize and deserialize any value that ca

Deno 7 Nov 8, 2023
Experimental Quantum Computer Simulator + Quantum Chess Implementation

Quantum Chess A somewhat hacky implementation of this paper (made in a week over a holiday). It's not heavily tested and probably has some bugs still

null 19 Jan 21, 2022