4 ms·
Sort of, this API enables static dispatch, but it could also have been written as pub fn read<P: AsRef<Path>>(path: &dyn P) -> Result<Vec<u8>> In which cas
by K0nserv 2y ago
Sort of, this API enables static dispatch, but it could also have been written as
pub fn read<P: AsRef<Path>>(path: &dyn P) -> Result<Vec<u8>>
In which case the size of `path` is always the same(two words[0]) and the same machine code could be used regardless of how the function is called. Rust still cares about the memory layout but because `&dyn AsRef<Path>` has the same layout for all implementations of `AsRef<Path>` there's no need for monomorphization[1].
0: https://doc.rust-lang.org/1.80.1/reference/types/trait-object.html https://doc.rust-lang.org/1.80.1/reference/types/trait-objec...
1: https://rustc-dev-guide.rust-lang.org/backend/monomorph.html#monomorphization https://rustc-dev-guide.rust-lang.org/backend/monomorph.html...