Implement set difference, sym. difference, intersection and union using Iterators. The set methods are left since they are part of the Set trait. A grep over the tree indicates that the four hashset operations have no users at all. Also remove HashMap::mutate_values since it is unused, replaced by .mut_iter(), and not part of a trait.
Implement the difference, union, etc iterators with the help of a custom iterator combinator with explicit closure environment. Reported issue #7814 to be able to use the std::iterator filter combinator.
…rphism r? @graydon rustpkg can now build code from a local git repository. In the case where the local repo is in a directory not in the RUST_PATH, it checks out the repository into a directory in the first workspace in the RUST_PATH. The tests no longer try to connect to github.com, which should solve some of the sporadic failures we've been seeing.
rustpkg can now build code from a local git repository. In the case where the local repo is in a directory not in the RUST_PATH, it checks out the repository into a directory in the first workspace in the RUST_PATH. The tests no longer try to connect to github.com, which should solve some of the sporadic failures we've been seeing.
This should be pretty self-explanatory. The most important component is region/lifetime annotation highlighting, as previously they were interpreted as character literals and would ruin the rest of the line. The attribute regex is fairly crude, but it gets the job done and there's not much within attributes that would benefit from individual highlighting, so fancier handling didn't seem worth the trouble. The ident regex was copied from the vim highlighter.
Teach `extra::term` to support more terminal attributes than just color. Fix the compiler diagnostic messages to print in bold instead of bright white. This matches Clang's output. Cache the term::Terminal instead of re-parsing for every diagnostic (fixes #6827).
Stuff the term::Terminal into TLS to avoid re-parsing for every single message we want to color. Fixes #6827.
Clang actually highlights using bold, not using bright white. Match clang on this so our diagnostics are still readable on terminals with a white background.
Also add .supports_attr() to test for attribute support without writing anything to output. Update .reset() to use sgr0 instead of op.
…thestinger Implement size_hint for the ringbuf iterators. Do small cleanups in dlist, use Option's .map and .map_mut properly, and put inline on all the small methods.
This changes the interface to `get`, and it also changes the keys to be static slices instead of static functions. This allows the removal of the `unsafe` interface because while functions can monomorphize from different types to the same actual function, static slices cannot do this. From at least what I can tell, we don't need to worry about LLVM coalescing these addresses. If we ever use the `unnamed_addr` it looks like there's cause for worry, but there doesn't appear to be any coalescing atm.
If the TLS key is 0-sized, then the linux linker is apparently smart enough to put everything at the same pointer. OSX on the other hand, will reserve some space for all of them. To get around this, the TLS key now actuall consumes space to ensure that it gets a unique pointer