rust/src
bors 63c4f22f2b auto merge of #18486 : nikomatsakis/rust/operator-dispatch, r=pcwalton
This branch cleans up overloaded operator resolution so that it is strictly based on the traits in `ops`, rather than going through the normal method lookup mechanism. It also adds full support for autoderef to overloaded index (whereas before autoderef only worked for non-overloaded index) as well as for the slicing operators.

This is a [breaking-change]: in the past, we were accepting combinations of operands that were not intended to be accepted. For example, it was possible to compare a fixed-length array and a slice, or apply the `!` operator to a `&int`. See the first two commits in this pull-request for examples.

One downside of this change is that comparing fixed-length arrays doesn't always work as smoothly as it did before. Before this, comparisons sometimes worked due to various coercions to slices. I've added impls for `Eq`, `Ord`, etc for fixed-lengths arrays up to and including length 32, but if the array is longer than that you'll need to either newtype the array or convert to slices. Note that this plays better with deriving in any case than the previous scheme.

Fixes #4920.
Fixes #16821.
Fixes #15757.

cc @alexcrichton 
cc @aturon
2014-11-05 22:31:44 +00:00
..
compiler-rt@62a4ca6055
compiletest Fixed other tests to pass make check 2014-11-05 12:01:23 +03:00
doc Update the guide examples and try not to leave user hanging as to what 2014-11-05 11:29:15 -05:00
driver Updated to new extern crate syntax. 2014-09-01 09:02:00 -07:00
etc libsyntax: Forbid escapes in the inclusive range \x80-\xff in 2014-11-04 14:58:11 -08:00
grammar Use common variants for open and close delimiters 2014-10-30 09:35:52 +11:00
jemalloc@b001609960 update jemalloc 2014-10-05 22:17:25 -04:00
liballoc bubble up out-of-memory errors from liballoc 2014-11-01 19:23:20 -04:00
libarena Repair various cases where values of distinct types were being operated 2014-11-05 09:15:28 -05:00
libbacktrace
libcollections Add impls of the comparison operators for fixed-length arrays of lengths 0...32 and repair various cases where slices and fixed-length arrays were being compared. 2014-11-05 09:15:28 -05:00
libcore auto merge of #18486 : nikomatsakis/rust/operator-dispatch, r=pcwalton 2014-11-05 22:31:44 +00:00
libcoretest Repair various cases where values of distinct types were being operated 2014-11-05 09:15:28 -05:00
libflate Use the same html_root_url for all docs 2014-10-09 10:50:13 -07:00
libfmt_macros Add enum variants to the type namespace 2014-09-19 15:11:00 +12:00
libgetopts Extend documentation of getopts for arguments 2014-11-02 17:38:44 +11:00
libgraphviz collections: Remove all collections traits 2014-11-01 11:37:04 -07:00
libgreen Rename fail! to panic! 2014-10-29 11:43:07 -04:00
liblibc Update code with new lint names 2014-10-28 08:54:21 -07:00
liblog rollup merge of #18398 : aturon/lint-conventions-2 2014-10-30 17:37:22 -07:00
libnative Test fixes and rebase conflicts 2014-10-30 17:37:56 -07:00
librand rand: Add next_f64/f32 to Rng. 2014-11-02 22:47:19 +11:00
librbml Tuple deserialization should not fail 2014-11-01 10:54:34 -07:00
libregex libsyntax: Forbid escapes in the inclusive range \x80-\xff in 2014-11-04 14:58:11 -08:00
libregex_macros rollup merge of #18398 : aturon/lint-conventions-2 2014-10-30 17:37:22 -07:00
librlibc collections: Remove all collections traits 2014-11-01 11:37:04 -07:00
librustc auto merge of #18486 : nikomatsakis/rust/operator-dispatch, r=pcwalton 2014-11-05 22:31:44 +00:00
librustc_back Update for collections reform 2014-11-04 05:35:53 -05:00
librustc_llvm Clean-up transmutes in librustc 2014-11-03 22:53:59 +02:00
librustdoc Implement flexible target specification 2014-11-04 05:07:47 -05:00
librustrt Register snapshots. 2014-11-05 12:55:58 +02:00
libserialize rollup merge of #18544 : whataloadofwhat/json 2014-11-03 15:55:59 -08:00
libstd auto merge of #18486 : nikomatsakis/rust/operator-dispatch, r=pcwalton 2014-11-05 22:31:44 +00:00
libsync bubble up out-of-memory errors from liballoc 2014-11-01 19:23:20 -04:00
libsyntax Register snapshots. 2014-11-05 12:55:58 +02:00
libterm rollup merge of #18476 : vadimcn/17982 2014-11-03 08:31:44 -08:00
libtest refactor libcollections as part of collection reform 2014-11-02 18:58:11 -05:00
libtime Repair various cases where values of distinct types were being operated 2014-11-05 09:15:28 -05:00
libunicode libsyntax: Forbid escapes in the inclusive range \x80-\xff in 2014-11-04 14:58:11 -08:00
llvm@ec1fdb3b9d Update LLVM to get slightly better memcpy elision 2014-10-17 17:16:18 +02:00
rt remove the uv_support code 2014-10-02 05:05:12 -04:00
rustllvm optimize position independent code in executables 2014-10-12 09:18:14 -04:00
test auto merge of #18486 : nikomatsakis/rust/operator-dispatch, r=pcwalton 2014-11-05 22:31:44 +00:00
README.md Remove librustuv 2014-10-01 10:34:39 -07:00
snapshots.txt Register snapshots. 2014-11-05 12:55:58 +02:00

This is a preliminary version of the Rust compiler, libraries and tools.

Source layout:

Path Description
librustc/ The self-hosted compiler
liballoc/ Rust's core allocation library
libcore/ The Rust core library
libdebug/ Debugging utilities
libstd/ The standard library (imported and linked by default)
libgreen/ The M:N runtime library
libnative/ The 1:1 runtime library
libsyntax/ The Rust parser and pretty-printer
libtest/ Rust's test-runner code
------------------- ---------------------------------------------------------
libarena/ The arena (a fast but limited) memory allocator
libbacktrace/ The libbacktrace library
libcollections/ A collection of useful data structures and containers
libflate/ Simple compression library
libfmt_macros/ Macro support for format strings
libfourcc/ Data format identifier library
libgetopts/ Get command-line-options library
libglob/ Unix glob patterns library
libgraphviz/ Generating files for Graphviz
libhexfloat/ Hexadecimal floating-point literals
liblibc/ Bindings for the C standard library
liblog/ Utilities for program-wide and customizable logging
libnum/ Extended number support library (complex, rational, etc)
librand/ Random numbers and distributions
libregex/ Regular expressions
libregex_macros/ The regex! syntax extension
libsemver/ Rust's semantic versioning library
libserialize/ Encode-Decode types library
libsync/ Concurrency mechanisms and primitives
libterm/ ANSI color library for terminals
libtime/ Time operations library
liburl/ URL handling lirary
libuuid/ UUID's handling code
------------------- ---------------------------------------------------------
rt/ The runtime system
rt/rust_*.c - Some of the runtime services
rt/vg - Valgrind headers
rt/msvc - MSVC support
rt/sundown - The Markdown library used by rustdoc
------------------- ---------------------------------------------------------
compiletest/ The test runner
test/ Testsuite
test/codegen - Tests for the LLVM IR infrastructure
test/compile-fail - Tests that should fail to compile
test/debug-info - Tests for the debuginfo tool
test/run-fail - Tests that should compile, run and fail
test/run-make - Tests that depend on a Makefile infrastructure
test/run-pass - Tests that should compile, run and succeed
test/bench - Benchmarks and miscellaneous
test/pretty - Pretty-printer tests
test/auxiliary - Dependencies of tests
------------------- ---------------------------------------------------------
librustdoc/ The Rust API documentation tool
------------------- ---------------------------------------------------------
llvm/ The LLVM submodule
rustllvm/ LLVM support code
------------------- ---------------------------------------------------------
etc/ Scripts, editors support, misc

NOTE: This list (especially the second part of the table which contains modules and libraries) is highly volatile and subject to change.