{"id":16115642,"url":"https://github.com/steveklabnik/indexlist","last_synced_at":"2025-08-16T12:32:05.539Z","repository":{"id":62440838,"uuid":"148843201","full_name":"steveklabnik/indexlist","owner":"steveklabnik","description":"indexlist: A doubly linked list, backed by a vector","archived":false,"fork":false,"pushed_at":"2023-08-30T21:42:40.000Z","size":28,"stargazers_count":85,"open_issues_count":6,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-04T09:54:54.809Z","etag":null,"topics":["data-structures","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/steveklabnik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-14T21:23:37.000Z","updated_at":"2025-03-28T16:33:57.000Z","dependencies_parsed_at":"2022-11-01T22:01:00.275Z","dependency_job_id":null,"html_url":"https://github.com/steveklabnik/indexlist","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/steveklabnik/indexlist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steveklabnik%2Findexlist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steveklabnik%2Findexlist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steveklabnik%2Findexlist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steveklabnik%2Findexlist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steveklabnik","download_url":"https://codeload.github.com/steveklabnik/indexlist/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steveklabnik%2Findexlist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270644325,"owners_count":24621329,"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-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["data-structures","rust"],"created_at":"2024-10-09T20:19:24.685Z","updated_at":"2025-08-16T12:32:05.220Z","avatar_url":"https://github.com/steveklabnik.png","language":"Rust","funding_links":[],"categories":["\u003ca name=\"Rust\"\u003e\u003c/a\u003eRust"],"sub_categories":[],"readme":"# `indexlist` - A doubly linked list, backed by a vector.\n\n[![Build Status](https://travis-ci.org/steveklabnik/indexlist.svg?branch=master)](https://travis-ci.org/steveklabnik/indexlist) [![Build status](https://ci.appveyor.com/api/projects/status/baop9rw1tnd193or/branch/master?svg=true)](https://ci.appveyor.com/project/steveklabnik/indexlist/branch/master)\n\nThis crate provides a struct, `IndexList\u003cT\u003e`, which is a doubly-linked\nlist. However, unlike a traditional linked list, which heap allocates\neach of its nodes individually, all nodes are stored in a vector. Rather\nthan provide pointers to nodes, an `Index` struct can be used to access\na particular element in the middle of the list.\n\n# Safety\n\nThis crate uses `#![deny(unsafe_code)]` to ensure everything is implemented\nin 100% Safe Rust.\n\n# Generational indexes\n\n`Index` uses a generations scheme, so that if you hold an `Index` to a node,\nand it's removed, and a new node is allocated in its place, you do not access\nthe new node.\n\n# Performance\n\nIn general, performance is quite good. Benchmarks against the standard library's\n`LinkedList\u003cT\u003e` are provided. But some other details:\n\n* The list keeps track of its head and tail for efficient insertion.\n* The underlying vector only grows, never shrinks. When a node is removed, its\n  entry is marked as free for future insertions.\n* Free entries are themselves kept as a singly-linked list, meaning that they\n  can be re-used efficiently.\n\n# Missing features\n\nRight now, I've only implemented a minimal number of features; there's `iter`\nbut no `into_iter` and `iter_mut`. This is on the to-do list. PRs welcome!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteveklabnik%2Findexlist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteveklabnik%2Findexlist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteveklabnik%2Findexlist/lists"}