• @hairyballs
    link
    1
    edit-2
    8 months ago

    There are still obvious things the BC cannot get. For example:

    struct Foo;
    
    impl Foo {
        fn num(&mut self) -> usize { 0 }
        fn index(&mut self, _i: usize) { }
    }
    
    let foo = Foo;
    foo.index(foo.num()); //error
    
    • @sirdorius
      link
      2
      edit-2
      8 months ago

      This looks like a pretty easy fix that the compiler could do by extracting the argument to a temp variable to improve the syntax of the language.

    • @KillTheMule
      link
      1
      edit-2
      8 months ago

      Note that when you change num to take &self instead, this works out (you also need to mark foo as mutable, of course).

      • @hairyballs
        link
        18 months ago

        It’s a toy example. In that case, the solution is to assign the expression to a variable to compute its result upfront.