You <i>can</i>, e.g.<p><pre><code>  struct Foo;

  impl Foo {
      fn bar(&amp;self) {}
  }

  fn main() {
      let x = Foo;
      Foo::bar(&amp;x);
  }
</code></pre>
What you may be encountering is you can&#x27;t pass a `Foo` when a `&amp;Foo` is expected (why I needed to write &amp;x), because the types differ. Calls with method syntax don&#x27;t see this because they automatically borrow the receiver if necessary, but explicit function calls do not do this sort of borrowing and so the types need to line up right.