title: Function returning named ValueTuple and success flag
body: <p>I am running into this situation again and again, I want a function to return both a named ValueTuple and a success flag</p>
  
  <p>All the options I can think of are not great :(</p>
  
  <p><strong>Option1:</strong></p>
  
  <pre><code>bool MyFunc(T1 param, out (Type1 name1, Type2 name2)? result)
  
  if (!MyFunc(param, out var result)) { .. .. my error handling }
  
  .. do stuff with `result.Value.name1` and `result.Value.name2`
  </code></pre>
  
  <p>Ugly with needing to define result and needing <code>result.Value</code> everywhere</p>
  
  <p><br>
  <strong>Option2:</strong></p>
  
  <pre><code>bool MyFunc(T1 param, out (Type1 name1, Type2 name2)? result)
  
  if (!MyFunc(param, out var result)) { .. .. my error handling }
  var (name1, name2) = result.Value;
  
  .. do stuff with name1, name2
  </code></pre>
  
  <p>Ugly with needing to define result and to explicitly destruct the tuple
  <br></p>
  
  <p><strong>Option 3</strong>:</p>
  
  <pre><code>(Type1 name1, Type2 name2)? MyFunc(Type3 param) {}
  
  var myFuncRes = myFunc(param);
  if (myFuncRes is null) { .. my error handling }
  
  .. do stuff with myFuncRes.Value.name1 etc 
  </code></pre>
  
  <p>Ugly with needing <code>myFuncRes</code> and <code>.Value</code> or explicitly destructing the tuple</p>
  
  <p><br></p>
  
  <p>What I would like to be able to do is something like:</p>
  
  <pre><code>(Type1 name1, Type2 name2)? MyFunc(T1 param)
  
  if (var myFuncRes = MyFunc(param) is null) { .. .. my error handling }
  
  .. do stuff with `myFuncRes.name1` and `myFuncRes.name2` directly !
  </code></pre>
  
  <p>This is my explicit intention .. but this is not allowed </p>
  
  <p><br></p>
  
  <p>Are there better ways or common solutions ?</p>
  
  <p>(Note I am not interested in throwing exceptions here)</p>