Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a splay tree implementation to libstd #6360

Closed
wants to merge 3 commits into from

Conversation

alexcrichton
Copy link
Member

I was curious if something like this was possible, and it indeed is!

I didn't want to duplicate a lot of functionality between splay trees and the existing treemap module, so I extracted out a lot of the iterators and implementations into the iterator module.

If this doesn't belong in libstd, it was mostly a proof-of-concept idea anyway. I remember talk about moving the current std away from this repo and into their own repos, so this may just belong elsewhere.

Benchmark-wise, it performs about as well as expected. It's real bad on random input (when compared to TreeMap), and it's better on sequential input than TreeMap most of the time. Although that's not quite representative because splay trees are meant to be used on inputs with mild patterns anyway.

Method naming would love to have #5898 as well...

@pcwalton
Copy link
Contributor

This is really well written. Thank you!

I'm not sure how many trees we want in std (soon to be extra) though. We'll need to discuss and make a decision. But either way, please feel free to share this in the Rust package repo when it's ready.

@alexcrichton
Copy link
Member Author

In hopes of keeping the queue smaller, I'm going to close this. I'll keep an eye on the new extra library coming up, and when the time comes around I'll see if this should be added in.

@erickt
Copy link
Contributor

erickt commented Aug 10, 2013

@alexcrichton: Did this ever get updated to HEAD?

@alexcrichton
Copy link
Member Author

The conclusion was that this was just "one more thing" in libextra which just added more maintenance burden, so it wasn't added. I've got a fork at https://github.com/alexcrichton/rs-splay which I'm trying to update as the compiler evolves though.

I hope to revisit this again once the fate of libextra has been finalized

flip1995 pushed a commit to flip1995/rust that referenced this pull request Dec 6, 2020
Trigger modulo_one lint also on -1.

Fixes rust-lang#6321.

changelog: trigger `modulo_one` lint also on `-1`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants