23 releases (7 stable)

1.3.1 Jan 15, 2024
1.2.0 Dec 28, 2023
1.0.1 Jul 29, 2023
1.0.0 Nov 29, 2022
0.1.2 Jul 10, 2015

#28 in Filesystem

Download history 721761/week @ 2024-08-20 700015/week @ 2024-08-27 726361/week @ 2024-09-03 728442/week @ 2024-09-10 656184/week @ 2024-09-17 730842/week @ 2024-09-24 724262/week @ 2024-10-01 749800/week @ 2024-10-08 756085/week @ 2024-10-15 776843/week @ 2024-10-22 755224/week @ 2024-10-29 744175/week @ 2024-11-05 783991/week @ 2024-11-12 760655/week @ 2024-11-19 642409/week @ 2024-11-26 600565/week @ 2024-12-03

2,917,483 downloads per month
Used in 2,636 crates (63 directly)

MIT/Apache

28KB
657 lines

xattr

A small library for setting, getting, and listing extended attributes.

Supported Platforms: Android, Linux, MacOS, FreeBSD, and NetBSD.

API Documentation: https://docs.rs/xattr/latest/xattr/

Unsupported Platforms

This library includes no-op support for unsupported Unix platforms. That is, it will build on all Unix platforms but always fail on unsupported Unix platforms.

  1. You can turn this off by disabling the default unsupported feature. If you do so, this library will fail to compile on unsupported platforms.
  2. Alternatively, you can detect unsupported platforms at runtime by checking the xattr::SUPPORTED_PLATFORM boolean.

lib.rs:

A pure-Rust library to manage extended attributes.

It provides support for manipulating extended attributes (xattrs) on modern Unix filesystems. See the attr(5) manpage for more details.

An extension trait FileExt is provided to directly work with standard File objects and file descriptors.

If the path argument is a symlink, the get/set/list/remove functions operate on the symlink itself. To operate on the symlink target, use the _deref variant of these functions.

let mut xattrs = xattr::list("/").unwrap().peekable();

if xattrs.peek().is_none() {
    println!("no xattr set on root");
    return;
}

println!("Extended attributes:");
for attr in xattrs {
    println!(" - {:?}", attr);
}

Dependencies

~1–10MB
~132K SLoC