{"id":17053742,"url":"https://github.com/relrin/bert-rs","last_synced_at":"2025-07-22T06:05:31.419Z","repository":{"id":45388200,"uuid":"64672807","full_name":"Relrin/bert-rs","owner":"Relrin","description":"BERT (Binary ERlang Term) serializer for Rust","archived":false,"fork":false,"pushed_at":"2016-12-04T22:49:10.000Z","size":80,"stargazers_count":15,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-20T00:22:06.755Z","etag":null,"topics":["bert","erlang","rust","serde","serializer"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Relrin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-01T14:15:46.000Z","updated_at":"2024-06-04T18:23:36.000Z","dependencies_parsed_at":"2022-07-13T21:44:48.249Z","dependency_job_id":null,"html_url":"https://github.com/Relrin/bert-rs","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Relrin/bert-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relrin%2Fbert-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relrin%2Fbert-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relrin%2Fbert-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relrin%2Fbert-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Relrin","download_url":"https://codeload.github.com/Relrin/bert-rs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relrin%2Fbert-rs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266437369,"owners_count":23928235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bert","erlang","rust","serde","serializer"],"created_at":"2024-10-14T10:13:07.370Z","updated_at":"2025-07-22T06:05:31.392Z","avatar_url":"https://github.com/Relrin.png","language":"Rust","readme":"# bert-rs\nBERT (Binary ERlang Term) serializer\n\nThis crate provide an access to serializing data to the special binary data format, which can be send to your Erlang programs. The implementation relies on the [BERT](http://bert-rpc.org/) and [Erlang External Term Format](http://erlang.org/doc/apps/erts/erl_ext_dist.html) specifications.\n\nDependencies\n------------\n```toml\n[dependencies]\nserde = \"0.8.7\"\nnum = \"0.1.34\"\nbyteorder = \"0.5.3\"\n\n[dev-dependencies]\nserde_macros = \"0.8.*\"\n```\n\nUsing\n-----\nBefore you start working with this library you will need to add a link to the bert-rs library at your Cargo.toml file:\n```toml\n[dependencies]\nbert = \"0.1.0\"\n```\n\nLicense\n-------\nThe bert-rs published under BSD license. For more details read [LICENSE](https://github.com/Relrin/bert-rs/blob/master/LICENSE) file.\n\nExample of using\n----------------\nThe bert-rs crate provide a support for default Rust types and some additional, which have specified in [BERT](http://bert-rpc.org/) document. For any supported type of data which should be serialized you will pass into `term_to_binary` function:\n\n```rust\n#![feature(proc_macro)]\n\nextern crate bert;\nextern crate serde;\n\n\n#[derive(Debug, PartialEq, Serialize)]\nstruct Point2D(i32, i32);\n\n\nfn main() {\n    let point = Point2D(1, 2);\n\n    // serialized to {point2d, 1, 2} in BERT format\n    let serialized_point_2d = bert::term_to_binary(\u0026point).unwrap(); \n    assert_eq!(\n        serialized_point_2d\n        vec![\n            131u8,\n            105,                                          // tuple\n            0, 0, 0, 3,                                   // length\n            100, 0, 7, 112, 111, 105, 110, 116, 50, 100,  // \"point2d\" as atom\n            98, 0, 0, 0, 1,                               // 1\n            98, 0, 0, 0, 2                                // 2\n        ]   \n    );\n}\n```\n\n**Note**: At the moment bert-rs provide only serialize features. But bert-rs have the `serder-rs-deserializer` branch, where this library provide deserialize functionality. The part of required stuff is not implemented (because of issues with too complicated approaches of deserializing): list, tuples, `BertBigInteger` and special kind of tuples which represented as `{bert, ...}`. If you want to help in further development, then feel free to open pull requests and issues.\n\nFor development used:\n- rustup toolchain\n- stable `rustc 1.11.0 (9b21dcd6a 2016-08-15)` for building releases\n- unstable `rustc 1.13.0-nightly (3c5a0fa45 2016-08-22)` for testing\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelrin%2Fbert-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frelrin%2Fbert-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelrin%2Fbert-rs/lists"}