summary refs log tree commit diff
path: root/src/libcore/ops.rs
AgeCommit message (Collapse)AuthorLines
2016-09-02Rollup merge of #35793 - matthew-piziak:add-rhs-example, r=steveklabnikJonathan Turner-0/+12
demonstrate `RHS != Self` use cases for `Add` and `Sub`
2016-08-31replace `../` with `../../std/` to support `core` docsMatthew Piziak-2/+2
2016-08-31Rollup merge of #35927 - matthew-piziak:bitandassign-example, r=GuillaumeGomezJonathan Turner-9/+51
replace `BitAndAssign` example with something more evocative This is the augmented-assignment version of PR #35809. r? @GuillaumeGomez
2016-08-31Rollup merge of #35926 - matthew-piziak:bit-or-xor-examples, r=GuillaumeGomezJonathan Turner-18/+81
add evocative examples for `BitOr` and `BitXor` These are exactly equivalent to PR #35809, with one caveat: I do not believe there is a non-bitwise binary XOR operator in Rust, so here it's expressed as `(a || b) && !(a && b)`. Alternative decompositions are `(a && !b) || (!a && b)` and `(a || b) && (!a || !b)`. Let me know if you think one of those would be clearer. r? @GuillaumeGomez
2016-08-30replace `BitAndAssign` example with something more evocativeMatthew Piziak-9/+51
This is the augmented-assignment version of PR #35809. r? @GuillaumeGomez improved documentation a la PR #35993
2016-08-30add evocative examples for `BitOr` and `BitXor`Matthew Piziak-18/+81
These are exactly equivalent to PR #35809, with one caveat: I do not believe there is a non-bitwise binary "xor" operator in Rust, so here it's expressed as (a || b) && !(a && b). r? @GuillaumeGomez improved documentation a la PR #35993
2016-08-30Rollup merge of #35993 - matthew-piziak:bitwise-and-redux, r=GuillaumeGomezGuillaume Gomez-21/+41
improve `BitAnd` trait documentation This pull request is based on the discussion in PR #35927. Add a module-level note that `&&` and `||` are short-circuiting operators and not overloadable. Add a simple `Scalar` example that lifts the `&` operator to a trivial struct tuple. Make `BooleanVector` a struct tuple. Derive `PartialEq` for `BooleanVector` instead of implementing it. Adds a `fn main` wrapper so that the example can integrate with Rust Playground.
2016-08-30Rollup merge of #35863 - matthew-piziak:shl-example, r=steveklabnikGuillaume Gomez-18/+76
add evocative examples for `Shl` and `Shr` r? @steveklabnik
2016-08-30Rollup merge of #35810 - matthew-piziak:fn-trait-example, r=steveklabnikGuillaume Gomez-0/+165
improve documentation for `Fn*` traits This PR is not yet a serious attempt at contribution. Rather, I'm opening this for discussion. I can think of a few things we may want to accomplish with the documentation of the `Fn`, `FnMut`, and `FnOnce` traits: - the relationship between these traits and the closures that implement them - examples of non-closure implementations - the relationship between these traits and Rust's ownership semantics
2016-08-30Rollup merge of #35771 - matthew-piziak:range-inclusive-example-error, ↵Guillaume Gomez-12/+43
r=steveklabnik show how iterating over `RangeTo` and `RangeToInclusive` fails Feedback on PR #35701 seems to be positive, so this does the same thing for `RangeTo` and `RangeToInclusive`.
2016-08-29demonstrate `RHS != Self` use cases for `Add` and `Sub`Matthew Piziak-0/+12
remove extra `../`s
2016-08-26improve `BitAnd` trait documentationMatthew Piziak-21/+41
This pull request is based on the discussion in PR #35927. Add a module-level note that `&&` and `||` are short-circuiting operators and not overloadable. Add a simple `Scalar` example that lifts the `&` operator to a trivial struct tuple. Make `BooleanVector` a struct tuple. Derive `PartialEq` for `BooleanVector` instead of implementing it. Adds a `fn main` wrapper so that the example can integrate with Rust Playground. simplified bitand expression add a comment explaining what "rhs" means
2016-08-25Auto merge of #35906 - jseyfried:local_prelude, r=eddybbors-6/+1
Use `#[prelude_import]` in `libcore` and `libstd` r? @eddyb
2016-08-24Use `#[prelude_import]` in `libcore`.Jeffrey Seyfried-6/+1
2016-08-24Rollup merge of #35876 - matthew-piziak:sub-examples, r=GuillaumeGomezJonathan Turner-19/+43
more evocative examples for `Sub` and `SubAssign` These examples are exactly analogous to those in PRs #35709 and #35806. I'll probably remove the `fn main` wrappers for `Add` and `Sub` once this is merged in. Part of #29365. r? @steveklabnik
2016-08-23add more-evocative examples for `Shl` and `Shr`Matthew Piziak-18/+76
r? @steveklabnik add examples that lift `<<` and `>>` to a trivial struct replace `Scalar` structs with struct tuples add `fn main` wrappers to enable Rust Playground "Run" button
2016-08-23replace `Div` example with something more evocative of divisionMatthew Piziak-9/+52
Analogous to PR #35860. r? @GuillaumeGomez
2016-08-23improve documentation for `Fn*` traitsMatthew Piziak-0/+165
I can think of a few things we may want to accomplish with the documentation of the `Fn`, `FnMut`, and `FnOnce` traits: - the relationship between these traits and the closures that implement them - examples of non-closure implementations - the relationship between these traits and Rust's ownership semantics add module-level documentation for `Fn*` traits Describe how `Fn*` traits, closure types, and ownership semantics are linked, and provide examples of higher-level functions that take `Fn*`s. more examples for `Fn*` traits create correct (though not yet elegant) examples for `FnMut` and `FnOnce` add trait links to module-level documentation third time's a charm! argument -> capture for trait documentation This wording will need to be supported with better examples for capturing eventually. correct `FnOnce` example I also fixed some of the trait wording here to make the concept of capturing clearer; though that still needs more work. replace `x + x` with `x * 2` for `fn double`
2016-08-22Rollup merge of #35864 - matthew-piziak:index-example, r=GuillaumeGomezJonathan Turner-13/+29
replace `Index` example with something more evocative of indexing r? @steveklabnik
2016-08-22Rollup merge of #35861 - matthew-piziak:rem-example, r=GuillaumeGomezJonathan Turner-11/+19
replace `Rem` example with something more evocative r? @steveklabnik
2016-08-22Rollup merge of #35860 - matthew-piziak:mul-example, r=GuillaumeGomezJonathan Turner-10/+47
replace `Mul` example with something more evocative of multiplication I may have gone a bit overboard on this one. Numbers are fun.
2016-08-22Rollup merge of #35809 - matthew-piziak:bitwise-and-example, r=GuillaumeGomezJonathan Turner-12/+27
replace `BitAnd` example with something more evocative of bitwise AND
2016-08-22more evocative examples for `Sub` and `SubAssign`Matthew Piziak-19/+43
These examples are exactly analogous to those in PRs #35709 and #35806. I'll probably remove the `fn main` wrappers for `Add` and `Sub` once this is merged in. Part of #29365. r? @steveklabnik
2016-08-22replace `BitAnd` example with something more evocative of bitwise ANDMatthew Piziak-12/+27
reformat method chain according to ubsan Rustic Style Guide https://ubsan.github.io/style/
2016-08-22replace `Mul` example with something more evocative of multiplicationMatthew Piziak-10/+47
I may have gone a bit overboard on this one. Numbers are fun. tone down the error message
2016-08-21Auto merge of #35777 - nrc:carrier3, r=@nikomatsakisbors-0/+72
Carrier trait (third attempt) This adds a `Carrier` trait to operate with `?`. The only public implementation is for `Result`, so effectively the trait does not exist, however, it ensures future compatibility for the `?` operator. This is not intended to be used, nor is it intended to be a long-term solution. Although this exact PR has not been through Crater, I do not expect it to be a breaking change based on putting numerous similar PRs though Crater in the past. cc: * [? tracking issue](https://github.com/rust-lang/rust/issues/31436) * [previous PR](https://github.com/rust-lang/rust/pull/35056) * [RFC issue](https://github.com/rust-lang/rfcs/issues/1718) for discussion of long-term Carrier trait solutions. r? @nikomatsakis
2016-08-20replace `Index` example with something more evocative of indexingMatthew Piziak-13/+29
r? @steveklabnik
2016-08-20replace `Rem` example with something more evocativeMatthew Piziak-11/+19
r? @steveklabnik
2016-08-20show how iterating over `RangeTo` and `RangeToInclusive` failsMatthew Piziak-12/+43
Feedback on PR #35701 seems to be positive, so this does the same thing for `RangeTo` and `RangeToInclusive`.
2016-08-20Rollup merge of #35830 - matthew-piziak:not-example, r=steveklabnikJonathan Turner-11/+22
replace `Neg` example with something more evocative of negation
2016-08-20Rollup merge of #35827 - matthew-piziak:neg-example, r=steveklabnikJonathan Turner-11/+16
replace `Not` example with something more evocative
2016-08-20Rollup merge of #35806 - matthew-piziak:addassign-example, r=steveklabnikJonathan Turner-10/+21
replace `AddAssign` example with something more evocative of addition This is analogous to PR #35709 for the `Add` trait.
2016-08-20Rollup merge of #35800 - matthew-piziak:mul-div-examples, r=steveklabnikJonathan Turner-0/+62
demonstrate `RHS != Self` use cases for `Mul` and `Div` Vector-scalar multipication is a good usecase for this. Thanks #rust!
2016-08-20Rollup merge of #35710 - matthew-piziak:explicit-drop, r=steveklabnikJonathan Turner-0/+7
note that calling drop() explicitly is a compiler error Part of #29365
2016-08-20Rollup merge of #35709 - matthew-piziak:add-trait-example, r=GuillaumeGomezJonathan Turner-11/+23
replace `Add` example with something more evocative of addition Currently most of the operator traits use trivial implementation examples that only perform side effects. Honestly, that might not be too bad for the sake of documentation; but anyway, here's a proposal to move a slightly modified version of the module-level point-addition example into the `Add` documentation, since it's more evocative of addition semantics. Part of #29365
2016-08-20Rollup merge of #35701 - matthew-piziak:rangefull-example-error, r=steveklabnikJonathan Turner-7/+20
explicitly show how iterating over `..` fails I've also removed the `main()` wrapper, which I believe is extraneous. LMK if that's incorrect.
2016-08-19replace `Neg` example with something more evocative of negationMatthew Piziak-11/+22
2016-08-19replace `Not` example with something more evocativeMatthew Piziak-11/+16
2016-08-19Remove the Option and bool impls for carrier and add a dummy implNick Cameron-60/+7
The dummy impl should ensure the same type checking behaviour as having other (real) Carrier impls.
2016-08-18replace `AddAssign` example with something more evocative of additionMatthew Piziak-10/+21
This is analogous to PR #35709 for the `Add` trait.
2016-08-18note that calling drop() explicitly is a compiler errorMatthew Piziak-0/+7
Part of #29365 explain that std::mem::drop in prelude will invoke Drop change "prelude" -> "the prelude"; change links to reference-style move link references to links' section
2016-08-18split example into three sections with explanationMatthew Piziak-3/+14
2016-08-18demonstrate `RHS != Self` use cases for `Mul` and `Div`Matthew Piziak-0/+62
Vector-scalar multipication is a good usecase for this. Thanks #rust!
2016-08-18Use a Carrier trait with the `?` operatorNick Cameron-0/+125
Allows use with `Option` and custom `Result`-like types.
2016-08-17replace Add example with something more evocative of additionMatthew Piziak-11/+23
Currently most of the operator traits use trivial implementation examples that only perform side effects. Honestly, that might not be too bad for the sake of documentation; but anyway, here's a proposal to move a slightly modified version of the module-level point-addition example into the `Add` documentation, since it's more evocative of addition semantics. Part of #29365 wrap identifiers in backticks minor rephrasing fix module-level documentation to be more truthful This branch changes the example for `Add` to no longer be a "minimum implementation that prints something to the screen".
2016-08-16RangeFull for-loop iteration fails because of IntoIteratorMatthew Piziak-1/+1
Saying that "[for-loop iteration] fails because .. has no IntoIterator impl" is more direct than saying "...no Iterator impl" because for loops sugar into IntoIterator invocations. It just happens that the other Range* operators implement Iterator and rely on the fact that `IntoIterator` is implemented for `T: Iterator`.
2016-08-15explicitly show how iterating over `..` failsMatthew Piziak-8/+10
I've also removed the `main()` wrapper, which I believe is extraneous. LMK if that's incorrect.
2016-08-15expound on limitations of Rust's trait-based operator overloadingMatthew Piziak-3/+8
Part of #29330
2016-07-08Stabilize `FnOnce::Output` + Fix rebasepetrochenkov-1/+1
2016-07-03std: Stabilize APIs for the 1.11.0 releaseAlex Crichton-23/+1
Although the set of APIs being stabilized this release is relatively small, the trains keep going! Listed below are the APIs in the standard library which have either transitioned from unstable to stable or those from unstable to deprecated. Stable * `BTreeMap::{append, split_off}` * `BTreeSet::{append, split_off}` * `Cell::get_mut` * `RefCell::get_mut` * `BinaryHeap::append` * `{f32, f64}::{to_degrees, to_radians}` - libcore stabilizations mirroring past libstd stabilizations * `Iterator::sum` * `Iterator::product` Deprecated * `{f32, f64}::next_after` * `{f32, f64}::integer_decode` * `{f32, f64}::ldexp` * `{f32, f64}::frexp` * `num::One` * `num::Zero` Added APIs (all unstable) * `iter::Sum` * `iter::Product` * `iter::Step` - a few methods were added to accomodate deprecation of One/Zero Removed APIs * `From<Range<T>> for RangeInclusive<T>` - everything about `RangeInclusive` is unstable Closes #27739 Closes #27752 Closes #32526 Closes #33444 Closes #34152 cc #34529 (new tracking issue)