# Really confusing behavior of type inference with \`consuming\`

**URL:** <https://forums.swift.org/t/really-confusing-behavior-of-type-inference-with-consuming/69194>\
**Category:** Discussion\
**Created:** [December 28, 2023, 8:47pm UTC](https://forums.swift.org/t/really-confusing-behavior-of-type-inference-with-consuming/69194 "2023-12-28T20:47:44Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![taylorswift](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/taylorswift/32/43413_2.png) [@taylorswift](https://forums.swift.org/u/taylorswift)\
**Post date:** [December 30, 2023, 1:54am UTC](https://forums.swift.org/t/really-confusing-behavior-of-type-inference-with-consuming/69194/5 "2023-12-30T01:54:28Z")

</div>

> [@Nobody1707](#):
>
> I was under the impression that `consuming` was the official version of ` __owned`, and that being able to directly mutate the parameter was the only real difference between the unstable feature and the stable one. I had expected all the implicilty `__ owned` parameters to act as `consuming` in compilers that support ownership since the lack of mutablity is a purely artificial constraint and not affected by ABI. It's really weird that they don't.

` __owned` is solely about ARC convention, an `__ owned` parameter still [lives for the entire duration](https://forums.swift.org/t/having-a-hard-time-understanding-anchored-arc-lifetimes/62757/4) of the function’s execution, so if you mutate it inside the function it will always copy since the parameter itself is immutable and cannot be eagerly moved into something mutable.

---

_[View the full topic](https://forums.swift.org/t/really-confusing-behavior-of-type-inference-with-consuming/69194)._
