rust-usd 0.0.4

Rust bindings to OpenUSD (pxr C++): stage open, prim/mesh attrs, variants, sublayer authoring, UsdShade read+write, ArResolver hook.
use std::env;
use std::process;

use rust_usd::Stage;

fn main() {
    let path = env::args().nth(1).unwrap_or_else(|| {
        eprintln!("usage: dump_textures <path-to-usd-file>");
        process::exit(2);
    });

    let stage = Stage::open(&path).unwrap_or_else(|e| {
        eprintln!("failed to open stage: {}", e.what());
        process::exit(1);
    });

    let meshes = stage.meshes();
    if meshes.is_empty() {
        println!("(no UsdGeomMesh prims in {})", path);
        return;
    }

    for mesh in meshes {
        let paths = mesh.bound_texture_paths();
        if paths.is_empty() {
            println!("{}: (no bound textures)", mesh.prim_path());
        } else {
            println!("{}:", mesh.prim_path());
            for p in paths {
                println!("  {}", p);
            }
        }
    }
}