Hacker News new | past | comments | ask | show | jobs | submit login

Indeed! I somewhat over-use this in Rust to initialize an immutable variable with mutating code.

  let var: Vec<u32>;              // this one is immutable, will be initialized later
  {
    let mut var_;                 // mutable
    …                             // initialize var_ with some mutating code
    var = var_;                   // now move var_ to var, initializing the latter
  }



This is a bit simpler as:

  let var = {
      let mut var = ...

      var
   };
that is, you can assign the result of the block directly. That way you don't need two variables with the _ name as the second.


Couldn't you just write:

  let var: Vec<u32> = {
    let mut var_;
    …
    var_
  };
Or, better still:

  let mut var: Vec<u32>;
  …
  let var = var;


You can also initialize it to an expression, e.g.

    let var = {
      let mut var_ = Vec::new();
      var_.push(1u32);
      var_
    };




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: