crates_tools

Crates.iocrates_tools
lib.rscrates_tools
version0.14.0
sourcesrc
created_at2023-11-30 12:16:14.982741
updated_at2024-10-30 10:23:44.766154
descriptionTools to analyse crate files.
homepagehttps://github.com/Wandalen/wTools/tree/master/module/move/crates_tools
repositoryhttps://github.com/Wandalen/wTools/tree/master/module/move/crates_tools
max_upload_size
id1054124
size23,996
Wandalen (Wandalen)

documentation

https://docs.rs/crates_tools

README

Module :: crates_tools

experimental rust-status docs.rs Open in Gitpod discord

Tools to analyse crate files.

A crate file is a package of Rust source code that can be downloaded from crates.io, the official Rust package registry. A crate file has the extension .crate and contains a compressed archive of the source code and other files needed to compile and run the crate.

crate_tools allows you to download and read and decode the .crate files. You can then use the CrateArchive struct to list and access the contents of the file as bytes.

This crate is useful for developers who want to inspect and analyze Rust crates. Some possible use cases are:

  • Compare the source code of different versions of a crate to see what has changed;
  • Search for leftover confidential data before publishing;
  • Analyze the size of packed files.

Sample :: show crate content

use crates_tools::*;

fn main()
{
  #[ cfg( feature = "enabled" ) ]
  {
    // download a package with specific version from `crates.io`
    let crate_archive = CrateArchive::download_crates_io( "test_experimental_c", "0.1.0" ).unwrap();

    for path in crate_archive.list()
    {
      // take content from a specific file from the archive
      let bytes = crate_archive.content_bytes( path ).unwrap();
      let string = std::str::from_utf8( bytes ).unwrap();

      println!("# {}\n```\n{}```", path.display(), string);
    }
  }
}

To add to your project

cargo add crates_tools

Try out from the repository

git clone https://github.com/Wandalen/wTools
cd wTools/module/move/crates_tools
cargo r --example show_crate_content
Commit count: 0

cargo fmt