Type annotations are not there for the compiler; they're there for people reading the code. If I want to use some function I don't want to be forced to read the entire implementation to figure out what the lifetime of the return value is.
Steven Fackler On Thu, May 15, 2014 at 9:30 PM, Tommi <rusty.ga...@icloud.com> wrote: > On 2014-05-16, at 7:14, Daniel Micay <danielmi...@gmail.com> wrote: > > > On 16/05/14 12:10 AM, Tommi wrote: > >> I was just wondering, why do we have to explicitly specify the > lifetimes of references returned from functions? Couldn't the compiler > figure those lifetimes out by itself by analyzing the code in the function? > > > > Type inference is local to functions, so it couldn't do that. It would > > be impossible to have libraries if inference needed to be global across > > the entire program, and the errors would be *signicantly* harder to > > understand as they would span across countless functions. > > I'm sorry, but for some reason I completely fail to understand your > explanation. > > My thinking of how the compiler would work is that whenever it compiles a > function, it would analyze it and in some sense "write in" the named > lifetimes for that function. The named lifetimes would still be explicitly > part of the signature of the function in the compiler's internal > representation of the function, but not be visible in the source code. > > _______________________________________________ > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev >
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev