函数,应当被区分成两种:纯函数和改写函数。
在 Rust 中,如果一个函数会修改数据,那么传入的参数在标记上,就会和那些不会修改参数内容的函数不同。
在 Haskell 中,只有纯函数,不纯的函数的实现比较复杂,而在 C 语言中,修改数据的函数,在垃圾回收的时候要小心了,因为经过函数调用,就会出现数据更新,谨慎的垃圾回收策略会消除这些改动。
99.9% 的函数调用只会使用一次临时数据,只有极少的过程中,多次调用一个数据,在所有权的系统中,如果被函数调用拿走使用权,那么就会被提前清理掉。
在 C 中,所有的垃圾回收都要自己处理,在 Rust 中,所有要保留的东西,都要及时声明,这么好的卫生环境,当然要有良好的卫生习惯才能适应。