title: What does &* combined together do in Rust?
body: <p>I was reading through the book section about <code>String</code>s and found they were using <code>&amp;*</code> combined together to convert a piece of text. The following is what it says:</p>
  
  <pre><code>use std::net::TcpStream;
  
  TcpStream::connect("192.168.0.1:3000"); // Parameter is of type &amp;str.
  
  let addr_string = "192.168.0.1:3000".to_string();
  TcpStream::connect(&amp;*addr_string); // Convert `addr_string` to &amp;str.
  </code></pre>
  
  <p>In other words, they are saying they are converting a <code>String</code> to a <code>&amp;str</code>. But why is that conversion done using both of the aforementioned signs? Should this not be done using some other method? Does not the <code>&amp;</code> mean we are taking its reference, then using the <code>*</code> to dereference it?</p>