David Parnas
Information Distribution Aspects of Design Methodology, 1971
The Rust borrowing and lifetime concept help to express the assumptions being made between modules.
Defining an API, it is not about the signature of methods only, but also about the assumption about the usage and lifetime of the input and output data.