As of right now, the [partition_schema is built](https://github.com/apache/iceberg-rust/blob/main/crates/iceberg/src/scan.rs#L209-L223) in every iteration for each `ManifestFile` regardless if it has the same partition_spec. This could be optimized as well by caching the partition_schema, similar to the [partition filter](https://github.com/apache/iceberg-rust/blob/main/crates/iceberg/src/scan.rs#L396-L429). Also the unnecessary clones ([here](https://github.com/apache/iceberg-rust/blob/main/crates/iceberg/src/scan.rs#L215), [here](https://github.com/apache/iceberg-rust/blob/main/crates/iceberg/src/scan.rs#L222)) could be removed, or only be "lazily cloned" if we have a cache miss.