{"push_id":573037543,"size":5,"distinct_size":5,"ref":"refs/heads/object-lifetime-defaults-2","head":"ea825452d89bff91d303f9c532b441e344139dd5","before":"232d0b08de0232aa59e38d52dcc46ee360d3306e","commits":[{"sha":"372ebab6b2af5ccc406846855a66c78ced285771","author":{"email":"4cc33a8ae3d9bb448f90bf63a1d4018698b1fb94@alum.mit.edu","name":"Niko Matsakis"},"message":"Implement the basic rules of RFC 599, but do not yet support custom types.","distinct":true,"url":"https://api.github.com/repos/nikomatsakis/rust/commits/372ebab6b2af5ccc406846855a66c78ced285771"},{"sha":"b7605da48af3d2703e2fb5ec84489bd15128563c","author":{"email":"4cc33a8ae3d9bb448f90bf63a1d4018698b1fb94@alum.mit.edu","name":"Niko Matsakis"},"message":"Factor out the \"region substs\" creation to occur earlier, so that the\ncomplete set of regions are available when converting types.","distinct":true,"url":"https://api.github.com/repos/nikomatsakis/rust/commits/b7605da48af3d2703e2fb5ec84489bd15128563c"},{"sha":"76d493bd0b9d1cc75cf6769d70060d847b8e7353","author":{"email":"4cc33a8ae3d9bb448f90bf63a1d4018698b1fb94@alum.mit.edu","name":"Niko Matsakis"},"message":"Add `#[rustc_error]` annotation, which causes trans to signal an error\nif found on the `main()` function. This lets you write tests that live\nin `compile-fail` but are expected to compile successfully. This is\nhandy when you have many small variations on a theme that you want to\nkeep together, and you are just testing the type checker, not the\nruntime semantics.","distinct":true,"url":"https://api.github.com/repos/nikomatsakis/rust/commits/76d493bd0b9d1cc75cf6769d70060d847b8e7353"},{"sha":"cfe095d112a3cbee874ab502c93c365051ba3b60","author":{"email":"4cc33a8ae3d9bb448f90bf63a1d4018698b1fb94@alum.mit.edu","name":"Niko Matsakis"},"message":"Implement the rules for RFC 599, and add various tests.\nFixes #22211.","distinct":true,"url":"https://api.github.com/repos/nikomatsakis/rust/commits/cfe095d112a3cbee874ab502c93c365051ba3b60"},{"sha":"ea825452d89bff91d303f9c532b441e344139dd5","author":{"email":"4cc33a8ae3d9bb448f90bf63a1d4018698b1fb94@alum.mit.edu","name":"Niko Matsakis"},"message":"Fix fallout in libsyntax from RFC 599. Clarity and efficiency seems to be mostly improved, to my eye.\nNonetheless, as this commit demonstrates, the previous commits was a [breaking-change].\n\nIn practice, breakage is focused on functions of this form:\n\n```rust\nfn foo(..., object: Box<FnMut()>)\n````\n\nwhere `FnMut()` could be any trait object type. The older scheme defaulted objects in argument\nposition so that they were bounded by a fresh lifetime:\n\n```rust\nfn foo<'a>(..., object: Box<FnMut()+'a>)\n```\n\nThis meant that the object could contain borrowed data. The newer\nscheme defaults to a lifetime bound of `'static`:\n\n```rust\nfn foo(..., object: Box<FnMut()+'static>)\n```\n\nThis means that the object cannot contain borrowed data. In some cases, the best fix\nis to stop using `Box`:\n\n```rust\nfn foo(..., object: &mut FnMut())\n```\n\nbut another option is to write an explicit annotation for the `'a`\nlifetime that used to be implicit.  Both fixes are demonstrated in\nthis commit.","distinct":true,"url":"https://api.github.com/repos/nikomatsakis/rust/commits/ea825452d89bff91d303f9c532b441e344139dd5"}]}