On Mon, Jun 30, 2025 at 10:30 AM Danilo Krummrich <dakr@xxxxxxxxxx> wrote:
On 6/28/25 1:18 AM, Matthew Maurer wrote:
+ fn create_file<D: ForeignOwnable>(&self, _name: &CStr, data: D) -> File
+ where
+ for<'a> D::Borrowed<'a>: Display,
+ {
+ File {
+ _foreign: ForeignHolder::new(data),
+ }
}
What's the motivation for the ForeignHolder abstraction? Why not just make it
File<D> and store data directly?
1. A `File<D>` can't be held in collection data structures as easily
unless all your files contain the *same* backing type.
2. None of the APIs or potential APIs for `File` care about which type
it's wrapping, nor are they supposed to. If nothing you can do with a
`File` is different depending on the backing type, making it
polymorphic is just needlessly confusing.