1use anyhow::Result;
2use async_trait::async_trait;
3
4#[cfg(feature = "exiv2")]
5pub mod exif;
6
7mod heic;
8mod internal;
9mod jpeg;
10mod scoped_reader;
11
12pub use heic::heic;
13pub use jpeg::jpeg;
14
15use tokio::io::AsyncWrite;
16
17#[async_trait]
18pub trait ExtractRawExif {
19 async fn extract(&self) -> Result<Option<Vec<u8>>>;
20}
21
22#[async_trait]
23pub trait CopyWithRawExif {
24 async fn copy_with_raw_exif(
25 &self,
26 exif: &[u8],
27 writer: impl AsyncWrite + Send + Sync + Unpin,
28 ) -> Result<()>;
29}