{"id":26293496,"url":"https://github.com/hemisphere-studio/async-subscription-map","last_synced_at":"2025-03-15T02:19:08.745Z","repository":{"id":195183381,"uuid":"691205985","full_name":"hemisphere-studio/async-subscription-map","owner":"hemisphere-studio","description":"Async bookkeeping data structure for multithreaded state subscriptions","archived":false,"fork":false,"pushed_at":"2023-09-16T11:39:20.000Z","size":67,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2023-09-16T22:19:04.277Z","etag":null,"topics":["async","data-structures","multithreading","subscriptions"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/async-subscription-map","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hemisphere-studio.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,"governance":null}},"created_at":"2023-09-13T17:51:18.000Z","updated_at":"2023-09-16T22:19:31.142Z","dependencies_parsed_at":"2023-09-16T22:19:29.408Z","dependency_job_id":null,"html_url":"https://github.com/hemisphere-studio/async-subscription-map","commit_stats":null,"previous_names":["hemisphere-studio/async-subscription-map"],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemisphere-studio%2Fasync-subscription-map","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemisphere-studio%2Fasync-subscription-map/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemisphere-studio%2Fasync-subscription-map/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemisphere-studio%2Fasync-subscription-map/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hemisphere-studio","download_url":"https://codeload.github.com/hemisphere-studio/async-subscription-map/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243672517,"owners_count":20328772,"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","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":["async","data-structures","multithreading","subscriptions"],"created_at":"2025-03-15T02:19:08.208Z","updated_at":"2025-03-15T02:19:08.731Z","avatar_url":"https://github.com/hemisphere-studio.png","language":"Rust","readme":"\u003ch1 align=\"center\"\u003easync-subscription-map\u003c/h1\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cstrong\u003e\n    Async bookkeeping datastructure for state subscriptions\n  \u003c/strong\u003e\n\u003c/div\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://crates.io/crates/async-subscription-map\"\u003e\n    \u003cimg src=\"https://img.shields.io/crates/v/async-subscription-map.svg?style=flat-square\"\n    alt=\"crates.io version\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://docs.rs/async-subscription-map\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/docs-latest-blue.svg?style=flat-square\"\n      alt=\"docs.rs docs\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\u003cbr /\u003e\n\nA subscription map is a self cleaning map of `Observable`s which tracks tasks\nthat want to subscribe to state updates on a certain key. This becomes very\nuseful if you have multiple tasks in your program and you want to wait in one\ntask until the other starts publishing state updates.\n\nIt enables you to generically  communicate through your whole program by just\nknowing an identifier, no need to pass observables around - they are created on\nthe fly and only if someone subscribes to them. This is ideal for highly\nasynchronous and performance critical backend implementations which serve data\naccross multiple channels and want to cut down latency through communicating in\nmemory.\n\n![Usage Diagram](./docs/diagram.png?raw=true \"Diagram\")\n\n## Self Cleaning Nature\n\nThe subscription map is selfcleaing in the sense that it removes every\nsubscription entry and its data as soon as no one subscribes to it and thus\nactively preventing memory leaks!\n\n## Observables\n\nThis project is build ontop of\n[async-observable](https://crates.io/crates/async-observable), take a look at\nit to understand the underlying synchronization api.\n\n\u003cbr /\u003e\n\n\u003ch6 align=\"center\"\u003e\n    This code was originally published by HUM Systems. This repository continues the development of this library as they sadly stopped their open source efforts.\n\u003c/h6\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhemisphere-studio%2Fasync-subscription-map","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhemisphere-studio%2Fasync-subscription-map","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhemisphere-studio%2Fasync-subscription-map/lists"}