build(deps): upgrade zip 3 → 9

Bump the zip crate from 3 to 9 in the workspace Cargo.toml and
adapt to the API change in 2.0+: last_modified_time now takes
Option<DateTime> instead of DateTime directly.

- crates/io/src/lib.rs: wrap DateTime::default() in Some(...)
- crates/geometry/src/tagged_mesh.rs: same fix in the 3MF writer

Closes #134
This commit is contained in:
Skywalkingzulu1 authored and Irakli Kourtis committed 2026-10-15 15:08:13 -04:00
1 parent a6f1a6dbeb
commit 8e28283dad
3 files changed
+4 -4

No files matched your search

+2 -2
View File
@@ -35,8 +35,8 @@ serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["float_roundtrip"] } serde_json = { version = "1", features = ["float_roundtrip"] }
log = "0.4" log = "0.4"
# 3MF packages (docs/formats/tagged-mesh.md). # 3MF packages (docs/formats/tagged-mesh.md). zip is ahead of SolidCraft (still on 3), so both are built.
zip = { version = "3", default-features = false, features = ["deflate"] } zip = { version = "9", default-features = false, features = ["deflate"] }
quick-xml = "0.42" quick-xml = "0.42"
# content hashes and part checksums of .fieldcraft files (the version SolidCraft uses) # content hashes and part checksums of .fieldcraft files (the version SolidCraft uses)
+1 -1
View File
@@ -446,7 +446,7 @@ mod tests {
for (name, data) in [("[Content_Types].xml", types), ("_rels/.rels", rels), ("3D/3dmodel.model", x.as_str())] { for (name, data) in [("[Content_Types].xml", types), ("_rels/.rels", rels), ("3D/3dmodel.model", x.as_str())] {
let o = zip::write::SimpleFileOptions::default() let o = zip::write::SimpleFileOptions::default()
.compression_method(zip::CompressionMethod::Deflated) .compression_method(zip::CompressionMethod::Deflated)
.last_modified_time(zip::DateTime::default()); .last_modified_time(Some(zip::DateTime::default()));
zip.start_file(name, o).unwrap(); zip.start_file(name, o).unwrap();
zip.write_all(data.as_bytes()).unwrap(); zip.write_all(data.as_bytes()).unwrap();
} }
+1 -1
View File
@@ -335,7 +335,7 @@ pub fn write(model: &Model, geometry: &Geometry, journal: &[JournalEntry], view:
// Fixed time and permissions: the bytes depend on the model only. // Fixed time and permissions: the bytes depend on the model only.
let options = zip::write::SimpleFileOptions::default() let options = zip::write::SimpleFileOptions::default()
.compression_method(zip::CompressionMethod::Stored) .compression_method(zip::CompressionMethod::Stored)
.last_modified_time(zip::DateTime::default()) .last_modified_time(Some(zip::DateTime::default()))
.unix_permissions(0o644) .unix_permissions(0o644)
.large_file(bytes.len() as u64 >= u64::from(u32::MAX)); .large_file(bytes.len() as u64 >= u64::from(u32::MAX));
zip.start_file(name, options).map_err(zip_error)?; zip.start_file(name, options).map_err(zip_error)?;