> For the complete documentation index, see [llms.txt](https://gl-docs.gitbook.io/zkpass/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gl-docs.gitbook.io/zkpass/zkpass-developers-guide/sdk-tutorial/rust/directory-structure.md).

# Directory Structure

Here's the directory structure for Rust SDK tutorial.

```
├── Cargo.lock
├── cargo-test.sh
├── Cargo.toml
├── download-so.sh
├── generate-docs.sh
├── lib
│   └── libdvr_client.so
├── localization
│   ├── en-US.ftl
│   └── id-ID.ftl
├── privacy-apps
│   ├── client_utils
│   └── dvr_types
├── README.md
├── rust-toolchain.toml
├── target
│   ├── CACHEDIR.TAG
│   ├── debug
│   ├── release
│   └── tmp
├── test
│   └── data
├── test.sh
├── zkpass-core
│   ├── Cargo.toml
│   └── src
├── zkpass-demo
│   ├── Cargo.toml
│   ├── src
│   ├── test
│   └── tests
└── zkpass-query
    ├── risc0
    ├── sp1
    └── types
```

The privacy-apps components :

1. DVR types provide the necessary definitions for developers to interact with `libdvr_client.so`.&#x20;
2. Client utils contain FFI helpers for working with DVR types.

```
zkpass-demo
├── Cargo.toml
├── src
│   ├── data_holder.rs
│   ├── data_issuer.rs
│   ├── helper.rs
│   ├── lib_loader.rs
│   ├── main.rs
│   ├── proof_verifier.rs
│   ├── sample_keys.rs
│   ├── sample_proof.rs
│   └── test.rs
├── test
│   └── data
│       └── multiple
└── tests
    └── integration_test.rs
```

The zkpass-demo components :

1. `data_holder.rs`: Handles the entire process, from generating tokens to verifying proofs.
2. `data_issuer.rs`: Manages the process of generating user data tokens.
3. `proof_verifier.rs`: Handles the generation of DVR tokens and the proof verification process.
4. `lib_loader.rs`: Contains the detailed logic for interacting with `libdvr_client.so`.
