pub struct MtpDeviceInfo {
pub vendor_id: u16,
pub product_id: u16,
pub manufacturer: Option<String>,
pub product: Option<String>,
pub serial_number: Option<String>,
pub location_id: u64,
}Expand description
Information about an MTP device (without opening it).
This struct provides device identification at multiple levels:
-
Device identity (
vendor_id,product_id,serial_number): Identifies a specific physical device. Use this to recognize “John’s phone” regardless of which USB port it’s plugged into. -
Port identity (
location_id): Identifies the physical USB port/location. Use this when you care about “the device on port 3” rather than which specific device it is. Stable across reconnections to the same port. -
Display info (
manufacturer,product): Human-readable strings for showing device info to users.
§Example
let devices = MtpDevice::list_devices()?;
for dev in &devices {
println!("{} {} (serial: {:?})",
dev.manufacturer.as_deref().unwrap_or("Unknown"),
dev.product.as_deref().unwrap_or("Unknown"),
dev.serial_number);
}
// Save location_id to remember "the device on this port"
// Save serial_number to remember "this specific phone"Fields§
§vendor_id: u16USB vendor ID (assigned by USB-IF to each company).
Examples: Google = 0x18d1, Samsung = 0x04e8, Apple = 0x05ac
product_id: u16USB product ID (assigned by vendor to each product model).
Note: The same device may report different product IDs depending on its USB mode (MTP, ADB, charging-only, etc.).
manufacturer: Option<String>Manufacturer name from USB descriptor.
Examples: "Google", "Samsung", "Apple Inc."
None if the device doesn’t report a manufacturer string.
product: Option<String>Product name from USB descriptor.
Examples: "Pixel 9 Pro XL", "Galaxy S24"
None if the device doesn’t report a product string.
serial_number: Option<String>Serial number uniquely identifying this specific device.
Combined with vendor_id and product_id, this globally identifies
a single physical device. Survives reconnection to different ports.
None if the device doesn’t report a serial number.
location_id: u64Physical USB location identifier.
Identifies the USB port/path where the device is connected. Stable across reconnections to the same physical port, but changes if the device is moved to a different port.
Platform details:
- macOS: IOKit
locationIDencoding the port path - Linux: Derived from sysfs bus/port path
- Windows:
LocationInformationproperty
Implementations§
Trait Implementations§
Source§impl Clone for MtpDeviceInfo
impl Clone for MtpDeviceInfo
Source§fn clone(&self) -> MtpDeviceInfo
fn clone(&self) -> MtpDeviceInfo
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more