В API передача права собственности — это способ разделения компонентов. Если что-то передается в качестве ссылки, создатель (вызывающий) должен позаботиться об очистке и синхронизации. Передача чего-либо в качестве значения (передача права собственности) позволяет отделить вызывающую сторону от вызывающего метода. Если у вызывающего метода есть жизненный цикл владельца (например, поток), то передача права собственности упрощает все.

Мой вынос

У меня было подсознательное ощущение, что передача по праву собственности уступает передаче по ссылке. Это тонкая идея, которую я почерпнул из книги по Rust. Он переходит от передачи по значению к деталям передачи по ссылке, подразумевая, что ссылка является более точной, чем передача по значению. Это неправда.

Передача по значению может быть проще и удобнее в некоторых случаях, и это не «последний вариант», это очень хороший вариант для уменьшения связи между компонентами.