Add libavfutil

The library has common utilities for various components in AVF.

Bug: 295168844
Test: atest libavfutil.test
Change-Id: If24309f480d0704c6bcba9c193a4caf578ee9d51
diff --git a/virtualizationmanager/Android.bp b/virtualizationmanager/Android.bp
index 59e507f..1b5be9f 100644
--- a/virtualizationmanager/Android.bp
+++ b/virtualizationmanager/Android.bp
@@ -27,6 +27,7 @@
         "libandroid_logger",
         "libanyhow",
         "libapkverify",
+        "libavfutil",
         "libbase_rust",
         "libbinder_rs",
         "libclap",
diff --git a/virtualizationmanager/src/aidl.rs b/virtualizationmanager/src/aidl.rs
index ae81a17..b890baf 100644
--- a/virtualizationmanager/src/aidl.rs
+++ b/virtualizationmanager/src/aidl.rs
@@ -50,6 +50,7 @@
 };
 use anyhow::{anyhow, bail, Context, Result};
 use apkverify::{HashAlgorithm, V4Signature};
+use avfutil::LogResult;
 use binder::{
     self, wait_for_interface, BinderFeatures, ExceptionCode, Interface, ParcelFileDescriptor,
     Status, StatusCode, Strong,
@@ -77,20 +78,6 @@
 use vsock::VsockStream;
 use zip::ZipArchive;
 
-/// Convenient trait for logging an error while returning it
-trait LogResult<T, E> {
-    fn with_log(self) -> std::result::Result<T, E>;
-}
-
-impl<T, E: std::fmt::Debug> LogResult<T, E> for std::result::Result<T, E> {
-    fn with_log(self) -> std::result::Result<T, E> {
-        self.map_err(|e| {
-            error!("{e:?}");
-            e
-        })
-    }
-}
-
 /// The unique ID of a VM used (together with a port number) for vsock communication.
 pub type Cid = u32;