diff --git a/libs/libforwarder/Android.bp b/libs/libforwarder/Android.bp
new file mode 100644
index 0000000..48307e7
--- /dev/null
+++ b/libs/libforwarder/Android.bp
@@ -0,0 +1,15 @@
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+rust_library {
+    name: "libforwarder",
+    crate_name: "forwarder",
+    edition: "2021",
+    srcs: ["src/lib.rs"],
+    rustlibs: [
+        "liblibc",
+        "libvsock",
+    ],
+    proc_macros: ["libremain"],
+}
diff --git a/libs/libforwarder/src/forwarder.rs b/libs/libforwarder/src/forwarder.rs
index 89c75d5..3600ab2 100644
--- a/libs/libforwarder/src/forwarder.rs
+++ b/libs/libforwarder/src/forwarder.rs
@@ -15,6 +15,8 @@
 // Copied from ChromiumOS with relicensing:
 // src/platform2/vm_tools/chunnel/src/forwarder.rs
 
+//! This module contains forwarding mechanism between stream sockets.
+
 use std::fmt;
 use std::io::{self, Read, Write};
 use std::result;
@@ -62,19 +64,13 @@
 fn forward(from_stream: &mut StreamSocket, to_stream: &mut StreamSocket) -> Result<bool> {
     let mut buf = [0u8; MAX_FRAME_SIZE];
 
-    let count = from_stream
-        .read(&mut buf)
-        .map_err(ForwarderError::ReadFromStream)?;
+    let count = from_stream.read(&mut buf).map_err(ForwarderError::ReadFromStream)?;
     if count == 0 {
-        to_stream
-            .shut_down_write()
-            .map_err(ForwarderError::ShutDownStream)?;
+        to_stream.shut_down_write().map_err(ForwarderError::ShutDownStream)?;
         return Ok(true);
     }
 
-    to_stream
-        .write_all(&buf[..count])
-        .map_err(ForwarderError::WriteToStream)?;
+    to_stream.write_all(&buf[..count]).map_err(ForwarderError::WriteToStream)?;
     Ok(false)
 }
 
diff --git a/libs/libforwarder/src/lib.rs b/libs/libforwarder/src/lib.rs
index 9c2c7a3..bcce689 100644
--- a/libs/libforwarder/src/lib.rs
+++ b/libs/libforwarder/src/lib.rs
@@ -15,5 +15,7 @@
 // Copied from ChromiumOS with relicensing:
 // src/platform2/vm_tools/chunnel/src/lib.rs
 
+//! Library for stream socket forwarding.
+
 pub mod forwarder;
 pub mod stream;
diff --git a/libs/libforwarder/src/stream.rs b/libs/libforwarder/src/stream.rs
index 2b48498..d8c7f51 100644
--- a/libs/libforwarder/src/stream.rs
+++ b/libs/libforwarder/src/stream.rs
@@ -15,6 +15,8 @@
 // Copied from ChromiumOS with relicensing:
 // src/platform2/vm_tools/chunnel/src/stream.rs
 
+//! This module provides abstraction of various stream socket type.
+
 use std::fmt;
 use std::io;
 use std::net::TcpStream;
@@ -35,12 +37,8 @@
     }
 
     Ok(VsockAddr::new(
-        components[1]
-            .parse()
-            .map_err(|_| io::Error::from_raw_os_error(libc::EINVAL))?,
-        components[2]
-            .parse()
-            .map_err(|_| io::Error::from_raw_os_error(libc::EINVAL))?,
+        components[1].parse().map_err(|_| io::Error::from_raw_os_error(libc::EINVAL))?,
+        components[2].parse().map_err(|_| io::Error::from_raw_os_error(libc::EINVAL))?,
     ))
 }
 
@@ -79,6 +77,7 @@
 
     /// Shuts down writes to the socket using shutdown(2).
     pub fn shut_down_write(&mut self) -> io::Result<()> {
+        // SAFETY:
         // Safe because no memory is modified and the return value is checked.
         let ret = unsafe { shutdown(self.fd, SHUT_WR) };
         if ret < 0 {
@@ -97,6 +96,7 @@
 
 impl io::Read for StreamSocket {
     fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
+        // SAFETY:
         // Safe because this will only modify the contents of |buf| and we check the return value.
         let ret = unsafe { libc::read(self.fd, buf.as_mut_ptr() as *mut c_void, buf.len()) };
         if ret < 0 {
@@ -109,6 +109,7 @@
 
 impl io::Write for StreamSocket {
     fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+        // SAFETY:
         // Safe because this doesn't modify any memory and we check the return value.
         let ret = unsafe { libc::write(self.fd, buf.as_ptr() as *const c_void, buf.len()) };
         if ret < 0 {
@@ -140,42 +141,31 @@
 
 impl From<TcpStream> for StreamSocket {
     fn from(stream: TcpStream) -> Self {
-        StreamSocket {
-            fd: stream.into_raw_fd(),
-            shut_down: false,
-        }
+        StreamSocket { fd: stream.into_raw_fd(), shut_down: false }
     }
 }
 
 impl From<UnixStream> for StreamSocket {
     fn from(stream: UnixStream) -> Self {
-        StreamSocket {
-            fd: stream.into_raw_fd(),
-            shut_down: false,
-        }
+        StreamSocket { fd: stream.into_raw_fd(), shut_down: false }
     }
 }
 
 impl From<VsockStream> for StreamSocket {
     fn from(stream: VsockStream) -> Self {
-        StreamSocket {
-            fd: stream.into_raw_fd(),
-            shut_down: false,
-        }
+        StreamSocket { fd: stream.into_raw_fd(), shut_down: false }
     }
 }
 
 impl FromRawFd for StreamSocket {
     unsafe fn from_raw_fd(fd: RawFd) -> Self {
-        StreamSocket {
-            fd,
-            shut_down: false,
-        }
+        StreamSocket { fd, shut_down: false }
     }
 }
 
 impl Drop for StreamSocket {
     fn drop(&mut self) {
+        // SAFETY:
         // Safe because this doesn't modify any memory and we are the only
         // owner of the file descriptor.
         unsafe { libc::close(self.fd) };
@@ -186,8 +176,11 @@
 #[remain::sorted]
 #[derive(Debug)]
 pub enum StreamSocketError {
+    /// Error on connecting TCP socket.
     ConnectTcp(String, io::Error),
+    /// Error on connecting unix socket.
     ConnectUnix(String, io::Error),
+    /// Error on connecting vsock socket.
     ConnectVsock(String, io::Error),
 }
 
