I have a function similar to the following
class Bar {
  deinit {
    print("Do some cleanup")
  }
}
func foo() -> Bar {
  return Bar()
}
The scope of Bar is clear when calling it like this:
func useFoo() {
    let bar = foo()
    runFunctionA()
    // bar goes out of scope: "Do some cleanup" is printed
}
However, what happens when the return value is ignored, will it go immediately out of scope?
func useFoo() {
    let _ = foo()
    // "Do some cleanup" is printed here?
    runFunctionA()
    // "Do some cleanup" is printed here?
}
Also, does it make a difference if let _ = foo() is used or only _ = foo()?