Add libavfutil

The library has common utilities for various components in AVF.

Bug: 295168844
Test: atest libavfutil.test
Change-Id: If24309f480d0704c6bcba9c193a4caf578ee9d51
diff --git a/microdroid_manager/Android.bp b/microdroid_manager/Android.bp
index d854d54..f23c442 100644
--- a/microdroid_manager/Android.bp
+++ b/microdroid_manager/Android.bp
@@ -15,6 +15,7 @@
         "android.system.virtualization.payload-rust",
         "libandroid_logger",
         "libanyhow",
+        "libavfutil",
         "libapexutil_rust",
         "libapkverify",
         "libbinder_rs",
diff --git a/microdroid_manager/src/vm_payload_service.rs b/microdroid_manager/src/vm_payload_service.rs
index b44b0db..7cc0826 100644
--- a/microdroid_manager/src/vm_payload_service.rs
+++ b/microdroid_manager/src/vm_payload_service.rs
@@ -19,26 +19,13 @@
     BnVmPayloadService, IVmPayloadService, VM_PAYLOAD_SERVICE_SOCKET_NAME};
 use android_system_virtualmachineservice::aidl::android::system::virtualmachineservice::IVirtualMachineService::IVirtualMachineService;
 use anyhow::{anyhow, Context, Result};
+use avfutil::LogResult;
 use binder::{Interface, BinderFeatures, ExceptionCode, Strong, IntoBinderResult};
 use diced_open_dice::{DiceArtifacts, OwnedDiceArtifacts};
-use log::{error, info};
+use log::info;
 use rpcbinder::RpcServer;
 use std::os::unix::io::OwnedFd;
 
-/// 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
-        })
-    }
-}
-
 /// Implementation of `IVmPayloadService`.
 struct VmPayloadService {
     allow_restricted_apis: bool,