├── .gitignore ├── example ├── build.rs ├── rust-toolchain.toml ├── proto │ └── ping.proto ├── Cargo.toml ├── src │ ├── server.rs │ └── client.rs └── Cargo.lock ├── rust-toolchain.toml ├── rustfmt.toml ├── Cargo.toml ├── .github └── workflows │ ├── typos.yml │ └── ci.yml ├── taplo.toml ├── src └── lib.rs ├── README.md ├── LICENSE └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | **/target 2 | /wip 3 | 4 | .editorconfig 5 | .idea 6 | -------------------------------------------------------------------------------- /example/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tonic_build::compile_protos("proto/ping.proto").unwrap(); 3 | } 4 | -------------------------------------------------------------------------------- /rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "1.80.0" 3 | components = ["cargo", "rustfmt", "clippy", "rust-analyzer"] 4 | -------------------------------------------------------------------------------- /example/rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "1.80.0" 3 | components = ["cargo", "rustfmt", "clippy", "rust-analyzer"] 4 | -------------------------------------------------------------------------------- /rustfmt.toml: -------------------------------------------------------------------------------- 1 | comment_width = 120 2 | edition = "2021" 3 | format_code_in_doc_comments = true 4 | group_imports = "StdExternalCrate" 5 | imports_granularity = "Item" 6 | normalize_comments = true 7 | overflow_delimited_expr = true 8 | reorder_imports = true 9 | style_edition = "2024" 10 | trailing_comma = "Vertical" 11 | where_single_line = true 12 | wrap_comments = true 13 | -------------------------------------------------------------------------------- /example/proto/ping.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package grpc.examples.ping; 4 | 5 | // PingRequest is the request for ping. 6 | message PingRequest { 7 | string message = 1; 8 | } 9 | 10 | // PingResponse is the response for ping. 11 | message PingResponse { 12 | string message = 1; 13 | } 14 | 15 | // Ping is the service for ping. 16 | service Ping { 17 | // Ping the server. 18 | rpc Ping(PingRequest) returns (PingResponse) {} 19 | } 20 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "fastrace-tonic" 3 | version = "0.1.1" 4 | 5 | categories = ["development-tools::debugging"] 6 | description = "A tonic instrument for propagating trace context for fastrace" 7 | keywords = ["tracing", "fastrace", "tonic", "traceparent", "propagation"] 8 | readme = "README.md" 9 | 10 | edition = "2021" 11 | license = "Apache-2.0" 12 | repository = "https://github.com/fast/fastrace-tonic" 13 | rust-version = "1.80" 14 | 15 | [dependencies] 16 | fastrace = "0.7" 17 | http = "1.2" 18 | tower-layer = "0.3" 19 | tower-service = "0.3" 20 | -------------------------------------------------------------------------------- /.github/workflows/typos.yml: -------------------------------------------------------------------------------- 1 | name: Typos Check 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | pull_request: 7 | branches: [ main ] 8 | 9 | concurrency: 10 | group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} 11 | cancel-in-progress: true 12 | 13 | env: 14 | RUST_BACKTRACE: 1 15 | 16 | jobs: 17 | typos-check: 18 | name: typos check 19 | runs-on: ubuntu-latest 20 | timeout-minutes: 10 21 | env: 22 | FORCE_COLOR: 1 23 | steps: 24 | - uses: actions/checkout@v4 25 | - uses: crate-ci/typos@master 26 | -------------------------------------------------------------------------------- /example/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2021" 3 | license = "Apache-2.0" 4 | name = "example" 5 | publish = false 6 | 7 | [dependencies] 8 | fastrace = { version = "0.7", features = ["enable"] } 9 | fastrace-tonic = { path = ".." } 10 | prost = "0.13" 11 | tokio = { version = "1.44", features = ["full"] } 12 | tonic = "0.12" 13 | tower = "0.5" 14 | 15 | [build-dependencies] 16 | tonic-build = { version = "0.12", features = ["prost"] } 17 | 18 | [[bin]] 19 | name = "client" 20 | path = "src/client.rs" 21 | 22 | [[bin]] 23 | name = "server" 24 | path = "src/server.rs" 25 | -------------------------------------------------------------------------------- /taplo.toml: -------------------------------------------------------------------------------- 1 | include = ["Cargo.toml", "**/*.toml"] 2 | 3 | [formatting] 4 | # Align consecutive entries vertically. 5 | align_entries = false 6 | # Append trailing commas for multi-line arrays. 7 | array_trailing_comma = true 8 | # Expand arrays to multiple lines that exceed the maximum column width. 9 | array_auto_expand = true 10 | # Collapse arrays that don't exceed the maximum column width and don't contain comments. 11 | array_auto_collapse = true 12 | # Omit white space padding from single-line arrays 13 | compact_arrays = true 14 | # Omit white space padding from the start and end of inline tables. 15 | compact_inline_tables = false 16 | # Maximum column width in characters, affects array expansion and collapse, this doesn't take whitespace into account. 17 | # Note that this is not set in stone, and works on a best-effort basis. 18 | column_width = 80 19 | # Indent based on tables and arrays of tables and their subtables, subtables out of order are not indented. 20 | indent_tables = false 21 | # The substring that is used for indentation, should be tabs or spaces (but technically can be anything). 22 | indent_string = ' ' 23 | # Add trailing newline at the end of the file if not present. 24 | trailing_newline = true 25 | # Alphabetically reorder keys that are not separated by empty lines. 26 | reorder_keys = true 27 | # Maximum amount of allowed consecutive blank lines. This does not affect the whitespace at the end of the document, as it is always stripped. 28 | allowed_blank_lines = 1 29 | # Use CRLF for line endings. 30 | crlf = false 31 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | pull_request: 7 | branches: [ main ] 8 | 9 | env: 10 | CARGO_TERM_COLOR: always 11 | 12 | jobs: 13 | build: 14 | runs-on: ${{ matrix.os }} 15 | strategy: 16 | fail-fast: false 17 | matrix: 18 | os: [ windows-latest, macos-latest, ubuntu-latest ] 19 | rust: [ "1.80.0", "stable", "nightly" ] 20 | env: 21 | RUST_BACKTRACE: 1 22 | steps: 23 | - uses: actions/checkout@v4 24 | - name: Delete rust-toolchain.toml 25 | run: rm rust-toolchain.toml 26 | - name: Delete example/rust-toolchain.toml 27 | run: rm example/rust-toolchain.toml 28 | - uses: Swatinem/rust-cache@v2 29 | - uses: dtolnay/rust-toolchain@master 30 | with: 31 | toolchain: ${{ matrix.rust }} 32 | components: rustfmt, clippy 33 | 34 | - name: Check format 35 | if: ${{ matrix.rust == 'nightly' }} 36 | run: cargo +${{ matrix.rust }} fmt --all -- --check 37 | 38 | - name: Check clippy 39 | if: ${{ matrix.rust == 'nightly' }} 40 | run: cargo +${{ matrix.rust }} clippy --all-targets --all-features -- --deny warnings 41 | 42 | - name: Build 43 | run: cargo +${{ matrix.rust }} build --workspace --all-targets 44 | 45 | - name: Install Protoc 46 | uses: arduino/setup-protoc@v3 47 | with: 48 | repo-token: ${{ secrets.GITHUB_TOKEN }} 49 | 50 | - name: Check examples 51 | run: | 52 | cd example 53 | cargo +${{ matrix.rust }} check --bin client 54 | cargo +${{ matrix.rust }} check --bin server 55 | -------------------------------------------------------------------------------- /example/src/server.rs: -------------------------------------------------------------------------------- 1 | //! # Example gRPC Server with fastrace Tracing 2 | //! 3 | //! This example demonstrates how to use fastrace with a Tonic gRPC server. 4 | //! The server responds to ping requests and traces the requests using fastrace. 5 | 6 | pub mod ping { 7 | tonic::include_proto!("grpc.examples.ping"); 8 | } 9 | 10 | use fastrace::collector::Config; 11 | use fastrace::collector::ConsoleReporter; 12 | use ping::PingRequest; 13 | use ping::PingResponse; 14 | use ping::ping_server::Ping; 15 | use ping::ping_server::PingServer; 16 | use tonic::Request; 17 | use tonic::Response; 18 | use tonic::Status; 19 | use tonic::transport::Server; 20 | 21 | /// Simple ping service implementation. 22 | #[derive(Debug, Default)] 23 | pub struct MyPing {} 24 | 25 | #[tonic::async_trait] 26 | impl Ping for MyPing { 27 | /// Handles ping requests and responds with "pong". 28 | #[fastrace::trace] 29 | async fn ping(&self, _req: Request) -> Result, Status> { 30 | let reply = PingResponse { 31 | message: "pong".to_string(), 32 | }; 33 | Ok(Response::new(reply)) 34 | } 35 | } 36 | 37 | #[tokio::main] 38 | async fn main() -> Result<(), Box> { 39 | // Initialize the fastrace reporter with a console reporter. 40 | fastrace::set_reporter(ConsoleReporter, Config::default()); 41 | 42 | // Build and start the server with the fastrace server layer. 43 | // This layer will extract trace context from incoming requests. 44 | Server::builder() 45 | .layer(fastrace_tonic::FastraceServerLayer) 46 | .add_service(PingServer::new(MyPing::default())) 47 | .serve("[::1]:50051".parse().unwrap()) 48 | .await?; 49 | 50 | // Flush any remaining traces before the program exits. 51 | fastrace::flush(); 52 | 53 | Ok(()) 54 | } 55 | -------------------------------------------------------------------------------- /example/src/client.rs: -------------------------------------------------------------------------------- 1 | //! # Example gRPC Client with fastrace Tracing 2 | //! 3 | //! This example demonstrates how to use fastrace with a Tonic gRPC client. 4 | //! The client sends ping requests to a server and traces the requests using fastrace. 5 | 6 | pub mod ping { 7 | tonic::include_proto!("grpc.examples.ping"); 8 | } 9 | 10 | use fastrace::collector::Config; 11 | use fastrace::collector::ConsoleReporter; 12 | use fastrace::prelude::*; 13 | use ping::PingRequest; 14 | use ping::ping_client::PingClient; 15 | use tonic::transport::Channel; 16 | use tower::ServiceBuilder; 17 | 18 | #[tokio::main] 19 | async fn main() -> Result<(), Box> { 20 | // Initialize the fastrace reporter with a console reporter. 21 | fastrace::set_reporter(ConsoleReporter, Config::default()); 22 | 23 | { 24 | // Create a root span for the client operation. 25 | let root = Span::root("client".to_string(), SpanContext::random()); 26 | let _g = root.set_local_parent(); 27 | 28 | ping().await?; 29 | } 30 | 31 | // Flush any remaining traces before the program exits. 32 | fastrace::flush(); 33 | 34 | Ok(()) 35 | } 36 | 37 | /// Sends a ping request to the server with tracing. 38 | /// 39 | /// This function demonstrates how to set up a Tonic gRPC client with the fastrace 40 | /// middleware for tracing and context propagation. 41 | #[fastrace::trace] 42 | async fn ping() -> Result<(), Box> { 43 | // Connect to the gRPC server. 44 | let channel = Channel::from_static("[::1]:50051").connect().await?; 45 | 46 | // Apply the fastrace client layer to the channel. 47 | // This layer will add trace context to outgoing requests. 48 | let channel = ServiceBuilder::new() 49 | .layer(fastrace_tonic::FastraceClientLayer) 50 | .service(channel); 51 | 52 | // Create the client with the enhanced channel. 53 | let mut client = PingClient::new(channel); 54 | 55 | // Create and send a request. 56 | let request = tonic::Request::new(PingRequest { 57 | message: "ping".to_string(), 58 | }); 59 | let response = client.ping(request).await?; 60 | 61 | println!("{}", response.get_ref().message); 62 | 63 | Ok(()) 64 | } 65 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | #![doc = include_str!("../README.md")] 2 | 3 | use std::task::Context; 4 | use std::task::Poll; 5 | 6 | use fastrace::prelude::*; 7 | use http::HeaderValue; 8 | use http::Request; 9 | use tower_layer::Layer; 10 | use tower_service::Service; 11 | 12 | /// The standard [W3C Trace Context](https://www.w3.org/TR/trace-context/) header name for passing trace information. 13 | /// 14 | /// This is the header key used to propagate trace context between services according to 15 | /// the W3C Trace Context specification. 16 | pub const TRACEPARENT_HEADER: &str = "traceparent"; 17 | 18 | /// Server layer for intercepting and processing trace context in incoming requests. 19 | /// 20 | /// This layer extracts tracing context from incoming requests and creates a new span 21 | /// for each request. Add this to your tonic server to automatically handle trace context 22 | /// propagation. 23 | #[derive(Clone)] 24 | pub struct FastraceServerLayer; 25 | 26 | impl Layer for FastraceServerLayer { 27 | type Service = FastraceServerService; 28 | 29 | fn layer(&self, service: S) -> Self::Service { 30 | FastraceServerService { service } 31 | } 32 | } 33 | 34 | /// Server-side service that handles trace context propagation. 35 | /// 36 | /// This service extracts trace context from incoming requests and creates 37 | /// spans to track the request processing. It wraps the inner service and augments 38 | /// it with tracing capabilities. 39 | #[derive(Clone)] 40 | pub struct FastraceServerService { 41 | service: S, 42 | } 43 | 44 | impl Service> for FastraceServerService 45 | where S: Service> 46 | { 47 | type Response = S::Response; 48 | type Error = S::Error; 49 | type Future = fastrace::future::InSpan; 50 | 51 | fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { 52 | self.service.poll_ready(cx) 53 | } 54 | 55 | fn call(&mut self, req: Request) -> Self::Future { 56 | let headers = req.headers(); 57 | let parent = headers.get(TRACEPARENT_HEADER).and_then(|traceparent| { 58 | SpanContext::decode_w3c_traceparent(traceparent.to_str().ok()?) 59 | }); 60 | 61 | let span = if let Some(parent) = parent { 62 | Span::root(req.uri().to_string(), parent) 63 | } else { 64 | Span::noop() 65 | }; 66 | 67 | self.service.call(req).in_span(span) 68 | } 69 | } 70 | 71 | /// Client layer for injecting trace context into outgoing requests. 72 | /// 73 | /// This layer adds the current trace context to outgoing requests, 74 | /// allowing the receiving service to continue the same trace. Add this 75 | /// to your tonic client to automatically propagate trace context. 76 | #[derive(Clone)] 77 | pub struct FastraceClientLayer; 78 | 79 | impl Layer for FastraceClientLayer { 80 | type Service = FastraceClientService; 81 | 82 | fn layer(&self, service: S) -> Self::Service { 83 | FastraceClientService { service } 84 | } 85 | } 86 | 87 | /// Client-side service that handles trace context propagation. 88 | /// 89 | /// This service injects the current trace context into outgoing requests, 90 | /// allowing distributed tracing across service boundaries. 91 | #[derive(Clone)] 92 | pub struct FastraceClientService { 93 | service: S, 94 | } 95 | 96 | impl Service> for FastraceClientService 97 | where S: Service> 98 | { 99 | type Response = S::Response; 100 | type Error = S::Error; 101 | type Future = S::Future; 102 | 103 | fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { 104 | self.service.poll_ready(cx) 105 | } 106 | 107 | fn call(&mut self, mut req: Request) -> Self::Future { 108 | if let Some(current) = SpanContext::current_local_parent() { 109 | req.headers_mut().insert( 110 | TRACEPARENT_HEADER, 111 | HeaderValue::from_str(¤t.encode_w3c_traceparent()).unwrap(), 112 | ); 113 | } 114 | 115 | self.service.call(req) 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # fastrace-tonic 2 | 3 | [![Crates.io](https://img.shields.io/crates/v/fastrace-tonic.svg?style=flat-square&logo=rust)](https://crates.io/crates/fastrace-tonic) 4 | [![Documentation](https://img.shields.io/docsrs/fastrace-tonic?style=flat-square&logo=rust)](https://docs.rs/fastrace-tonic/) 5 | [![MSRV 1.80.0](https://img.shields.io/badge/MSRV-1.80.0-green?style=flat-square&logo=rust)](https://www.whatrustisit.com) 6 | [![CI Status](https://img.shields.io/github/actions/workflow/status/fast/fastrace-tonic/ci.yml?style=flat-square&logo=github)](https://github.com/fast/fastrace-tonic/actions) 7 | [![License](https://img.shields.io/crates/l/fastrace-tonic?style=flat-square)](https://github.com/fast/fastrace-tonic/blob/main/LICENSE) 8 | 9 | `fastrace-tonic` is a middleware library that connects [fastrace](https://crates.io/crates/fastrace), a distributed tracing library, with [tonic](https://crates.io/crates/tonic), a gRPC framework for Rust. This integration enables seamless trace context propagation across microservice boundaries in gRPC-based applications. 10 | 11 | ## What is Context Propagation? 12 | 13 | Context propagation is a fundamental concept in distributed tracing that enables the correlation of operations spanning multiple services. When a request moves from one service to another, trace context information needs to be passed along, ensuring that all operations are recorded as part of the same trace. 14 | 15 | `fastrace-tonic` implements the [W3C Trace Context](https://www.w3.org/TR/trace-context/) standard for propagating trace information between services. This ensures compatibility with other tracing systems that follow the same standard. 16 | 17 | ## Features 18 | 19 | - 🔄 **Automatic Context Propagation**: Automatically inject trace context into outgoing gRPC requests. 20 | - 🌉 **Seamless Integration**: Works seamlessly with the `fastrace` library for complete distributed tracing. 21 | - 📊 **Full Compatibility**: Works with fastrace's collection and reporting capabilities. 22 | 23 | ## Installation 24 | 25 | Add `fastrace-tonic` to your Cargo.toml: 26 | 27 | ```toml 28 | [dependencies] 29 | fastrace = "0.7" 30 | fastrace-tonic = "0.1" 31 | ``` 32 | 33 | ### Server Integration 34 | 35 | Apply the `FastraceServerLayer` to your tonic server: 36 | 37 | ```rust 38 | use fastrace_tonic::FastraceServerLayer; 39 | use tonic::transport::Server; 40 | 41 | #[tokio::main] 42 | async fn main() -> Result<(), Box> { 43 | // Initialize fastrace reporter. 44 | fastrace::set_reporter(ConsoleReporter, Config::default()); 45 | 46 | // Add FastraceServerLayer to your tonic server. 47 | Server::builder() 48 | .layer(FastraceServerLayer) 49 | .add_service(YourServiceServer::new(YourService::default())) 50 | .serve("[::1]:50051".parse()?) 51 | .await?; 52 | 53 | fastrace::flush(); 54 | 55 | Ok(()) 56 | } 57 | ``` 58 | 59 | ### Client Integration 60 | 61 | Apply the `FastraceClientLayer` to your tonic client: 62 | 63 | ```rust 64 | use fastrace_tonic::FastraceClientLayer; 65 | use tower::ServiceBuilder; 66 | 67 | async fn make_client_call() -> Result<(), Box> { 68 | // Create channel with FastraceClientLayer. 69 | let channel = tonic::transport::Channel::from_static("http://[::1]:50051") 70 | .connect() 71 | .await?; 72 | 73 | let channel = ServiceBuilder::new() 74 | .layer(FastraceClientLayer) 75 | .service(channel); 76 | 77 | // Create client with the enhanced channel. 78 | let mut client = YourServiceClient::new(channel); 79 | 80 | // Make calls as usual. 81 | let response = client.your_method(Request::new(YourRequest {})).await?; 82 | 83 | Ok(()) 84 | } 85 | ``` 86 | 87 | ## Example 88 | 89 | Check out the [examples directory](https://github.com/fast/fastrace-tonic/tree/main/example) for a complete ping/pong service example that demonstrates both client and server tracing. 90 | 91 | To run the example: 92 | 93 | 1. Navigate to the example directory: 94 | ``` 95 | cd example 96 | ``` 97 | 98 | 2. Start the server: 99 | ``` 100 | cargo run --bin server 101 | ``` 102 | 103 | 3. In another terminal, run the client: 104 | ``` 105 | cargo run --bin client 106 | ``` 107 | 108 | Both applications will output trace information showing the request flow, including the propagated context. 109 | 110 | ## How It Works 111 | 112 | 1. When a client makes a request, `FastraceClientLayer` detects if there's an active trace and adds a `traceparent` HTTP header with the trace context. 113 | 2. When a server receives the request, `FastraceServerLayer` extracts the trace context from the `traceparent` header and creates a new span as a child of the received context. 114 | 3. If no trace context is provided, the server creates a new root span. 115 | 116 | This process ensures that all operations across services are properly connected in the resulting trace, providing visibility into the entire request lifecycle. 117 | 118 | ## License 119 | 120 | This project is licensed under the [Apache-2.0](./LICENSE) license. 121 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "autocfg" 7 | version = "1.4.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" 10 | 11 | [[package]] 12 | name = "bitflags" 13 | version = "2.9.0" 14 | source = "registry+https://github.com/rust-lang/crates.io-index" 15 | checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" 16 | 17 | [[package]] 18 | name = "bumpalo" 19 | version = "3.17.0" 20 | source = "registry+https://github.com/rust-lang/crates.io-index" 21 | checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" 22 | 23 | [[package]] 24 | name = "bytes" 25 | version = "1.10.1" 26 | source = "registry+https://github.com/rust-lang/crates.io-index" 27 | checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 28 | 29 | [[package]] 30 | name = "cfg-if" 31 | version = "1.0.0" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 34 | 35 | [[package]] 36 | name = "fastant" 37 | version = "0.1.10" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "62bf7fa928ce0c4a43bd6e7d1235318fc32ac3a3dea06a2208c44e729449471a" 40 | dependencies = [ 41 | "small_ctor", 42 | "web-time", 43 | ] 44 | 45 | [[package]] 46 | name = "fastrace" 47 | version = "0.7.8" 48 | source = "registry+https://github.com/rust-lang/crates.io-index" 49 | checksum = "773324bb245e34a32d704c2256871377f9d7cdb4acff10c555e0dc068d6ddb55" 50 | dependencies = [ 51 | "fastant", 52 | "fastrace-macro", 53 | "once_cell", 54 | "parking_lot", 55 | "pin-project", 56 | "rand", 57 | "rtrb", 58 | "serde", 59 | ] 60 | 61 | [[package]] 62 | name = "fastrace-macro" 63 | version = "0.7.8" 64 | source = "registry+https://github.com/rust-lang/crates.io-index" 65 | checksum = "fce8ba9d9d06711bc0c3fb287689e41550d8501a0c3ac5a61c60693644e0f059" 66 | dependencies = [ 67 | "proc-macro-error2", 68 | "proc-macro2", 69 | "quote", 70 | "syn", 71 | ] 72 | 73 | [[package]] 74 | name = "fastrace-tonic" 75 | version = "0.1.1" 76 | dependencies = [ 77 | "fastrace", 78 | "http", 79 | "tower-layer", 80 | "tower-service", 81 | ] 82 | 83 | [[package]] 84 | name = "fnv" 85 | version = "1.0.7" 86 | source = "registry+https://github.com/rust-lang/crates.io-index" 87 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 88 | 89 | [[package]] 90 | name = "getrandom" 91 | version = "0.3.2" 92 | source = "registry+https://github.com/rust-lang/crates.io-index" 93 | checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" 94 | dependencies = [ 95 | "cfg-if", 96 | "libc", 97 | "r-efi", 98 | "wasi", 99 | ] 100 | 101 | [[package]] 102 | name = "http" 103 | version = "1.3.1" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" 106 | dependencies = [ 107 | "bytes", 108 | "fnv", 109 | "itoa", 110 | ] 111 | 112 | [[package]] 113 | name = "itoa" 114 | version = "1.0.15" 115 | source = "registry+https://github.com/rust-lang/crates.io-index" 116 | checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 117 | 118 | [[package]] 119 | name = "js-sys" 120 | version = "0.3.77" 121 | source = "registry+https://github.com/rust-lang/crates.io-index" 122 | checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 123 | dependencies = [ 124 | "once_cell", 125 | "wasm-bindgen", 126 | ] 127 | 128 | [[package]] 129 | name = "libc" 130 | version = "0.2.171" 131 | source = "registry+https://github.com/rust-lang/crates.io-index" 132 | checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" 133 | 134 | [[package]] 135 | name = "lock_api" 136 | version = "0.4.12" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 139 | dependencies = [ 140 | "autocfg", 141 | "scopeguard", 142 | ] 143 | 144 | [[package]] 145 | name = "log" 146 | version = "0.4.26" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" 149 | 150 | [[package]] 151 | name = "once_cell" 152 | version = "1.21.1" 153 | source = "registry+https://github.com/rust-lang/crates.io-index" 154 | checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" 155 | 156 | [[package]] 157 | name = "parking_lot" 158 | version = "0.12.3" 159 | source = "registry+https://github.com/rust-lang/crates.io-index" 160 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 161 | dependencies = [ 162 | "lock_api", 163 | "parking_lot_core", 164 | ] 165 | 166 | [[package]] 167 | name = "parking_lot_core" 168 | version = "0.9.10" 169 | source = "registry+https://github.com/rust-lang/crates.io-index" 170 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 171 | dependencies = [ 172 | "cfg-if", 173 | "libc", 174 | "redox_syscall", 175 | "smallvec", 176 | "windows-targets", 177 | ] 178 | 179 | [[package]] 180 | name = "pin-project" 181 | version = "1.1.10" 182 | source = "registry+https://github.com/rust-lang/crates.io-index" 183 | checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" 184 | dependencies = [ 185 | "pin-project-internal", 186 | ] 187 | 188 | [[package]] 189 | name = "pin-project-internal" 190 | version = "1.1.10" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" 193 | dependencies = [ 194 | "proc-macro2", 195 | "quote", 196 | "syn", 197 | ] 198 | 199 | [[package]] 200 | name = "ppv-lite86" 201 | version = "0.2.21" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 204 | dependencies = [ 205 | "zerocopy", 206 | ] 207 | 208 | [[package]] 209 | name = "proc-macro-error-attr2" 210 | version = "2.0.0" 211 | source = "registry+https://github.com/rust-lang/crates.io-index" 212 | checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" 213 | dependencies = [ 214 | "proc-macro2", 215 | "quote", 216 | ] 217 | 218 | [[package]] 219 | name = "proc-macro-error2" 220 | version = "2.0.1" 221 | source = "registry+https://github.com/rust-lang/crates.io-index" 222 | checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" 223 | dependencies = [ 224 | "proc-macro-error-attr2", 225 | "proc-macro2", 226 | "quote", 227 | "syn", 228 | ] 229 | 230 | [[package]] 231 | name = "proc-macro2" 232 | version = "1.0.94" 233 | source = "registry+https://github.com/rust-lang/crates.io-index" 234 | checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" 235 | dependencies = [ 236 | "unicode-ident", 237 | ] 238 | 239 | [[package]] 240 | name = "quote" 241 | version = "1.0.40" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 244 | dependencies = [ 245 | "proc-macro2", 246 | ] 247 | 248 | [[package]] 249 | name = "r-efi" 250 | version = "5.2.0" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" 253 | 254 | [[package]] 255 | name = "rand" 256 | version = "0.9.0" 257 | source = "registry+https://github.com/rust-lang/crates.io-index" 258 | checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" 259 | dependencies = [ 260 | "rand_chacha", 261 | "rand_core", 262 | "zerocopy", 263 | ] 264 | 265 | [[package]] 266 | name = "rand_chacha" 267 | version = "0.9.0" 268 | source = "registry+https://github.com/rust-lang/crates.io-index" 269 | checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 270 | dependencies = [ 271 | "ppv-lite86", 272 | "rand_core", 273 | ] 274 | 275 | [[package]] 276 | name = "rand_core" 277 | version = "0.9.3" 278 | source = "registry+https://github.com/rust-lang/crates.io-index" 279 | checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 280 | dependencies = [ 281 | "getrandom", 282 | ] 283 | 284 | [[package]] 285 | name = "redox_syscall" 286 | version = "0.5.10" 287 | source = "registry+https://github.com/rust-lang/crates.io-index" 288 | checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" 289 | dependencies = [ 290 | "bitflags", 291 | ] 292 | 293 | [[package]] 294 | name = "rtrb" 295 | version = "0.3.2" 296 | source = "registry+https://github.com/rust-lang/crates.io-index" 297 | checksum = "ad8388ea1a9e0ea807e442e8263a699e7edcb320ecbcd21b4fa8ff859acce3ba" 298 | 299 | [[package]] 300 | name = "scopeguard" 301 | version = "1.2.0" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 304 | 305 | [[package]] 306 | name = "serde" 307 | version = "1.0.219" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 310 | dependencies = [ 311 | "serde_derive", 312 | ] 313 | 314 | [[package]] 315 | name = "serde_derive" 316 | version = "1.0.219" 317 | source = "registry+https://github.com/rust-lang/crates.io-index" 318 | checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 319 | dependencies = [ 320 | "proc-macro2", 321 | "quote", 322 | "syn", 323 | ] 324 | 325 | [[package]] 326 | name = "small_ctor" 327 | version = "0.1.2" 328 | source = "registry+https://github.com/rust-lang/crates.io-index" 329 | checksum = "88414a5ca1f85d82cc34471e975f0f74f6aa54c40f062efa42c0080e7f763f81" 330 | 331 | [[package]] 332 | name = "smallvec" 333 | version = "1.14.0" 334 | source = "registry+https://github.com/rust-lang/crates.io-index" 335 | checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" 336 | 337 | [[package]] 338 | name = "syn" 339 | version = "2.0.100" 340 | source = "registry+https://github.com/rust-lang/crates.io-index" 341 | checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" 342 | dependencies = [ 343 | "proc-macro2", 344 | "quote", 345 | "unicode-ident", 346 | ] 347 | 348 | [[package]] 349 | name = "tower-layer" 350 | version = "0.3.3" 351 | source = "registry+https://github.com/rust-lang/crates.io-index" 352 | checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 353 | 354 | [[package]] 355 | name = "tower-service" 356 | version = "0.3.3" 357 | source = "registry+https://github.com/rust-lang/crates.io-index" 358 | checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 359 | 360 | [[package]] 361 | name = "unicode-ident" 362 | version = "1.0.18" 363 | source = "registry+https://github.com/rust-lang/crates.io-index" 364 | checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 365 | 366 | [[package]] 367 | name = "wasi" 368 | version = "0.14.2+wasi-0.2.4" 369 | source = "registry+https://github.com/rust-lang/crates.io-index" 370 | checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" 371 | dependencies = [ 372 | "wit-bindgen-rt", 373 | ] 374 | 375 | [[package]] 376 | name = "wasm-bindgen" 377 | version = "0.2.100" 378 | source = "registry+https://github.com/rust-lang/crates.io-index" 379 | checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 380 | dependencies = [ 381 | "cfg-if", 382 | "once_cell", 383 | "wasm-bindgen-macro", 384 | ] 385 | 386 | [[package]] 387 | name = "wasm-bindgen-backend" 388 | version = "0.2.100" 389 | source = "registry+https://github.com/rust-lang/crates.io-index" 390 | checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 391 | dependencies = [ 392 | "bumpalo", 393 | "log", 394 | "proc-macro2", 395 | "quote", 396 | "syn", 397 | "wasm-bindgen-shared", 398 | ] 399 | 400 | [[package]] 401 | name = "wasm-bindgen-macro" 402 | version = "0.2.100" 403 | source = "registry+https://github.com/rust-lang/crates.io-index" 404 | checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 405 | dependencies = [ 406 | "quote", 407 | "wasm-bindgen-macro-support", 408 | ] 409 | 410 | [[package]] 411 | name = "wasm-bindgen-macro-support" 412 | version = "0.2.100" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 415 | dependencies = [ 416 | "proc-macro2", 417 | "quote", 418 | "syn", 419 | "wasm-bindgen-backend", 420 | "wasm-bindgen-shared", 421 | ] 422 | 423 | [[package]] 424 | name = "wasm-bindgen-shared" 425 | version = "0.2.100" 426 | source = "registry+https://github.com/rust-lang/crates.io-index" 427 | checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 428 | dependencies = [ 429 | "unicode-ident", 430 | ] 431 | 432 | [[package]] 433 | name = "web-time" 434 | version = "1.1.0" 435 | source = "registry+https://github.com/rust-lang/crates.io-index" 436 | checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 437 | dependencies = [ 438 | "js-sys", 439 | "wasm-bindgen", 440 | ] 441 | 442 | [[package]] 443 | name = "windows-targets" 444 | version = "0.52.6" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 447 | dependencies = [ 448 | "windows_aarch64_gnullvm", 449 | "windows_aarch64_msvc", 450 | "windows_i686_gnu", 451 | "windows_i686_gnullvm", 452 | "windows_i686_msvc", 453 | "windows_x86_64_gnu", 454 | "windows_x86_64_gnullvm", 455 | "windows_x86_64_msvc", 456 | ] 457 | 458 | [[package]] 459 | name = "windows_aarch64_gnullvm" 460 | version = "0.52.6" 461 | source = "registry+https://github.com/rust-lang/crates.io-index" 462 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 463 | 464 | [[package]] 465 | name = "windows_aarch64_msvc" 466 | version = "0.52.6" 467 | source = "registry+https://github.com/rust-lang/crates.io-index" 468 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 469 | 470 | [[package]] 471 | name = "windows_i686_gnu" 472 | version = "0.52.6" 473 | source = "registry+https://github.com/rust-lang/crates.io-index" 474 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 475 | 476 | [[package]] 477 | name = "windows_i686_gnullvm" 478 | version = "0.52.6" 479 | source = "registry+https://github.com/rust-lang/crates.io-index" 480 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 481 | 482 | [[package]] 483 | name = "windows_i686_msvc" 484 | version = "0.52.6" 485 | source = "registry+https://github.com/rust-lang/crates.io-index" 486 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 487 | 488 | [[package]] 489 | name = "windows_x86_64_gnu" 490 | version = "0.52.6" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 493 | 494 | [[package]] 495 | name = "windows_x86_64_gnullvm" 496 | version = "0.52.6" 497 | source = "registry+https://github.com/rust-lang/crates.io-index" 498 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 499 | 500 | [[package]] 501 | name = "windows_x86_64_msvc" 502 | version = "0.52.6" 503 | source = "registry+https://github.com/rust-lang/crates.io-index" 504 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 505 | 506 | [[package]] 507 | name = "wit-bindgen-rt" 508 | version = "0.39.0" 509 | source = "registry+https://github.com/rust-lang/crates.io-index" 510 | checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" 511 | dependencies = [ 512 | "bitflags", 513 | ] 514 | 515 | [[package]] 516 | name = "zerocopy" 517 | version = "0.8.23" 518 | source = "registry+https://github.com/rust-lang/crates.io-index" 519 | checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" 520 | dependencies = [ 521 | "zerocopy-derive", 522 | ] 523 | 524 | [[package]] 525 | name = "zerocopy-derive" 526 | version = "0.8.23" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" 529 | dependencies = [ 530 | "proc-macro2", 531 | "quote", 532 | "syn", 533 | ] 534 | -------------------------------------------------------------------------------- /example/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.24.2" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler2" 16 | version = "2.0.0" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" 19 | 20 | [[package]] 21 | name = "aho-corasick" 22 | version = "1.1.3" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 25 | dependencies = [ 26 | "memchr", 27 | ] 28 | 29 | [[package]] 30 | name = "anyhow" 31 | version = "1.0.97" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" 34 | 35 | [[package]] 36 | name = "async-stream" 37 | version = "0.3.6" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" 40 | dependencies = [ 41 | "async-stream-impl", 42 | "futures-core", 43 | "pin-project-lite", 44 | ] 45 | 46 | [[package]] 47 | name = "async-stream-impl" 48 | version = "0.3.6" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" 51 | dependencies = [ 52 | "proc-macro2", 53 | "quote", 54 | "syn", 55 | ] 56 | 57 | [[package]] 58 | name = "async-trait" 59 | version = "0.1.88" 60 | source = "registry+https://github.com/rust-lang/crates.io-index" 61 | checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" 62 | dependencies = [ 63 | "proc-macro2", 64 | "quote", 65 | "syn", 66 | ] 67 | 68 | [[package]] 69 | name = "atomic-waker" 70 | version = "1.1.2" 71 | source = "registry+https://github.com/rust-lang/crates.io-index" 72 | checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 73 | 74 | [[package]] 75 | name = "autocfg" 76 | version = "1.4.0" 77 | source = "registry+https://github.com/rust-lang/crates.io-index" 78 | checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" 79 | 80 | [[package]] 81 | name = "axum" 82 | version = "0.7.9" 83 | source = "registry+https://github.com/rust-lang/crates.io-index" 84 | checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" 85 | dependencies = [ 86 | "async-trait", 87 | "axum-core", 88 | "bytes", 89 | "futures-util", 90 | "http", 91 | "http-body", 92 | "http-body-util", 93 | "itoa", 94 | "matchit", 95 | "memchr", 96 | "mime", 97 | "percent-encoding", 98 | "pin-project-lite", 99 | "rustversion", 100 | "serde", 101 | "sync_wrapper", 102 | "tower 0.5.2", 103 | "tower-layer", 104 | "tower-service", 105 | ] 106 | 107 | [[package]] 108 | name = "axum-core" 109 | version = "0.4.5" 110 | source = "registry+https://github.com/rust-lang/crates.io-index" 111 | checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" 112 | dependencies = [ 113 | "async-trait", 114 | "bytes", 115 | "futures-util", 116 | "http", 117 | "http-body", 118 | "http-body-util", 119 | "mime", 120 | "pin-project-lite", 121 | "rustversion", 122 | "sync_wrapper", 123 | "tower-layer", 124 | "tower-service", 125 | ] 126 | 127 | [[package]] 128 | name = "backtrace" 129 | version = "0.3.74" 130 | source = "registry+https://github.com/rust-lang/crates.io-index" 131 | checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" 132 | dependencies = [ 133 | "addr2line", 134 | "cfg-if", 135 | "libc", 136 | "miniz_oxide", 137 | "object", 138 | "rustc-demangle", 139 | "windows-targets", 140 | ] 141 | 142 | [[package]] 143 | name = "base64" 144 | version = "0.22.1" 145 | source = "registry+https://github.com/rust-lang/crates.io-index" 146 | checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 147 | 148 | [[package]] 149 | name = "bitflags" 150 | version = "2.9.0" 151 | source = "registry+https://github.com/rust-lang/crates.io-index" 152 | checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" 153 | 154 | [[package]] 155 | name = "bumpalo" 156 | version = "3.17.0" 157 | source = "registry+https://github.com/rust-lang/crates.io-index" 158 | checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" 159 | 160 | [[package]] 161 | name = "bytes" 162 | version = "1.10.1" 163 | source = "registry+https://github.com/rust-lang/crates.io-index" 164 | checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 165 | 166 | [[package]] 167 | name = "cfg-if" 168 | version = "1.0.0" 169 | source = "registry+https://github.com/rust-lang/crates.io-index" 170 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 171 | 172 | [[package]] 173 | name = "either" 174 | version = "1.15.0" 175 | source = "registry+https://github.com/rust-lang/crates.io-index" 176 | checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 177 | 178 | [[package]] 179 | name = "equivalent" 180 | version = "1.0.2" 181 | source = "registry+https://github.com/rust-lang/crates.io-index" 182 | checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 183 | 184 | [[package]] 185 | name = "errno" 186 | version = "0.3.10" 187 | source = "registry+https://github.com/rust-lang/crates.io-index" 188 | checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" 189 | dependencies = [ 190 | "libc", 191 | "windows-sys 0.59.0", 192 | ] 193 | 194 | [[package]] 195 | name = "example" 196 | version = "0.0.0" 197 | dependencies = [ 198 | "fastrace", 199 | "fastrace-tonic", 200 | "prost", 201 | "tokio", 202 | "tonic", 203 | "tonic-build", 204 | "tower 0.5.2", 205 | ] 206 | 207 | [[package]] 208 | name = "fastant" 209 | version = "0.1.10" 210 | source = "registry+https://github.com/rust-lang/crates.io-index" 211 | checksum = "62bf7fa928ce0c4a43bd6e7d1235318fc32ac3a3dea06a2208c44e729449471a" 212 | dependencies = [ 213 | "small_ctor", 214 | "web-time", 215 | ] 216 | 217 | [[package]] 218 | name = "fastrace" 219 | version = "0.7.8" 220 | source = "registry+https://github.com/rust-lang/crates.io-index" 221 | checksum = "773324bb245e34a32d704c2256871377f9d7cdb4acff10c555e0dc068d6ddb55" 222 | dependencies = [ 223 | "fastant", 224 | "fastrace-macro", 225 | "once_cell", 226 | "parking_lot", 227 | "pin-project", 228 | "rand 0.9.0", 229 | "rtrb", 230 | "serde", 231 | ] 232 | 233 | [[package]] 234 | name = "fastrace-macro" 235 | version = "0.7.8" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | checksum = "fce8ba9d9d06711bc0c3fb287689e41550d8501a0c3ac5a61c60693644e0f059" 238 | dependencies = [ 239 | "proc-macro-error2", 240 | "proc-macro2", 241 | "quote", 242 | "syn", 243 | ] 244 | 245 | [[package]] 246 | name = "fastrace-tonic" 247 | version = "0.1.0" 248 | dependencies = [ 249 | "fastrace", 250 | "http", 251 | "tower-layer", 252 | "tower-service", 253 | ] 254 | 255 | [[package]] 256 | name = "fastrand" 257 | version = "2.3.0" 258 | source = "registry+https://github.com/rust-lang/crates.io-index" 259 | checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 260 | 261 | [[package]] 262 | name = "fixedbitset" 263 | version = "0.5.7" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" 266 | 267 | [[package]] 268 | name = "fnv" 269 | version = "1.0.7" 270 | source = "registry+https://github.com/rust-lang/crates.io-index" 271 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 272 | 273 | [[package]] 274 | name = "futures-channel" 275 | version = "0.3.31" 276 | source = "registry+https://github.com/rust-lang/crates.io-index" 277 | checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 278 | dependencies = [ 279 | "futures-core", 280 | ] 281 | 282 | [[package]] 283 | name = "futures-core" 284 | version = "0.3.31" 285 | source = "registry+https://github.com/rust-lang/crates.io-index" 286 | checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 287 | 288 | [[package]] 289 | name = "futures-sink" 290 | version = "0.3.31" 291 | source = "registry+https://github.com/rust-lang/crates.io-index" 292 | checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 293 | 294 | [[package]] 295 | name = "futures-task" 296 | version = "0.3.31" 297 | source = "registry+https://github.com/rust-lang/crates.io-index" 298 | checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 299 | 300 | [[package]] 301 | name = "futures-util" 302 | version = "0.3.31" 303 | source = "registry+https://github.com/rust-lang/crates.io-index" 304 | checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 305 | dependencies = [ 306 | "futures-core", 307 | "futures-task", 308 | "pin-project-lite", 309 | "pin-utils", 310 | ] 311 | 312 | [[package]] 313 | name = "getrandom" 314 | version = "0.2.15" 315 | source = "registry+https://github.com/rust-lang/crates.io-index" 316 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 317 | dependencies = [ 318 | "cfg-if", 319 | "libc", 320 | "wasi 0.11.0+wasi-snapshot-preview1", 321 | ] 322 | 323 | [[package]] 324 | name = "getrandom" 325 | version = "0.3.2" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" 328 | dependencies = [ 329 | "cfg-if", 330 | "libc", 331 | "r-efi", 332 | "wasi 0.14.2+wasi-0.2.4", 333 | ] 334 | 335 | [[package]] 336 | name = "gimli" 337 | version = "0.31.1" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 340 | 341 | [[package]] 342 | name = "h2" 343 | version = "0.4.8" 344 | source = "registry+https://github.com/rust-lang/crates.io-index" 345 | checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" 346 | dependencies = [ 347 | "atomic-waker", 348 | "bytes", 349 | "fnv", 350 | "futures-core", 351 | "futures-sink", 352 | "http", 353 | "indexmap 2.8.0", 354 | "slab", 355 | "tokio", 356 | "tokio-util", 357 | "tracing", 358 | ] 359 | 360 | [[package]] 361 | name = "hashbrown" 362 | version = "0.12.3" 363 | source = "registry+https://github.com/rust-lang/crates.io-index" 364 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 365 | 366 | [[package]] 367 | name = "hashbrown" 368 | version = "0.15.2" 369 | source = "registry+https://github.com/rust-lang/crates.io-index" 370 | checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" 371 | 372 | [[package]] 373 | name = "heck" 374 | version = "0.5.0" 375 | source = "registry+https://github.com/rust-lang/crates.io-index" 376 | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 377 | 378 | [[package]] 379 | name = "http" 380 | version = "1.3.1" 381 | source = "registry+https://github.com/rust-lang/crates.io-index" 382 | checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" 383 | dependencies = [ 384 | "bytes", 385 | "fnv", 386 | "itoa", 387 | ] 388 | 389 | [[package]] 390 | name = "http-body" 391 | version = "1.0.1" 392 | source = "registry+https://github.com/rust-lang/crates.io-index" 393 | checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 394 | dependencies = [ 395 | "bytes", 396 | "http", 397 | ] 398 | 399 | [[package]] 400 | name = "http-body-util" 401 | version = "0.1.3" 402 | source = "registry+https://github.com/rust-lang/crates.io-index" 403 | checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 404 | dependencies = [ 405 | "bytes", 406 | "futures-core", 407 | "http", 408 | "http-body", 409 | "pin-project-lite", 410 | ] 411 | 412 | [[package]] 413 | name = "httparse" 414 | version = "1.10.1" 415 | source = "registry+https://github.com/rust-lang/crates.io-index" 416 | checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 417 | 418 | [[package]] 419 | name = "httpdate" 420 | version = "1.0.3" 421 | source = "registry+https://github.com/rust-lang/crates.io-index" 422 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 423 | 424 | [[package]] 425 | name = "hyper" 426 | version = "1.6.0" 427 | source = "registry+https://github.com/rust-lang/crates.io-index" 428 | checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" 429 | dependencies = [ 430 | "bytes", 431 | "futures-channel", 432 | "futures-util", 433 | "h2", 434 | "http", 435 | "http-body", 436 | "httparse", 437 | "httpdate", 438 | "itoa", 439 | "pin-project-lite", 440 | "smallvec", 441 | "tokio", 442 | "want", 443 | ] 444 | 445 | [[package]] 446 | name = "hyper-timeout" 447 | version = "0.5.2" 448 | source = "registry+https://github.com/rust-lang/crates.io-index" 449 | checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" 450 | dependencies = [ 451 | "hyper", 452 | "hyper-util", 453 | "pin-project-lite", 454 | "tokio", 455 | "tower-service", 456 | ] 457 | 458 | [[package]] 459 | name = "hyper-util" 460 | version = "0.1.10" 461 | source = "registry+https://github.com/rust-lang/crates.io-index" 462 | checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" 463 | dependencies = [ 464 | "bytes", 465 | "futures-channel", 466 | "futures-util", 467 | "http", 468 | "http-body", 469 | "hyper", 470 | "pin-project-lite", 471 | "socket2", 472 | "tokio", 473 | "tower-service", 474 | "tracing", 475 | ] 476 | 477 | [[package]] 478 | name = "indexmap" 479 | version = "1.9.3" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 482 | dependencies = [ 483 | "autocfg", 484 | "hashbrown 0.12.3", 485 | ] 486 | 487 | [[package]] 488 | name = "indexmap" 489 | version = "2.8.0" 490 | source = "registry+https://github.com/rust-lang/crates.io-index" 491 | checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" 492 | dependencies = [ 493 | "equivalent", 494 | "hashbrown 0.15.2", 495 | ] 496 | 497 | [[package]] 498 | name = "itertools" 499 | version = "0.14.0" 500 | source = "registry+https://github.com/rust-lang/crates.io-index" 501 | checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 502 | dependencies = [ 503 | "either", 504 | ] 505 | 506 | [[package]] 507 | name = "itoa" 508 | version = "1.0.15" 509 | source = "registry+https://github.com/rust-lang/crates.io-index" 510 | checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 511 | 512 | [[package]] 513 | name = "js-sys" 514 | version = "0.3.77" 515 | source = "registry+https://github.com/rust-lang/crates.io-index" 516 | checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 517 | dependencies = [ 518 | "once_cell", 519 | "wasm-bindgen", 520 | ] 521 | 522 | [[package]] 523 | name = "libc" 524 | version = "0.2.171" 525 | source = "registry+https://github.com/rust-lang/crates.io-index" 526 | checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" 527 | 528 | [[package]] 529 | name = "linux-raw-sys" 530 | version = "0.9.3" 531 | source = "registry+https://github.com/rust-lang/crates.io-index" 532 | checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" 533 | 534 | [[package]] 535 | name = "lock_api" 536 | version = "0.4.12" 537 | source = "registry+https://github.com/rust-lang/crates.io-index" 538 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 539 | dependencies = [ 540 | "autocfg", 541 | "scopeguard", 542 | ] 543 | 544 | [[package]] 545 | name = "log" 546 | version = "0.4.26" 547 | source = "registry+https://github.com/rust-lang/crates.io-index" 548 | checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" 549 | 550 | [[package]] 551 | name = "matchit" 552 | version = "0.7.3" 553 | source = "registry+https://github.com/rust-lang/crates.io-index" 554 | checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" 555 | 556 | [[package]] 557 | name = "memchr" 558 | version = "2.7.4" 559 | source = "registry+https://github.com/rust-lang/crates.io-index" 560 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 561 | 562 | [[package]] 563 | name = "mime" 564 | version = "0.3.17" 565 | source = "registry+https://github.com/rust-lang/crates.io-index" 566 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 567 | 568 | [[package]] 569 | name = "miniz_oxide" 570 | version = "0.8.5" 571 | source = "registry+https://github.com/rust-lang/crates.io-index" 572 | checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" 573 | dependencies = [ 574 | "adler2", 575 | ] 576 | 577 | [[package]] 578 | name = "mio" 579 | version = "1.0.3" 580 | source = "registry+https://github.com/rust-lang/crates.io-index" 581 | checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" 582 | dependencies = [ 583 | "libc", 584 | "wasi 0.11.0+wasi-snapshot-preview1", 585 | "windows-sys 0.52.0", 586 | ] 587 | 588 | [[package]] 589 | name = "multimap" 590 | version = "0.10.0" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" 593 | 594 | [[package]] 595 | name = "object" 596 | version = "0.36.7" 597 | source = "registry+https://github.com/rust-lang/crates.io-index" 598 | checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" 599 | dependencies = [ 600 | "memchr", 601 | ] 602 | 603 | [[package]] 604 | name = "once_cell" 605 | version = "1.21.1" 606 | source = "registry+https://github.com/rust-lang/crates.io-index" 607 | checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" 608 | 609 | [[package]] 610 | name = "parking_lot" 611 | version = "0.12.3" 612 | source = "registry+https://github.com/rust-lang/crates.io-index" 613 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 614 | dependencies = [ 615 | "lock_api", 616 | "parking_lot_core", 617 | ] 618 | 619 | [[package]] 620 | name = "parking_lot_core" 621 | version = "0.9.10" 622 | source = "registry+https://github.com/rust-lang/crates.io-index" 623 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 624 | dependencies = [ 625 | "cfg-if", 626 | "libc", 627 | "redox_syscall", 628 | "smallvec", 629 | "windows-targets", 630 | ] 631 | 632 | [[package]] 633 | name = "percent-encoding" 634 | version = "2.3.1" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 637 | 638 | [[package]] 639 | name = "petgraph" 640 | version = "0.7.1" 641 | source = "registry+https://github.com/rust-lang/crates.io-index" 642 | checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" 643 | dependencies = [ 644 | "fixedbitset", 645 | "indexmap 2.8.0", 646 | ] 647 | 648 | [[package]] 649 | name = "pin-project" 650 | version = "1.1.10" 651 | source = "registry+https://github.com/rust-lang/crates.io-index" 652 | checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" 653 | dependencies = [ 654 | "pin-project-internal", 655 | ] 656 | 657 | [[package]] 658 | name = "pin-project-internal" 659 | version = "1.1.10" 660 | source = "registry+https://github.com/rust-lang/crates.io-index" 661 | checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" 662 | dependencies = [ 663 | "proc-macro2", 664 | "quote", 665 | "syn", 666 | ] 667 | 668 | [[package]] 669 | name = "pin-project-lite" 670 | version = "0.2.16" 671 | source = "registry+https://github.com/rust-lang/crates.io-index" 672 | checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 673 | 674 | [[package]] 675 | name = "pin-utils" 676 | version = "0.1.0" 677 | source = "registry+https://github.com/rust-lang/crates.io-index" 678 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 679 | 680 | [[package]] 681 | name = "ppv-lite86" 682 | version = "0.2.21" 683 | source = "registry+https://github.com/rust-lang/crates.io-index" 684 | checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 685 | dependencies = [ 686 | "zerocopy", 687 | ] 688 | 689 | [[package]] 690 | name = "prettyplease" 691 | version = "0.2.31" 692 | source = "registry+https://github.com/rust-lang/crates.io-index" 693 | checksum = "5316f57387668042f561aae71480de936257848f9c43ce528e311d89a07cadeb" 694 | dependencies = [ 695 | "proc-macro2", 696 | "syn", 697 | ] 698 | 699 | [[package]] 700 | name = "proc-macro-error-attr2" 701 | version = "2.0.0" 702 | source = "registry+https://github.com/rust-lang/crates.io-index" 703 | checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" 704 | dependencies = [ 705 | "proc-macro2", 706 | "quote", 707 | ] 708 | 709 | [[package]] 710 | name = "proc-macro-error2" 711 | version = "2.0.1" 712 | source = "registry+https://github.com/rust-lang/crates.io-index" 713 | checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" 714 | dependencies = [ 715 | "proc-macro-error-attr2", 716 | "proc-macro2", 717 | "quote", 718 | "syn", 719 | ] 720 | 721 | [[package]] 722 | name = "proc-macro2" 723 | version = "1.0.94" 724 | source = "registry+https://github.com/rust-lang/crates.io-index" 725 | checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" 726 | dependencies = [ 727 | "unicode-ident", 728 | ] 729 | 730 | [[package]] 731 | name = "prost" 732 | version = "0.13.5" 733 | source = "registry+https://github.com/rust-lang/crates.io-index" 734 | checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" 735 | dependencies = [ 736 | "bytes", 737 | "prost-derive", 738 | ] 739 | 740 | [[package]] 741 | name = "prost-build" 742 | version = "0.13.5" 743 | source = "registry+https://github.com/rust-lang/crates.io-index" 744 | checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" 745 | dependencies = [ 746 | "heck", 747 | "itertools", 748 | "log", 749 | "multimap", 750 | "once_cell", 751 | "petgraph", 752 | "prettyplease", 753 | "prost", 754 | "prost-types", 755 | "regex", 756 | "syn", 757 | "tempfile", 758 | ] 759 | 760 | [[package]] 761 | name = "prost-derive" 762 | version = "0.13.5" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" 765 | dependencies = [ 766 | "anyhow", 767 | "itertools", 768 | "proc-macro2", 769 | "quote", 770 | "syn", 771 | ] 772 | 773 | [[package]] 774 | name = "prost-types" 775 | version = "0.13.5" 776 | source = "registry+https://github.com/rust-lang/crates.io-index" 777 | checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" 778 | dependencies = [ 779 | "prost", 780 | ] 781 | 782 | [[package]] 783 | name = "quote" 784 | version = "1.0.40" 785 | source = "registry+https://github.com/rust-lang/crates.io-index" 786 | checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 787 | dependencies = [ 788 | "proc-macro2", 789 | ] 790 | 791 | [[package]] 792 | name = "r-efi" 793 | version = "5.2.0" 794 | source = "registry+https://github.com/rust-lang/crates.io-index" 795 | checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" 796 | 797 | [[package]] 798 | name = "rand" 799 | version = "0.8.5" 800 | source = "registry+https://github.com/rust-lang/crates.io-index" 801 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 802 | dependencies = [ 803 | "libc", 804 | "rand_chacha 0.3.1", 805 | "rand_core 0.6.4", 806 | ] 807 | 808 | [[package]] 809 | name = "rand" 810 | version = "0.9.0" 811 | source = "registry+https://github.com/rust-lang/crates.io-index" 812 | checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" 813 | dependencies = [ 814 | "rand_chacha 0.9.0", 815 | "rand_core 0.9.3", 816 | "zerocopy", 817 | ] 818 | 819 | [[package]] 820 | name = "rand_chacha" 821 | version = "0.3.1" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 824 | dependencies = [ 825 | "ppv-lite86", 826 | "rand_core 0.6.4", 827 | ] 828 | 829 | [[package]] 830 | name = "rand_chacha" 831 | version = "0.9.0" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 834 | dependencies = [ 835 | "ppv-lite86", 836 | "rand_core 0.9.3", 837 | ] 838 | 839 | [[package]] 840 | name = "rand_core" 841 | version = "0.6.4" 842 | source = "registry+https://github.com/rust-lang/crates.io-index" 843 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 844 | dependencies = [ 845 | "getrandom 0.2.15", 846 | ] 847 | 848 | [[package]] 849 | name = "rand_core" 850 | version = "0.9.3" 851 | source = "registry+https://github.com/rust-lang/crates.io-index" 852 | checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 853 | dependencies = [ 854 | "getrandom 0.3.2", 855 | ] 856 | 857 | [[package]] 858 | name = "redox_syscall" 859 | version = "0.5.10" 860 | source = "registry+https://github.com/rust-lang/crates.io-index" 861 | checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" 862 | dependencies = [ 863 | "bitflags", 864 | ] 865 | 866 | [[package]] 867 | name = "regex" 868 | version = "1.11.1" 869 | source = "registry+https://github.com/rust-lang/crates.io-index" 870 | checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 871 | dependencies = [ 872 | "aho-corasick", 873 | "memchr", 874 | "regex-automata", 875 | "regex-syntax", 876 | ] 877 | 878 | [[package]] 879 | name = "regex-automata" 880 | version = "0.4.9" 881 | source = "registry+https://github.com/rust-lang/crates.io-index" 882 | checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 883 | dependencies = [ 884 | "aho-corasick", 885 | "memchr", 886 | "regex-syntax", 887 | ] 888 | 889 | [[package]] 890 | name = "regex-syntax" 891 | version = "0.8.5" 892 | source = "registry+https://github.com/rust-lang/crates.io-index" 893 | checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 894 | 895 | [[package]] 896 | name = "rtrb" 897 | version = "0.3.2" 898 | source = "registry+https://github.com/rust-lang/crates.io-index" 899 | checksum = "ad8388ea1a9e0ea807e442e8263a699e7edcb320ecbcd21b4fa8ff859acce3ba" 900 | 901 | [[package]] 902 | name = "rustc-demangle" 903 | version = "0.1.24" 904 | source = "registry+https://github.com/rust-lang/crates.io-index" 905 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 906 | 907 | [[package]] 908 | name = "rustix" 909 | version = "1.0.3" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96" 912 | dependencies = [ 913 | "bitflags", 914 | "errno", 915 | "libc", 916 | "linux-raw-sys", 917 | "windows-sys 0.59.0", 918 | ] 919 | 920 | [[package]] 921 | name = "rustversion" 922 | version = "1.0.20" 923 | source = "registry+https://github.com/rust-lang/crates.io-index" 924 | checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" 925 | 926 | [[package]] 927 | name = "scopeguard" 928 | version = "1.2.0" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 931 | 932 | [[package]] 933 | name = "serde" 934 | version = "1.0.219" 935 | source = "registry+https://github.com/rust-lang/crates.io-index" 936 | checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 937 | dependencies = [ 938 | "serde_derive", 939 | ] 940 | 941 | [[package]] 942 | name = "serde_derive" 943 | version = "1.0.219" 944 | source = "registry+https://github.com/rust-lang/crates.io-index" 945 | checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 946 | dependencies = [ 947 | "proc-macro2", 948 | "quote", 949 | "syn", 950 | ] 951 | 952 | [[package]] 953 | name = "signal-hook-registry" 954 | version = "1.4.2" 955 | source = "registry+https://github.com/rust-lang/crates.io-index" 956 | checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 957 | dependencies = [ 958 | "libc", 959 | ] 960 | 961 | [[package]] 962 | name = "slab" 963 | version = "0.4.9" 964 | source = "registry+https://github.com/rust-lang/crates.io-index" 965 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 966 | dependencies = [ 967 | "autocfg", 968 | ] 969 | 970 | [[package]] 971 | name = "small_ctor" 972 | version = "0.1.2" 973 | source = "registry+https://github.com/rust-lang/crates.io-index" 974 | checksum = "88414a5ca1f85d82cc34471e975f0f74f6aa54c40f062efa42c0080e7f763f81" 975 | 976 | [[package]] 977 | name = "smallvec" 978 | version = "1.14.0" 979 | source = "registry+https://github.com/rust-lang/crates.io-index" 980 | checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" 981 | 982 | [[package]] 983 | name = "socket2" 984 | version = "0.5.8" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" 987 | dependencies = [ 988 | "libc", 989 | "windows-sys 0.52.0", 990 | ] 991 | 992 | [[package]] 993 | name = "syn" 994 | version = "2.0.100" 995 | source = "registry+https://github.com/rust-lang/crates.io-index" 996 | checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" 997 | dependencies = [ 998 | "proc-macro2", 999 | "quote", 1000 | "unicode-ident", 1001 | ] 1002 | 1003 | [[package]] 1004 | name = "sync_wrapper" 1005 | version = "1.0.2" 1006 | source = "registry+https://github.com/rust-lang/crates.io-index" 1007 | checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 1008 | 1009 | [[package]] 1010 | name = "tempfile" 1011 | version = "3.19.0" 1012 | source = "registry+https://github.com/rust-lang/crates.io-index" 1013 | checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600" 1014 | dependencies = [ 1015 | "fastrand", 1016 | "getrandom 0.3.2", 1017 | "once_cell", 1018 | "rustix", 1019 | "windows-sys 0.59.0", 1020 | ] 1021 | 1022 | [[package]] 1023 | name = "tokio" 1024 | version = "1.44.1" 1025 | source = "registry+https://github.com/rust-lang/crates.io-index" 1026 | checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" 1027 | dependencies = [ 1028 | "backtrace", 1029 | "bytes", 1030 | "libc", 1031 | "mio", 1032 | "parking_lot", 1033 | "pin-project-lite", 1034 | "signal-hook-registry", 1035 | "socket2", 1036 | "tokio-macros", 1037 | "windows-sys 0.52.0", 1038 | ] 1039 | 1040 | [[package]] 1041 | name = "tokio-macros" 1042 | version = "2.5.0" 1043 | source = "registry+https://github.com/rust-lang/crates.io-index" 1044 | checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" 1045 | dependencies = [ 1046 | "proc-macro2", 1047 | "quote", 1048 | "syn", 1049 | ] 1050 | 1051 | [[package]] 1052 | name = "tokio-stream" 1053 | version = "0.1.17" 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" 1055 | checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" 1056 | dependencies = [ 1057 | "futures-core", 1058 | "pin-project-lite", 1059 | "tokio", 1060 | ] 1061 | 1062 | [[package]] 1063 | name = "tokio-util" 1064 | version = "0.7.14" 1065 | source = "registry+https://github.com/rust-lang/crates.io-index" 1066 | checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" 1067 | dependencies = [ 1068 | "bytes", 1069 | "futures-core", 1070 | "futures-sink", 1071 | "pin-project-lite", 1072 | "tokio", 1073 | ] 1074 | 1075 | [[package]] 1076 | name = "tonic" 1077 | version = "0.12.3" 1078 | source = "registry+https://github.com/rust-lang/crates.io-index" 1079 | checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" 1080 | dependencies = [ 1081 | "async-stream", 1082 | "async-trait", 1083 | "axum", 1084 | "base64", 1085 | "bytes", 1086 | "h2", 1087 | "http", 1088 | "http-body", 1089 | "http-body-util", 1090 | "hyper", 1091 | "hyper-timeout", 1092 | "hyper-util", 1093 | "percent-encoding", 1094 | "pin-project", 1095 | "prost", 1096 | "socket2", 1097 | "tokio", 1098 | "tokio-stream", 1099 | "tower 0.4.13", 1100 | "tower-layer", 1101 | "tower-service", 1102 | "tracing", 1103 | ] 1104 | 1105 | [[package]] 1106 | name = "tonic-build" 1107 | version = "0.12.3" 1108 | source = "registry+https://github.com/rust-lang/crates.io-index" 1109 | checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" 1110 | dependencies = [ 1111 | "prettyplease", 1112 | "proc-macro2", 1113 | "prost-build", 1114 | "prost-types", 1115 | "quote", 1116 | "syn", 1117 | ] 1118 | 1119 | [[package]] 1120 | name = "tower" 1121 | version = "0.4.13" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" 1124 | dependencies = [ 1125 | "futures-core", 1126 | "futures-util", 1127 | "indexmap 1.9.3", 1128 | "pin-project", 1129 | "pin-project-lite", 1130 | "rand 0.8.5", 1131 | "slab", 1132 | "tokio", 1133 | "tokio-util", 1134 | "tower-layer", 1135 | "tower-service", 1136 | "tracing", 1137 | ] 1138 | 1139 | [[package]] 1140 | name = "tower" 1141 | version = "0.5.2" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" 1144 | dependencies = [ 1145 | "futures-core", 1146 | "futures-util", 1147 | "pin-project-lite", 1148 | "sync_wrapper", 1149 | "tower-layer", 1150 | "tower-service", 1151 | ] 1152 | 1153 | [[package]] 1154 | name = "tower-layer" 1155 | version = "0.3.3" 1156 | source = "registry+https://github.com/rust-lang/crates.io-index" 1157 | checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 1158 | 1159 | [[package]] 1160 | name = "tower-service" 1161 | version = "0.3.3" 1162 | source = "registry+https://github.com/rust-lang/crates.io-index" 1163 | checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 1164 | 1165 | [[package]] 1166 | name = "tracing" 1167 | version = "0.1.41" 1168 | source = "registry+https://github.com/rust-lang/crates.io-index" 1169 | checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 1170 | dependencies = [ 1171 | "pin-project-lite", 1172 | "tracing-attributes", 1173 | "tracing-core", 1174 | ] 1175 | 1176 | [[package]] 1177 | name = "tracing-attributes" 1178 | version = "0.1.28" 1179 | source = "registry+https://github.com/rust-lang/crates.io-index" 1180 | checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" 1181 | dependencies = [ 1182 | "proc-macro2", 1183 | "quote", 1184 | "syn", 1185 | ] 1186 | 1187 | [[package]] 1188 | name = "tracing-core" 1189 | version = "0.1.33" 1190 | source = "registry+https://github.com/rust-lang/crates.io-index" 1191 | checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 1192 | dependencies = [ 1193 | "once_cell", 1194 | ] 1195 | 1196 | [[package]] 1197 | name = "try-lock" 1198 | version = "0.2.5" 1199 | source = "registry+https://github.com/rust-lang/crates.io-index" 1200 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 1201 | 1202 | [[package]] 1203 | name = "unicode-ident" 1204 | version = "1.0.18" 1205 | source = "registry+https://github.com/rust-lang/crates.io-index" 1206 | checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 1207 | 1208 | [[package]] 1209 | name = "want" 1210 | version = "0.3.1" 1211 | source = "registry+https://github.com/rust-lang/crates.io-index" 1212 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 1213 | dependencies = [ 1214 | "try-lock", 1215 | ] 1216 | 1217 | [[package]] 1218 | name = "wasi" 1219 | version = "0.11.0+wasi-snapshot-preview1" 1220 | source = "registry+https://github.com/rust-lang/crates.io-index" 1221 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1222 | 1223 | [[package]] 1224 | name = "wasi" 1225 | version = "0.14.2+wasi-0.2.4" 1226 | source = "registry+https://github.com/rust-lang/crates.io-index" 1227 | checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" 1228 | dependencies = [ 1229 | "wit-bindgen-rt", 1230 | ] 1231 | 1232 | [[package]] 1233 | name = "wasm-bindgen" 1234 | version = "0.2.100" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 1237 | dependencies = [ 1238 | "cfg-if", 1239 | "once_cell", 1240 | "wasm-bindgen-macro", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "wasm-bindgen-backend" 1245 | version = "0.2.100" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 1248 | dependencies = [ 1249 | "bumpalo", 1250 | "log", 1251 | "proc-macro2", 1252 | "quote", 1253 | "syn", 1254 | "wasm-bindgen-shared", 1255 | ] 1256 | 1257 | [[package]] 1258 | name = "wasm-bindgen-macro" 1259 | version = "0.2.100" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 1262 | dependencies = [ 1263 | "quote", 1264 | "wasm-bindgen-macro-support", 1265 | ] 1266 | 1267 | [[package]] 1268 | name = "wasm-bindgen-macro-support" 1269 | version = "0.2.100" 1270 | source = "registry+https://github.com/rust-lang/crates.io-index" 1271 | checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 1272 | dependencies = [ 1273 | "proc-macro2", 1274 | "quote", 1275 | "syn", 1276 | "wasm-bindgen-backend", 1277 | "wasm-bindgen-shared", 1278 | ] 1279 | 1280 | [[package]] 1281 | name = "wasm-bindgen-shared" 1282 | version = "0.2.100" 1283 | source = "registry+https://github.com/rust-lang/crates.io-index" 1284 | checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 1285 | dependencies = [ 1286 | "unicode-ident", 1287 | ] 1288 | 1289 | [[package]] 1290 | name = "web-time" 1291 | version = "1.1.0" 1292 | source = "registry+https://github.com/rust-lang/crates.io-index" 1293 | checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 1294 | dependencies = [ 1295 | "js-sys", 1296 | "wasm-bindgen", 1297 | ] 1298 | 1299 | [[package]] 1300 | name = "windows-sys" 1301 | version = "0.52.0" 1302 | source = "registry+https://github.com/rust-lang/crates.io-index" 1303 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 1304 | dependencies = [ 1305 | "windows-targets", 1306 | ] 1307 | 1308 | [[package]] 1309 | name = "windows-sys" 1310 | version = "0.59.0" 1311 | source = "registry+https://github.com/rust-lang/crates.io-index" 1312 | checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 1313 | dependencies = [ 1314 | "windows-targets", 1315 | ] 1316 | 1317 | [[package]] 1318 | name = "windows-targets" 1319 | version = "0.52.6" 1320 | source = "registry+https://github.com/rust-lang/crates.io-index" 1321 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 1322 | dependencies = [ 1323 | "windows_aarch64_gnullvm", 1324 | "windows_aarch64_msvc", 1325 | "windows_i686_gnu", 1326 | "windows_i686_gnullvm", 1327 | "windows_i686_msvc", 1328 | "windows_x86_64_gnu", 1329 | "windows_x86_64_gnullvm", 1330 | "windows_x86_64_msvc", 1331 | ] 1332 | 1333 | [[package]] 1334 | name = "windows_aarch64_gnullvm" 1335 | version = "0.52.6" 1336 | source = "registry+https://github.com/rust-lang/crates.io-index" 1337 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 1338 | 1339 | [[package]] 1340 | name = "windows_aarch64_msvc" 1341 | version = "0.52.6" 1342 | source = "registry+https://github.com/rust-lang/crates.io-index" 1343 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 1344 | 1345 | [[package]] 1346 | name = "windows_i686_gnu" 1347 | version = "0.52.6" 1348 | source = "registry+https://github.com/rust-lang/crates.io-index" 1349 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 1350 | 1351 | [[package]] 1352 | name = "windows_i686_gnullvm" 1353 | version = "0.52.6" 1354 | source = "registry+https://github.com/rust-lang/crates.io-index" 1355 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 1356 | 1357 | [[package]] 1358 | name = "windows_i686_msvc" 1359 | version = "0.52.6" 1360 | source = "registry+https://github.com/rust-lang/crates.io-index" 1361 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 1362 | 1363 | [[package]] 1364 | name = "windows_x86_64_gnu" 1365 | version = "0.52.6" 1366 | source = "registry+https://github.com/rust-lang/crates.io-index" 1367 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 1368 | 1369 | [[package]] 1370 | name = "windows_x86_64_gnullvm" 1371 | version = "0.52.6" 1372 | source = "registry+https://github.com/rust-lang/crates.io-index" 1373 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 1374 | 1375 | [[package]] 1376 | name = "windows_x86_64_msvc" 1377 | version = "0.52.6" 1378 | source = "registry+https://github.com/rust-lang/crates.io-index" 1379 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 1380 | 1381 | [[package]] 1382 | name = "wit-bindgen-rt" 1383 | version = "0.39.0" 1384 | source = "registry+https://github.com/rust-lang/crates.io-index" 1385 | checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" 1386 | dependencies = [ 1387 | "bitflags", 1388 | ] 1389 | 1390 | [[package]] 1391 | name = "zerocopy" 1392 | version = "0.8.23" 1393 | source = "registry+https://github.com/rust-lang/crates.io-index" 1394 | checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" 1395 | dependencies = [ 1396 | "zerocopy-derive", 1397 | ] 1398 | 1399 | [[package]] 1400 | name = "zerocopy-derive" 1401 | version = "0.8.23" 1402 | source = "registry+https://github.com/rust-lang/crates.io-index" 1403 | checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" 1404 | dependencies = [ 1405 | "proc-macro2", 1406 | "quote", 1407 | "syn", 1408 | ] 1409 | --------------------------------------------------------------------------------