diff --git a/Cargo.toml b/Cargo.toml index c503a86..c0837ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,5 @@ [workspace] members = [ "xray-lite", + "xray-lite-aws-sdk", ] diff --git a/README.md b/README.md index 6d9ef93..e9626c5 100644 --- a/README.md +++ b/README.md @@ -2,19 +2,21 @@ > [AWS X-Ray](https://aws.amazon.com/xray/) daemon client for Rust applications on [AWS Lambda](https://aws.amazon.com/lambda/) -## Installing +## Installing `xray-lite` Add the following to your `Cargo.toml` file: ```toml [dependencies] -xray-lite = { git = "https://github.com/codemonger-io/xray-lite.git", tag = "v0.0.6" } +xray-lite = { git = "https://github.com/codemonger-io/xray-lite.git", tag = "v0.0.7" } ``` ## Usage ### Subsegment of AWS service operation +**The [`xray-lite-aws-sdk`](./xray-lite-aws-sdk) extension is recommended for tracing requests through [AWS SDK for Rust](https://aws.amazon.com/sdk-for-rust/).** + Here is an example to record a subsegment of an AWS service operation within a Lambda function invocation instrumented with AWS X-Ray: ```rust @@ -106,9 +108,14 @@ fn do_something(context: &impl Context) { } ``` +## Extensions + +- [`xray-lite-aws-sdk`](./xray-lite-aws-sdk/): extension for [AWS SDK for Rust](https://aws.amazon.com/sdk-for-rust/) + ## API Documentation - +- [`xray-lite`](https://codemonger-io.github.io/xray-lite/api/xray_lite/) +- [`xray-lite-aws-sdk`](https://codemonger-io.github.io/xray-lite/api/xray_lite_aws_sdk/) ## Acknowledgements diff --git a/docs/api/crates.js b/docs/api/crates.js index 2183f09..0d5a6dc 100644 --- a/docs/api/crates.js +++ b/docs/api/crates.js @@ -1 +1 @@ -window.ALL_CRATES = ["xray_lite"]; \ No newline at end of file +window.ALL_CRATES = ["xray_lite","xray_lite_aws_sdk"]; \ No newline at end of file diff --git a/docs/api/help.html b/docs/api/help.html index cf7037f..485f5c0 100644 --- a/docs/api/help.html +++ b/docs/api/help.html @@ -1,2 +1,2 @@ -Help -

Rustdoc help

Back
\ No newline at end of file +Help +

Rustdoc help

Back
\ No newline at end of file diff --git a/docs/api/search-index.js b/docs/api/search-index.js index a7e78e4..e5f8734 100644 --- a/docs/api/search-index.js +++ b/docs/api/search-index.js @@ -1,5 +1,6 @@ var searchIndex = new Map(JSON.parse('[\ -["xray_lite",{"doc":"Provides a client interface for AWS X-Ray","t":"GFFFPPGFKFPFFFPPGFPFFPPPTPKPPFFFIFFGFFFPFFGGFOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNOOOOONNNNNNNNNNNNNNNNNNONNNNNNONOOONNOMNONNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOMNNNONNNNNNNNNOOOOOOOOOOONOOONNOONNNNNNNNNNNNNNNNNNNNNOONOOOOOOONNNNNNNOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOO","n":["Annotation","Aws","AwsNamespace","AwsOperation","BadConfig","Bool","Cause","Client","Context","CustomNamespace","Description","Ec2","Ecs","ElasticBeanstalk","Entered","Err","Error","Exception","Failed","Header","Http","IO","Json","MissingEnvVar","NAME","Name","Namespace","Number","Ok","RemoteNamespace","Request","Response","Result","Seconds","Segment","SegmentId","Service","Sql","StackFrame","String","Subsegment","SubsegmentContext","SubsegmentSession","TraceId","XRay","account_id","account_id","annotations","annotations","availability_zone","aws","aws","begin","begin","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cause","cause","cause","client_ip","clone","clone","clone","clone_into","clone_into","clone_into","connection_string","container","content_length","database_type","database_version","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","deployment_id","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","driver_version","drop","ec2","ecs","elastic_beanstalk","end","end","end_time","enter_subsegment","enter_subsegment","environment_name","eq","eq","eq","eq","error","error","fault","fault","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_lambda_env","from_lambda_env","from_str","http","http","id","in_progress","in_progress","insert_data","instance_id","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","label","line","messages","metadata","metadata","method","name","name","name","name","namespace","namespace_mut","new","new","new","new","new","new","new","now","operation","origin","parent_id","parent_id","path","precursor_ids","preparation","queue_url","region","remote","request","request_id","request_id","resource_arn","response","response_status","response_status","sanitized_query","sdk_version","send","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","service","skipped","source","sql","stack","status","subsegments","table_name","throttle","throttled","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","trace_id","traced","traced","trunc","truncated","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_subsegment","update_subsegment","update_subsegment","update_subsegment","url","url","user","user","user_agent","version","version_label","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_name_prefix","with_parent_id","with_sampling_decision","x_amzn_trace_id","x_forwarded_for","xray","exceptions","paths","working_directory","client","header","namespace","subsegment"],"q":[[0,"xray_lite"],[481,"xray_lite::Cause"],[484,"xray_lite::SubsegmentSession"],[488,"alloc::string"],[489,"core::convert"],[490,"core::option"],[491,"core::result"],[492,"serde::de"],[493,"core::marker"],[494,"core::marker"],[495,"core::fmt"],[496,"std::io::error"],[497,"serde_json::error"],[498,"core::net::socket_addr"],[499,"serde::ser"],[500,"serde::ser"],[501,"core::any"]],"d":["A value type which may be used for filter querying","Context information about the AWS environment this segment …","Namespace for an AWS service.","Information about an AWS operation","Bad configuration.","A boolean value","Represents the cause of an errror","X-Ray daemon client interface","Context.","Namespace for a custom subsegment.","A description of an error","Information about an EC2 instance.","Information about an Amazon ECS container.","Information about an Elastic Beanstalk environment. You …","Entered subsegment.","Contains the error value","Common error type.","Detailed representation of an exception","Failed subsegment.","Parsed representation of X-Amzn-Trace-Id request header","Describes an http request/response cycle","I/O error.","JSON error.","Missing environment variable.","HTTP header name associated with X-Ray trace data","a 16 character exception ID","Namespace.","A numberic value","Contains the success value","Namespace for an arbitrary remote service.","Information about a request.","Information about a response.","Type alias for Results which may return Error.","Represents fractional seconds since the epoch These can be …","Description of an internal application operation which may …","Unique identifier of an operation within a trace","An object with information about your application.","Information about a SQL operation","A summary of a single operation within a stack trace","A string value","Record information about the AWS services and resources …","Context as a subsegment of an existing segment.","Subsegment session.","Coorelates a string of spans together","Metadata about the type and version of instrumentation …","If your application sends segments to a different AWS …","If your application accesses resources in a different …","annotations object with key-value pairs that you want …","annotations object with key-value pairs that you want …","The Availability Zone in which the instance is running.","aws object with information about the AWS resource on …","aws object with information about the downstream AWS …","Begins a new named segment","Create a new subsegment","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","error fields that indicate an error occurred and that …","Exception ID of the exception’s parent, that is, the …","information about the cause of an error","The IP address of the requester. Can be retrieved from the …","","","","","","","For SQL Server or other database connections that don’t …","The container ID of the container running your application.","number indicating the length of the response body in bytes.","The name of the database engine.","The version number of the database engine.","","","","","","","","","","","","","","","","","","","number indicating the ID of the last successful deployment …","","","","","","","The name and version number of the database engine driver …","","Information about an EC2 instance.","Information about an Amazon ECS container.","Information about an Elastic Beanstalk environment. You …","End the segment by assigning its end_time","End the subsegment by assigning its end_time","Number that is the time the segment was closed.","Enters in a new subsegment.","","The name of the environment.","","","","","Indicates that a client error occurred (response status …","boolean indicating that a client error occurred (response …","Indicates that a server error occurred (response status …","boolean indicating that a server error occurred (response …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Creates a new X-Ray client from the Lambda environment …","Creates a new context from the Lambda environment variable.","","http objects with information about the original HTTP …","http object with information about an outgoing HTTP call.","A 64-bit identifier for the exception, unique among …","boolean, set to true instead of specifying an end_time to …","boolean that is set to true instead of specifying an …","Inserts a key-value pair into the additional data map.","The instance ID of the EC2 instance.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","The function or method name.","The line in the file.","The exception message.","metadata object with any additional data that you want to …","metadata object with any additional data that you want to …","The request method. For example, GET.","Name of the namespace.","","","","aws for AWS SDK calls; remote for other downstream calls.","Returns the namespace as a mutable reference.","Return a new X-Ray client connected to the provided addr","Creates a new Header with a given trace ID.","Creates a namespace for an AWS service operation.","Creates a namespace for a remote service.","Creates a namespace for a custom subsegment.","Generate a new random segment ID","Generate a new random trace ID","return the current time in seconds since the unix epoch …","The name of the API action invoked against an AWS service …","The type of AWS resource running your application. todo: …","A subsegment ID you specify if the request originated from …","Segment ID of the subsegment’s parent segment. Required …","The relative path to the file.","array of subsegment IDs that identifies subsegments with …","call if the query used a PreparedCall; statement if the …","For operations on an Amazon SQS queue, the queue’s URL.","If the resource is in a region different from your …","The exception type.","Information about a request","Sets the request ID.","Unique identifier for the request.","","Information about a response.","Sets the response status.","Sets the response status.","The database query, with any user provided values removed …","The version of SDK or agent being used.","send a segment to the xray daemon this client is connected …","","","","","","","","","","","","","","","","","","","","","An object with information about your application.","integer indicating the number of exceptions that were …","","contents of the sql query","array of stackFrame objects.","number indicating the HTTP status of the response.","array of subsegment objects.","For operations on a DynamoDB table, the name of the table.","boolean indicating that a request was throttled (response …","boolean indicating that a request was throttled (response …","","","","","","","","Trace ID of the subsegment’s parent segment. Required …","(subsegments only) boolean indicating that the downstream …","","truncate epoc time to remove fractional seconds","integer indicating the number of stack frames that are …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","subsegment. Required only if sending a subsegment …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Updates the subsegment.","","","","The full URL of the request, compiled from the protocol, …","For a database connection that uses a URL connection …","A string that identifies the user who sent the request.","The database username.","The user agent string from the requester’s client.","A string that identifies the version of your application …","The name of the application version that is currently …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Updates the context with a given name prefix.","Creates a new Header with the parent ID replaced.","Creates a new Header with the sampling decision replaced.","Returns the x-amzn-trace-id header value.","(segments only) boolean indicating that the client_ip was …","Metadata about the type and version of instrumentation …","The array of exception objects.","The array of paths to libraries or modules in use when the …","The full path of the working directory when the exception …","X-Ray client.","X-Amzn-Trace-Id header.","Namespace.","Subsegment."],"i":[0,0,0,0,35,18,0,0,0,0,41,0,0,0,26,45,0,0,26,0,0,35,35,35,11,41,0,18,45,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,13,22,1,7,16,1,7,1,7,26,8,31,10,35,11,36,37,38,1,12,13,14,15,16,17,18,39,40,41,19,20,21,7,22,23,5,4,26,8,31,10,35,11,36,37,38,1,12,13,14,15,16,17,18,39,40,41,19,20,21,7,22,23,5,4,1,39,7,20,8,5,4,8,5,4,23,15,21,23,23,10,11,1,12,13,14,15,16,17,18,19,20,21,7,22,23,5,4,17,10,19,20,21,5,4,23,26,13,13,13,1,7,1,30,31,17,10,11,5,4,1,7,1,7,8,31,10,35,35,11,11,36,37,38,1,12,13,14,15,16,17,18,39,40,41,19,20,21,7,22,23,5,5,4,4,26,8,31,10,10,35,35,35,11,36,37,38,1,12,13,14,15,16,17,18,39,40,41,19,20,21,7,22,23,5,4,8,31,11,1,7,39,1,7,11,16,26,8,31,10,35,11,36,37,38,1,12,13,14,15,16,17,18,39,40,41,19,20,21,7,22,23,5,4,40,40,39,1,7,20,27,36,37,38,7,26,8,11,36,37,38,5,4,10,22,1,1,7,40,7,23,22,22,39,19,36,22,1,19,36,37,23,14,8,10,1,12,13,14,15,16,17,18,39,40,41,19,20,21,7,22,23,5,4,1,39,35,7,39,21,7,22,1,7,8,5,4,35,11,5,4,7,20,7,10,39,26,8,31,10,35,11,36,37,38,1,12,13,14,15,16,17,18,39,40,41,19,20,21,7,22,23,5,4,26,8,31,10,35,11,36,37,38,1,12,13,14,15,16,17,18,39,40,41,19,20,21,7,22,23,5,4,7,26,8,31,10,35,11,36,37,38,1,12,13,14,15,16,17,18,39,40,41,19,20,21,7,22,23,5,4,27,36,37,38,20,23,1,23,20,12,17,26,8,31,10,35,11,36,37,38,1,12,13,14,15,16,17,18,39,40,41,19,20,21,7,22,23,5,4,31,11,11,26,20,13,54,54,54,55,55,55,55],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,1,[[3,[2]]]],[[4,[6,[5]],-1],7,[[3,[2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[8,8],[5,5],[4,4],[[-1,-2],9,[],[]],[[-1,-2],9,[],[]],[[-1,-2],9,[],[]],0,0,0,0,0,[[],10],[[],11],[[],1],[[],12],[[],13],[[],14],[[],15],[[],16],[[],17],[[],18],[[],19],[[],20],[[],21],[[],7],[[],22],[[],23],[[],5],[[],4],0,[-1,[[24,[10]]],25],[-1,[[24,[19]]],25],[-1,[[24,[20]]],25],[-1,[[24,[21]]],25],[-1,[[24,[5]]],25],[-1,[[24,[4]]],25],0,[[[26,[-1]]],9,[27,28,29]],0,0,0,[1,1],[7,7],0,[[30,-1],[[26,[-1]]],[27,28,29]],[[31,-1],[[26,[-1]]],[27,28,29]],0,[[10,10],32],[[11,11],32],[[5,5],32],[[4,4],32],0,0,0,0,[[8,33],34],[[31,33],34],[[10,33],34],[[35,33],34],[[35,33],34],[[11,33],34],[[11,33],34],[[36,33],34],[[37,33],34],[[38,33],34],[[1,33],34],[[12,33],34],[[13,33],34],[[14,33],34],[[15,33],34],[[16,33],34],[[17,33],34],[[18,33],34],[[39,33],34],[[40,33],34],[[41,33],34],[[19,33],34],[[20,33],34],[[21,33],34],[[7,33],34],[[22,33],34],[[23,33],34],[[5,33],34],[[5,33],34],[[4,33],34],[[4,33],34],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[42,10],[-1,-1,[]],[43,35],[44,35],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],[[45,[8]]]],[8,[[45,[31]]]],[46,[[24,[11,-1]]],[]],0,0,0,0,0,[[11,-1,-2],11,[[3,[2]]],[[3,[2]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,[[27,46],2],[[36,46],2],[[37,46],2],[[38,46],2],0,[[[26,[-1]]],[[6,[-1]]],[27,28,29]],[47,[[45,[8]]]],[4,11],[[-1,-2],36,[[3,[2]]],[[3,[2]]]],[[-1,-2,-3],37,[[3,[2]]],[[3,[2]]],[[3,[2]]]],[-1,38,[[3,[2]]]],[[],5],[[],4],[[],10],0,0,0,0,0,0,0,0,0,0,0,[[36,-1],36,[[3,[2]]]],0,0,0,[[36,48],36],[[37,48],37],0,0,[[8,-1],[[45,[9]]],49],[[10,-1],24,50],[[1,-1],24,50],[[12,-1],24,50],[[13,-1],24,50],[[14,-1],24,50],[[15,-1],24,50],[[16,-1],24,50],[[17,-1],24,50],[[18,-1],24,50],[[39,-1],24,50],[[40,-1],24,50],[[41,-1],24,50],[[19,-1],24,50],[[20,-1],24,50],[[21,-1],24,50],[[7,-1],24,50],[[22,-1],24,50],[[23,-1],24,50],[[5,-1],24,50],[[4,-1],24,50],0,0,[35,[[6,[51]]]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,2,[]],[-1,2,[]],[-1,2,[]],[-1,2,[]],0,0,0,[10,52],0,[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],0,[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[[27,7],9],[[36,7],9],[[37,7],9],[[38,7],9],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[31,-1],31,[[3,[2]]]],[[11,5],11],0,[[[26,[-1]]],[[6,[2]]],[27,28,29]],0,0,0,0,0,0,0,0,0],"c":[],"p":[[5,"Segment",0],[5,"String",488],[10,"Into",489],[6,"TraceId",0],[6,"SegmentId",0],[6,"Option",490],[5,"Subsegment",0],[5,"Client",0],[1,"tuple"],[5,"Seconds",0],[5,"Header",0],[5,"Service",0],[5,"Aws",0],[5,"XRay",0],[5,"Ecs",0],[5,"Ec2",0],[5,"ElasticBeanstalk",0],[6,"Annotation",0],[5,"Http",0],[5,"Request",0],[5,"Response",0],[5,"AwsOperation",0],[5,"Sql",0],[6,"Result",491],[10,"Deserializer",492],[6,"SubsegmentSession",0],[10,"Namespace",0],[10,"Send",493],[10,"Sync",493],[10,"Context",0],[5,"SubsegmentContext",0],[1,"bool"],[5,"Formatter",494],[8,"Result",494],[6,"Error",0],[5,"AwsNamespace",0],[5,"RemoteNamespace",0],[5,"CustomNamespace",0],[5,"Exception",0],[5,"StackFrame",0],[6,"Cause",0],[5,"Duration",495],[5,"Error",496],[5,"Error",497],[8,"Result",0],[1,"str"],[6,"SocketAddr",498],[1,"u16"],[10,"Serialize",499],[10,"Serializer",499],[10,"Error",500],[1,"u64"],[5,"TypeId",501],[15,"Description",481],[15,"Entered",484]],"b":[[172,"impl-Display-for-Error"],[173,"impl-Debug-for-Error"],[174,"impl-Display-for-Header"],[175,"impl-Debug-for-Header"],[196,"impl-Debug-for-SegmentId"],[197,"impl-Display-for-SegmentId"],[198,"impl-Debug-for-TraceId"],[199,"impl-Display-for-TraceId"],[205,"impl-From%3CError%3E-for-Error"],[206,"impl-From%3CError%3E-for-Error"]]}]\ +["xray_lite",{"doc":"Provides a client interface for AWS X-Ray","t":"GFFFPPGFKFPFFFPPGFPFFPPPTPKPPFFFIFFGFFFPFFGGFOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNONNNNNNONOOONNOMNONNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOMNNNONNNNNNNNNOOOOOOOOOOONOOONNOONNNNNNNNNNNNNNNNNNNNNOONOOOOOOONNNNNNNNNOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOO","n":["Annotation","Aws","AwsNamespace","AwsOperation","BadConfig","Bool","Cause","Client","Context","CustomNamespace","Description","Ec2","Ecs","ElasticBeanstalk","Entered","Err","Error","Exception","Failed","Header","Http","IO","Json","MissingEnvVar","NAME","Name","Namespace","Number","Ok","RemoteNamespace","Request","Response","Result","Seconds","Segment","SegmentId","Service","Sql","StackFrame","String","Subsegment","SubsegmentContext","SubsegmentSession","TraceId","XRay","account_id","account_id","annotations","annotations","availability_zone","aws","aws","begin","begin","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cause","cause","cause","client_ip","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","connection_string","container","content_length","database_type","database_version","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","deployment_id","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","driver_version","drop","ec2","ecs","elastic_beanstalk","end","end","end_time","enter_subsegment","enter_subsegment","environment_name","eq","eq","eq","eq","error","error","fault","fault","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_lambda_env","from_lambda_env","from_str","http","http","id","in_progress","in_progress","insert_data","instance_id","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","label","line","messages","metadata","metadata","method","name","name","name","name","namespace","namespace_mut","new","new","new","new","new","new","new","now","operation","origin","parent_id","parent_id","path","precursor_ids","preparation","queue_url","region","remote","request","request_id","request_id","resource_arn","response","response_status","response_status","sanitized_query","sdk_version","send","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","service","skipped","source","sql","stack","status","subsegments","table_name","throttle","throttled","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","trace_id","traced","traced","trunc","truncated","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_subsegment","update_subsegment","update_subsegment","update_subsegment","url","url","user","user","user_agent","version","version_label","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_name_prefix","with_parent_id","with_sampling_decision","x_amzn_trace_id","x_forwarded_for","xray","exceptions","paths","working_directory","client","header","namespace","subsegment"],"q":[[0,"xray_lite"],[488,"xray_lite::Cause"],[491,"xray_lite::SubsegmentSession"],[495,"alloc::string"],[496,"core::convert"],[497,"core::option"],[498,"core::result"],[499,"serde::de"],[500,"core::marker"],[501,"core::marker"],[502,"core::fmt"],[503,"std::io::error"],[504,"serde_json::error"],[505,"core::net::socket_addr"],[506,"serde::ser"],[507,"serde::ser"],[508,"core::any"]],"d":["A value type which may be used for filter querying","Context information about the AWS environment this segment …","Namespace for an AWS service.","Information about an AWS operation","Bad configuration.","A boolean value","Represents the cause of an errror","X-Ray daemon client interface","Context.","Namespace for a custom subsegment.","A description of an error","Information about an EC2 instance.","Information about an Amazon ECS container.","Information about an Elastic Beanstalk environment. You …","Entered subsegment.","Contains the error value","Common error type.","Detailed representation of an exception","Failed subsegment.","Parsed representation of X-Amzn-Trace-Id request header","Describes an http request/response cycle","I/O error.","JSON error.","Missing environment variable.","HTTP header name associated with X-Ray trace data","a 16 character exception ID","Namespace.","A numberic value","Contains the success value","Namespace for an arbitrary remote service.","Information about a request.","Information about a response.","Type alias for Results which may return Error.","Represents fractional seconds since the epoch These can be …","Description of an internal application operation which may …","Unique identifier of an operation within a trace","An object with information about your application.","Information about a SQL operation","A summary of a single operation within a stack trace","A string value","Record information about the AWS services and resources …","Context as a subsegment of an existing segment.","Subsegment session.","Coorelates a string of spans together","Metadata about the type and version of instrumentation …","If your application sends segments to a different AWS …","If your application accesses resources in a different …","annotations object with key-value pairs that you want …","annotations object with key-value pairs that you want …","The Availability Zone in which the instance is running.","aws object with information about the AWS resource on …","aws object with information about the downstream AWS …","Begins a new named segment","Create a new subsegment","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","error fields that indicate an error occurred and that …","Exception ID of the exception’s parent, that is, the …","information about the cause of an error","The IP address of the requester. Can be retrieved from the …","","","","","","","","","","","For SQL Server or other database connections that don’t …","The container ID of the container running your application.","number indicating the length of the response body in bytes.","The name of the database engine.","The version number of the database engine.","","","","","","","","","","","","","","","","","","","number indicating the ID of the last successful deployment …","","","","","","","The name and version number of the database engine driver …","","Information about an EC2 instance.","Information about an Amazon ECS container.","Information about an Elastic Beanstalk environment. You …","End the segment by assigning its end_time","End the subsegment by assigning its end_time","Number that is the time the segment was closed.","Enters in a new subsegment.","","The name of the environment.","","","","","Indicates that a client error occurred (response status …","boolean indicating that a client error occurred (response …","Indicates that a server error occurred (response status …","boolean indicating that a server error occurred (response …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Creates a new X-Ray client from the Lambda environment …","Creates a new context from the Lambda environment variable.","","http objects with information about the original HTTP …","http object with information about an outgoing HTTP call.","A 64-bit identifier for the exception, unique among …","boolean, set to true instead of specifying an end_time to …","boolean that is set to true instead of specifying an …","Inserts a key-value pair into the additional data map.","The instance ID of the EC2 instance.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","The function or method name.","The line in the file.","The exception message.","metadata object with any additional data that you want to …","metadata object with any additional data that you want to …","The request method. For example, GET.","Name of the namespace.","","","","aws for AWS SDK calls; remote for other downstream calls.","Returns the namespace as a mutable reference.","Return a new X-Ray client connected to the provided addr","Creates a new Header with a given trace ID.","Creates a namespace for an AWS service operation.","Creates a namespace for a remote service.","Creates a namespace for a custom subsegment.","Generate a new random segment ID","Generate a new random trace ID","return the current time in seconds since the unix epoch …","The name of the API action invoked against an AWS service …","The type of AWS resource running your application. todo: …","A subsegment ID you specify if the request originated from …","Segment ID of the subsegment’s parent segment. Required …","The relative path to the file.","array of subsegment IDs that identifies subsegments with …","call if the query used a PreparedCall; statement if the …","For operations on an Amazon SQS queue, the queue’s URL.","If the resource is in a region different from your …","The exception type.","Information about a request","Sets the request ID.","Unique identifier for the request.","","Information about a response.","Sets the response status.","Sets the response status.","The database query, with any user provided values removed …","The version of SDK or agent being used.","send a segment to the xray daemon this client is connected …","","","","","","","","","","","","","","","","","","","","","An object with information about your application.","integer indicating the number of exceptions that were …","","contents of the sql query","array of stackFrame objects.","number indicating the HTTP status of the response.","array of subsegment objects.","For operations on a DynamoDB table, the name of the table.","boolean indicating that a request was throttled (response …","boolean indicating that a request was throttled (response …","","","","","","","","","","Trace ID of the subsegment’s parent segment. Required …","(subsegments only) boolean indicating that the downstream …","","truncate epoc time to remove fractional seconds","integer indicating the number of stack frames that are …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","subsegment. Required only if sending a subsegment …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Updates the subsegment.","","","","The full URL of the request, compiled from the protocol, …","For a database connection that uses a URL connection …","A string that identifies the user who sent the request.","The database username.","The user agent string from the requester’s client.","A string that identifies the version of your application …","The name of the application version that is currently …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Updates the context with a given name prefix.","Creates a new Header with the parent ID replaced.","Creates a new Header with the sampling decision replaced.","Returns the x-amzn-trace-id header value.","(segments only) boolean indicating that the client_ip was …","Metadata about the type and version of instrumentation …","The array of exception objects.","The array of paths to libraries or modules in use when the …","The full path of the working directory when the exception …","X-Ray client.","X-Amzn-Trace-Id header.","Namespace.","Subsegment."],"i":[0,0,0,0,35,19,0,0,0,0,41,0,0,0,27,46,0,0,27,0,0,35,35,35,10,41,0,19,46,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,14,23,1,7,17,1,7,1,7,8,9,12,35,10,36,37,38,1,13,14,15,16,17,18,19,39,40,41,20,21,22,7,23,24,5,27,4,8,9,12,35,10,36,37,38,1,13,14,15,16,17,18,19,39,40,41,20,21,22,7,23,24,5,27,4,1,39,7,21,8,9,10,5,4,8,9,10,5,4,24,16,22,24,24,12,10,1,13,14,15,16,17,18,19,20,21,22,7,23,24,5,4,18,12,20,21,22,5,4,24,27,14,14,14,1,7,1,31,9,18,12,10,5,4,1,7,1,7,8,9,12,35,35,10,10,36,37,38,1,13,14,15,16,17,18,19,39,40,41,20,21,22,7,23,24,5,5,27,4,4,8,9,12,12,35,35,35,10,36,37,38,1,13,14,15,16,17,18,19,39,40,41,20,21,22,7,23,24,5,27,4,8,9,10,1,7,39,1,7,10,17,8,9,12,35,10,36,37,38,1,13,14,15,16,17,18,19,39,40,41,20,21,22,7,23,24,5,27,4,40,40,39,1,7,21,28,36,37,38,7,27,8,10,36,37,38,5,4,12,23,1,1,7,40,7,24,23,23,39,20,36,23,1,20,36,37,24,15,8,12,1,13,14,15,16,17,18,19,39,40,41,20,21,22,7,23,24,5,4,1,39,35,7,39,22,7,23,1,7,8,9,10,5,4,35,10,5,4,7,21,7,12,39,8,9,12,35,10,36,37,38,1,13,14,15,16,17,18,19,39,40,41,20,21,22,7,23,24,5,27,4,8,9,12,35,10,36,37,38,1,13,14,15,16,17,18,19,39,40,41,20,21,22,7,23,24,5,27,4,7,8,9,12,35,10,36,37,38,1,13,14,15,16,17,18,19,39,40,41,20,21,22,7,23,24,5,27,4,28,36,37,38,21,24,1,24,21,13,18,8,9,12,35,10,36,37,38,1,13,14,15,16,17,18,19,39,40,41,20,21,22,7,23,24,5,27,4,9,10,10,27,21,14,55,55,55,56,56,56,56],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,1,[[3,[2]]]],[[4,[6,[5]],-1],7,[[3,[2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[8,8],[9,9],[10,10],[5,5],[4,4],[[-1,-2],11,[],[]],[[-1,-2],11,[],[]],[[-1,-2],11,[],[]],[[-1,-2],11,[],[]],[[-1,-2],11,[],[]],0,0,0,0,0,[[],12],[[],10],[[],1],[[],13],[[],14],[[],15],[[],16],[[],17],[[],18],[[],19],[[],20],[[],21],[[],22],[[],7],[[],23],[[],24],[[],5],[[],4],0,[-1,[[25,[12]]],26],[-1,[[25,[20]]],26],[-1,[[25,[21]]],26],[-1,[[25,[22]]],26],[-1,[[25,[5]]],26],[-1,[[25,[4]]],26],0,[[[27,[-1]]],11,[28,29,30]],0,0,0,[1,1],[7,7],0,[[31,-1],[[27,[-1]]],[28,29,30]],[[9,-1],[[27,[-1]]],[28,29,30]],0,[[12,12],32],[[10,10],32],[[5,5],32],[[4,4],32],0,0,0,0,[[8,33],34],[[9,33],34],[[12,33],34],[[35,33],34],[[35,33],34],[[10,33],34],[[10,33],34],[[36,33],34],[[37,33],34],[[38,33],34],[[1,33],34],[[13,33],34],[[14,33],34],[[15,33],34],[[16,33],34],[[17,33],34],[[18,33],34],[[19,33],34],[[39,33],34],[[40,33],34],[[41,33],34],[[20,33],34],[[21,33],34],[[22,33],34],[[7,33],34],[[23,33],34],[[24,33],34],[[5,33],34],[[5,33],34],[[[27,[-1]],33],34,[28,29,30,42]],[[4,33],34],[[4,33],34],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[43,12],[44,35],[45,35],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],[[46,[8]]]],[8,[[46,[9]]]],[47,[[25,[10,-1]]],[]],0,0,0,0,0,[[10,-1,-2],10,[[3,[2]]],[[3,[2]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,[[28,47],2],[[36,47],2],[[37,47],2],[[38,47],2],0,[[[27,[-1]]],[[6,[-1]]],[28,29,30]],[48,[[46,[8]]]],[4,10],[[-1,-2],36,[[3,[2]]],[[3,[2]]]],[[-1,-2,-3],37,[[3,[2]]],[[3,[2]]],[[3,[2]]]],[-1,38,[[3,[2]]]],[[],5],[[],4],[[],12],0,0,0,0,0,0,0,0,0,0,0,[[36,-1],36,[[3,[2]]]],0,0,0,[[36,49],36],[[37,49],37],0,0,[[8,-1],[[46,[11]]],50],[[12,-1],25,51],[[1,-1],25,51],[[13,-1],25,51],[[14,-1],25,51],[[15,-1],25,51],[[16,-1],25,51],[[17,-1],25,51],[[18,-1],25,51],[[19,-1],25,51],[[39,-1],25,51],[[40,-1],25,51],[[41,-1],25,51],[[20,-1],25,51],[[21,-1],25,51],[[22,-1],25,51],[[7,-1],25,51],[[23,-1],25,51],[[24,-1],25,51],[[5,-1],25,51],[[4,-1],25,51],0,0,[35,[[6,[52]]]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,2,[]],[-1,2,[]],[-1,2,[]],[-1,2,[]],0,0,0,[12,53],0,[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],0,[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[-1,54,[]],[[28,7],11],[[36,7],11],[[37,7],11],[[38,7],11],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[9,-1],9,[[3,[2]]]],[[10,5],10],0,[[[27,[-1]]],[[6,[2]]],[28,29,30]],0,0,0,0,0,0,0,0,0],"c":[],"p":[[5,"Segment",0],[5,"String",495],[10,"Into",496],[6,"TraceId",0],[6,"SegmentId",0],[6,"Option",497],[5,"Subsegment",0],[5,"Client",0],[5,"SubsegmentContext",0],[5,"Header",0],[1,"tuple"],[5,"Seconds",0],[5,"Service",0],[5,"Aws",0],[5,"XRay",0],[5,"Ecs",0],[5,"Ec2",0],[5,"ElasticBeanstalk",0],[6,"Annotation",0],[5,"Http",0],[5,"Request",0],[5,"Response",0],[5,"AwsOperation",0],[5,"Sql",0],[6,"Result",498],[10,"Deserializer",499],[6,"SubsegmentSession",0],[10,"Namespace",0],[10,"Send",500],[10,"Sync",500],[10,"Context",0],[1,"bool"],[5,"Formatter",501],[8,"Result",501],[6,"Error",0],[5,"AwsNamespace",0],[5,"RemoteNamespace",0],[5,"CustomNamespace",0],[5,"Exception",0],[5,"StackFrame",0],[6,"Cause",0],[10,"Debug",501],[5,"Duration",502],[5,"Error",503],[5,"Error",504],[8,"Result",0],[1,"str"],[6,"SocketAddr",505],[1,"u16"],[10,"Serialize",506],[10,"Serializer",506],[10,"Error",507],[1,"u64"],[5,"TypeId",508],[15,"Description",488],[15,"Entered",491]],"b":[[176,"impl-Debug-for-Error"],[177,"impl-Display-for-Error"],[178,"impl-Debug-for-Header"],[179,"impl-Display-for-Header"],[200,"impl-Display-for-SegmentId"],[201,"impl-Debug-for-SegmentId"],[203,"impl-Display-for-TraceId"],[204,"impl-Debug-for-TraceId"],[209,"impl-From%3CError%3E-for-Error"],[210,"impl-From%3CError%3E-for-Error"]]}],\ +["xray_lite_aws_sdk",{"doc":"Extension of xray-lite for AWS SDK for Rust.","t":"KN","n":["ContextExt","intercept_operation"],"q":[[0,"xray_lite_aws_sdk"],[2,"aws_smithy_runtime_api::client::interceptors"],[3,"alloc::string"],[4,"core::convert"]],"d":["Extension of Context.","Creates an Intercept for the AWS service request."],"i":[0,1],"f":[0,[[1,-1,-2],[[0,[2]]],[[4,[3]]],[[4,[3]]]]],"c":[],"p":[[10,"ContextExt",0],[10,"Intercept",2],[5,"String",3],[10,"Into",4]],"b":[]}]\ ]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); diff --git a/docs/api/settings.html b/docs/api/settings.html index 30e8015..7d4a39a 100644 --- a/docs/api/settings.html +++ b/docs/api/settings.html @@ -1,2 +1,2 @@ -Settings -

Rustdoc settings

Back
\ No newline at end of file +Settings +

Rustdoc settings

Back
\ No newline at end of file diff --git a/docs/api/src-files.js b/docs/api/src-files.js index aef310f..69d4ba5 100644 --- a/docs/api/src-files.js +++ b/docs/api/src-files.js @@ -1,4 +1,5 @@ var srcIndex = new Map(JSON.parse('[\ -["xray_lite",["",[],["client.rs","context.rs","epoch.rs","error.rs","header.rs","hexbytes.rs","lambda.rs","lib.rs","namespace.rs","segment.rs","segment_id.rs","session.rs","trace_id.rs"]]]\ +["xray_lite",["",[],["client.rs","context.rs","epoch.rs","error.rs","header.rs","hexbytes.rs","lambda.rs","lib.rs","namespace.rs","segment.rs","segment_id.rs","session.rs","trace_id.rs"]]],\ +["xray_lite_aws_sdk",["",[],["lib.rs"]]]\ ]')); createSrcSidebar(); diff --git a/docs/api/src/xray_lite/context.rs.html b/docs/api/src/xray_lite/context.rs.html index fce1ccb..1ba0b87 100644 --- a/docs/api/src/xray_lite/context.rs.html +++ b/docs/api/src/xray_lite/context.rs.html @@ -92,7 +92,7 @@ } /// Context as a subsegment of an existing segment. -#[derive(Debug)] +#[derive(Clone, Debug)] pub struct SubsegmentContext { client: Client, header: Header, diff --git a/docs/api/src/xray_lite/header.rs.html b/docs/api/src/xray_lite/header.rs.html index dedd953..149e704 100644 --- a/docs/api/src/xray_lite/header.rs.html +++ b/docs/api/src/xray_lite/header.rs.html @@ -291,7 +291,7 @@ } /// Parsed representation of `X-Amzn-Trace-Id` request header -#[derive(PartialEq, Debug, Default)] +#[derive(PartialEq, Clone, Debug, Default)] pub struct Header { pub(crate) trace_id: TraceId, pub(crate) parent_id: Option<SegmentId>, diff --git a/docs/api/src/xray_lite/session.rs.html b/docs/api/src/xray_lite/session.rs.html index a52bbbe..f5687e1 100644 --- a/docs/api/src/xray_lite/session.rs.html +++ b/docs/api/src/xray_lite/session.rs.html @@ -87,6 +87,7 @@ 86 87 88 +89
//! Subsegment session management.
 
 use crate::client::Client;
@@ -95,6 +96,7 @@
 use crate::segment::Subsegment;
 
 /// Subsegment session.
+#[derive(Debug)]
 pub enum SubsegmentSession<T>
 where
     T: Namespace + Send + Sync,
diff --git a/docs/api/src/xray_lite_aws_sdk/lib.rs.html b/docs/api/src/xray_lite_aws_sdk/lib.rs.html
new file mode 100644
index 0000000..724c8a4
--- /dev/null
+++ b/docs/api/src/xray_lite_aws_sdk/lib.rs.html
@@ -0,0 +1,346 @@
+lib.rs - source
+    
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+
#![warn(missing_docs)]
+
+//! Extension of `xray-lite` for [AWS SDK for Rust](https://aws.amazon.com/sdk-for-rust/).
+//!
+//! With this crate, you can easily add the X-Ray tracing capability to your
+//! AWS service requests through
+//! [AWS SDK for Rust](https://aws.amazon.com/sdk-for-rust/).
+//! It utilizes the [interceptor](https://docs.rs/aws-smithy-runtime-api/latest/aws_smithy_runtime_api/client/interceptors/trait.Intercept.html)
+//! which can be attached to `CustomizableOperation` available via the
+//! `customize` method of any request builder; e.g.,
+//! [`aws_sdk_s3::operation::get_object::builders::GetObjectFluentBuilder::customize`](https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/operation/get_object/builders/struct.GetObjectFluentBuilder.html#method.customize)
+//!
+//! The following example shows how to report a subsegment for each attempt of
+//! the S3 GetObject operation:
+//! ```no_run
+//! use aws_config::BehaviorVersion;
+//! use xray_lite::{Client, SubsegmentContext};
+//! use xray_lite_aws_sdk::ContextExt as _;
+//!
+//! async fn get_object_from_s3() {
+//!     let xray_client = Client::from_lambda_env().unwrap();
+//!     let xray_context = SubsegmentContext::from_lambda_env(xray_client).unwrap();
+//!
+//!     let config = aws_config::load_defaults(BehaviorVersion::latest()).await;
+//!     let s3_client = aws_sdk_s3::Client::new(&config);
+//!     s3_client
+//!         .get_object()
+//!         .bucket("the-bucket-name")
+//!         .key("the-object-key")
+//!         .customize()
+//!         .interceptor(xray_context.intercept_operation("S3", "GetObject"))
+//!         .send()
+//!         .await
+//!         .unwrap();
+//! }
+//! ```
+
+use std::sync::{Arc, Mutex};
+
+use aws_smithy_runtime_api::box_error::BoxError;
+use aws_smithy_runtime_api::client::interceptors::context::{
+    BeforeTransmitInterceptorContextMut, BeforeTransmitInterceptorContextRef,
+    FinalizerInterceptorContextRef,
+};
+use aws_smithy_runtime_api::client::interceptors::Intercept;
+use aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
+use aws_smithy_types::config_bag::ConfigBag;
+use aws_types::request_id::RequestId;
+
+use xray_lite::{AwsNamespace, Context, Header, SubsegmentSession};
+
+/// Extension of [`Context`].
+///
+/// This trait is automatically implemented for any [`Context`] that satisfies
+/// the bounds.
+pub trait ContextExt: Context + Clone + std::fmt::Debug + Send + Sync + 'static {
+    /// Creates an [`Intercept`](https://docs.rs/aws-smithy-runtime-api/1.1.7/aws_smithy_runtime_api/client/interceptors/trait.Intercept.html)
+    /// for the AWS service request.
+    ///
+    /// A returned `Intercept` implements the following hooks:
+    /// 1. [`read_before_attempt`](https://docs.rs/aws-smithy-runtime-api/1.1.7/aws_smithy_runtime_api/client/interceptors/trait.Intercept.html#method.read_before_attempt):
+    ///    Starts a subsegment of the AWS service request
+    /// 2. [`modify_before_transmit`](https://docs.rs/aws-smithy-runtime-api/1.1.7/aws_smithy_runtime_api/client/interceptors/trait.Intercept.html#method.modify_before_transmit):
+    ///    Injects the `X-Amzn-Trace-Id` header into the request
+    /// 3. [`read_after_attempt`](https://docs.rs/aws-smithy-runtime-api/1.1.7/aws_smithy_runtime_api/client/interceptors/trait.Intercept.html#method.read_after_attempt):
+    ///    Updates the subsegment with the request ID and the response status,
+    ///    and reports the subsegment to the X-Ray daemon
+    fn intercept_operation(
+        &self,
+        service: impl Into<String>,
+        operation: impl Into<String>,
+    ) -> impl Intercept + 'static {
+        XrayIntercept::new_with_operation(self.clone(), service, operation)
+    }
+}
+
+impl<T> ContextExt for T where T: Context + Clone + std::fmt::Debug + Send + Sync + 'static {}
+
+#[derive(Debug)]
+struct XrayIntercept<T>
+where
+    T: Context + Clone + std::fmt::Debug + Send + Sync + 'static,
+{
+    context: T,
+    service: String,
+    operation: String,
+    // session is unnecessarily wrapped in Mutex because `Intercept` is
+    // immutable during its method calls.
+    session: Arc<Mutex<Option<SubsegmentSession<AwsNamespace>>>>,
+}
+
+impl<T> XrayIntercept<T>
+where
+    T: Context + Clone + std::fmt::Debug + Send + Sync + 'static,
+{
+    fn new_with_operation(
+        context: T,
+        service: impl Into<String>,
+        operation: impl Into<String>,
+    ) -> Self {
+        Self {
+            context,
+            service: service.into(),
+            operation: operation.into(),
+            session: Arc::new(Mutex::new(None)),
+        }
+    }
+}
+
+impl<T> Intercept for XrayIntercept<T>
+where
+    T: Context + Clone + std::fmt::Debug + Send + Sync + 'static,
+{
+    fn name(&self) -> &'static str {
+        "XrayIntercept"
+    }
+
+    fn read_before_attempt(
+        &self,
+        _context: &BeforeTransmitInterceptorContextRef<'_>,
+        _runtime_components: &RuntimeComponents,
+        _cfg: &mut ConfigBag,
+    ) -> Result<(), BoxError> {
+        let session = self.context.enter_subsegment(AwsNamespace::new(
+            self.service.clone(),
+            self.operation.clone(),
+        ));
+        *self.session.lock().unwrap() = Some(session);
+        Ok(())
+    }
+
+    fn modify_before_transmit(
+        &self,
+        context: &mut BeforeTransmitInterceptorContextMut<'_>,
+        _runtime_components: &RuntimeComponents,
+        _cfg: &mut ConfigBag,
+    ) -> Result<(), BoxError> {
+        let trace_id = self
+            .session
+            .lock()
+            .unwrap()
+            .as_ref()
+            .and_then(|s| s.x_amzn_trace_id());
+        if let Some(trace_id) = trace_id {
+            context
+                .request_mut()
+                .headers_mut()
+                .insert(Header::NAME, trace_id);
+        }
+        Ok(())
+    }
+
+    fn read_after_attempt(
+        &self,
+        context: &FinalizerInterceptorContextRef<'_>,
+        _runtime_components: &RuntimeComponents,
+        _cfg: &mut ConfigBag,
+    ) -> Result<(), BoxError> {
+        let mut session = self.session.lock().unwrap();
+        if let Some(mut session) = session.take() {
+            if let Some(namespace) = session.namespace_mut() {
+                if let Some(response) = context.response() {
+                    namespace.response_status(response.status().as_u16());
+                    if let Some(request_id) = response.request_id() {
+                        namespace.request_id(request_id);
+                    }
+                }
+            }
+        }
+        Ok(())
+    }
+}
+
\ No newline at end of file diff --git a/docs/api/trait.impl/core/clone/trait.Clone.js b/docs/api/trait.impl/core/clone/trait.Clone.js index 926126b..167750e 100644 --- a/docs/api/trait.impl/core/clone/trait.Clone.js +++ b/docs/api/trait.impl/core/clone/trait.Clone.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"xray_lite":[["impl Clone for Client"],["impl Clone for SegmentId"],["impl Clone for TraceId"]] +"xray_lite":[["impl Clone for SegmentId"],["impl Clone for Header"],["impl Clone for TraceId"],["impl Clone for Client"],["impl Clone for SubsegmentContext"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/trait.impl/core/cmp/trait.PartialEq.js b/docs/api/trait.impl/core/cmp/trait.PartialEq.js index cca91ef..6d5b736 100644 --- a/docs/api/trait.impl/core/cmp/trait.PartialEq.js +++ b/docs/api/trait.impl/core/cmp/trait.PartialEq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"xray_lite":[["impl PartialEq for SegmentId"],["impl PartialEq for Seconds"],["impl PartialEq for TraceId"],["impl PartialEq for Header"]] +"xray_lite":[["impl PartialEq for Header"],["impl PartialEq for SegmentId"],["impl PartialEq for TraceId"],["impl PartialEq for Seconds"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/trait.impl/core/convert/trait.From.js b/docs/api/trait.impl/core/convert/trait.From.js index 0168cd9..5cd7d36 100644 --- a/docs/api/trait.impl/core/convert/trait.From.js +++ b/docs/api/trait.impl/core/convert/trait.From.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"xray_lite":[["impl From<Seconds> for Duration"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Duration> for Seconds"]] +"xray_lite":[["impl From<Seconds> for Duration"],["impl From<Error> for Error"],["impl From<Duration> for Seconds"],["impl From<Error> for Error"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/trait.impl/core/default/trait.Default.js b/docs/api/trait.impl/core/default/trait.Default.js index a8057fa..12f57cb 100644 --- a/docs/api/trait.impl/core/default/trait.Default.js +++ b/docs/api/trait.impl/core/default/trait.Default.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"xray_lite":[["impl Default for AwsOperation"],["impl Default for SegmentId"],["impl Default for Http"],["impl Default for Sql"],["impl Default for Annotation"],["impl Default for Header"],["impl Default for TraceId"],["impl Default for Request"],["impl Default for Ecs"],["impl Default for Seconds"],["impl Default for Subsegment"],["impl Default for Service"],["impl Default for XRay"],["impl Default for Ec2"],["impl Default for Aws"],["impl Default for Response"],["impl Default for ElasticBeanstalk"],["impl Default for Segment"]] +"xray_lite":[["impl Default for Sql"],["impl Default for Ec2"],["impl Default for ElasticBeanstalk"],["impl Default for XRay"],["impl Default for Annotation"],["impl Default for SegmentId"],["impl Default for Ecs"],["impl Default for Aws"],["impl Default for Service"],["impl Default for Response"],["impl Default for Http"],["impl Default for Seconds"],["impl Default for Subsegment"],["impl Default for TraceId"],["impl Default for AwsOperation"],["impl Default for Request"],["impl Default for Header"],["impl Default for Segment"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/trait.impl/core/fmt/trait.Debug.js b/docs/api/trait.impl/core/fmt/trait.Debug.js index c50b136..1d02a10 100644 --- a/docs/api/trait.impl/core/fmt/trait.Debug.js +++ b/docs/api/trait.impl/core/fmt/trait.Debug.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"xray_lite":[["impl Debug for SubsegmentContext"],["impl Debug for XRay"],["impl Debug for Segment"],["impl Debug for Header"],["impl Debug for Cause"],["impl Debug for Request"],["impl Debug for StackFrame"],["impl Debug for Error"],["impl Debug for Ecs"],["impl Debug for Exception"],["impl Debug for SegmentId"],["impl Debug for Http"],["impl Debug for Sql"],["impl Debug for ElasticBeanstalk"],["impl Debug for CustomNamespace"],["impl Debug for AwsOperation"],["impl Debug for AwsNamespace"],["impl Debug for Subsegment"],["impl Debug for RemoteNamespace"],["impl Debug for Aws"],["impl Debug for Ec2"],["impl Debug for Seconds"],["impl Debug for Service"],["impl Debug for TraceId"],["impl Debug for Response"],["impl Debug for Client"],["impl Debug for Annotation"]] +"xray_lite":[["impl Debug for XRay"],["impl Debug for Ec2"],["impl Debug for SegmentId"],["impl Debug for Http"],["impl Debug for Sql"],["impl Debug for ElasticBeanstalk"],["impl Debug for Service"],["impl Debug for Seconds"],["impl Debug for AwsOperation"],["impl Debug for Cause"],["impl Debug for StackFrame"],["impl<T> Debug for SubsegmentSession<T>
where\n T: Namespace + Send + Sync + Debug,
"],["impl Debug for AwsNamespace"],["impl Debug for Segment"],["impl Debug for SubsegmentContext"],["impl Debug for Error"],["impl Debug for Ecs"],["impl Debug for Request"],["impl Debug for RemoteNamespace"],["impl Debug for Response"],["impl Debug for Annotation"],["impl Debug for Subsegment"],["impl Debug for Exception"],["impl Debug for Aws"],["impl Debug for Header"],["impl Debug for TraceId"],["impl Debug for CustomNamespace"],["impl Debug for Client"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/trait.impl/core/fmt/trait.Display.js b/docs/api/trait.impl/core/fmt/trait.Display.js index 7484160..b26f431 100644 --- a/docs/api/trait.impl/core/fmt/trait.Display.js +++ b/docs/api/trait.impl/core/fmt/trait.Display.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"xray_lite":[["impl Display for Header"],["impl Display for Error"],["impl Display for TraceId"],["impl Display for SegmentId"]] +"xray_lite":[["impl Display for TraceId"],["impl Display for Header"],["impl Display for SegmentId"],["impl Display for Error"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/trait.impl/core/marker/trait.StructuralPartialEq.js b/docs/api/trait.impl/core/marker/trait.StructuralPartialEq.js index d3e45a1..e5fdcd0 100644 --- a/docs/api/trait.impl/core/marker/trait.StructuralPartialEq.js +++ b/docs/api/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"xray_lite":[["impl StructuralPartialEq for SegmentId"],["impl StructuralPartialEq for TraceId"],["impl StructuralPartialEq for Header"],["impl StructuralPartialEq for Seconds"]] +"xray_lite":[["impl StructuralPartialEq for Seconds"],["impl StructuralPartialEq for TraceId"],["impl StructuralPartialEq for Header"],["impl StructuralPartialEq for SegmentId"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/trait.impl/serde/de/trait.Deserialize.js b/docs/api/trait.impl/serde/de/trait.Deserialize.js index 09c024e..3db842b 100644 --- a/docs/api/trait.impl/serde/de/trait.Deserialize.js +++ b/docs/api/trait.impl/serde/de/trait.Deserialize.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"xray_lite":[["impl<'de> Deserialize<'de> for SegmentId"],["impl<'de> Deserialize<'de> for Http"],["impl<'de> Deserialize<'de> for Request"],["impl<'de> Deserialize<'de> for TraceId"],["impl<'de> Deserialize<'de> for Response"],["impl<'de> Deserialize<'de> for Seconds"]] +"xray_lite":[["impl<'de> Deserialize<'de> for Response"],["impl<'de> Deserialize<'de> for Seconds"],["impl<'de> Deserialize<'de> for SegmentId"],["impl<'de> Deserialize<'de> for Http"],["impl<'de> Deserialize<'de> for TraceId"],["impl<'de> Deserialize<'de> for Request"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/trait.impl/serde/ser/trait.Serialize.js b/docs/api/trait.impl/serde/ser/trait.Serialize.js index 57ed1ec..f4d2f40 100644 --- a/docs/api/trait.impl/serde/ser/trait.Serialize.js +++ b/docs/api/trait.impl/serde/ser/trait.Serialize.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"xray_lite":[["impl Serialize for AwsOperation"],["impl Serialize for XRay"],["impl Serialize for ElasticBeanstalk"],["impl Serialize for Annotation"],["impl Serialize for Ec2"],["impl Serialize for SegmentId"],["impl Serialize for Cause"],["impl Serialize for Response"],["impl Serialize for Exception"],["impl Serialize for Segment"],["impl Serialize for TraceId"],["impl Serialize for StackFrame"],["impl Serialize for Request"],["impl Serialize for Ecs"],["impl Serialize for Seconds"],["impl Serialize for Aws"],["impl Serialize for Sql"],["impl Serialize for Subsegment"],["impl Serialize for Service"],["impl Serialize for Http"]] +"xray_lite":[["impl Serialize for Seconds"],["impl Serialize for XRay"],["impl Serialize for TraceId"],["impl Serialize for StackFrame"],["impl Serialize for Request"],["impl Serialize for Http"],["impl Serialize for Aws"],["impl Serialize for Segment"],["impl Serialize for AwsOperation"],["impl Serialize for Sql"],["impl Serialize for Annotation"],["impl Serialize for Exception"],["impl Serialize for ElasticBeanstalk"],["impl Serialize for Ecs"],["impl Serialize for Subsegment"],["impl Serialize for Response"],["impl Serialize for Service"],["impl Serialize for SegmentId"],["impl Serialize for Cause"],["impl Serialize for Ec2"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/trait.impl/xray_lite_aws_sdk/trait.ContextExt.js b/docs/api/trait.impl/xray_lite_aws_sdk/trait.ContextExt.js new file mode 100644 index 0000000..f5d8e88 --- /dev/null +++ b/docs/api/trait.impl/xray_lite_aws_sdk/trait.ContextExt.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"xray_lite_aws_sdk":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/trait.impl/xray_lite_aws_sdk/trait.InterceptorContext.js b/docs/api/trait.impl/xray_lite_aws_sdk/trait.InterceptorContext.js new file mode 100644 index 0000000..f5d8e88 --- /dev/null +++ b/docs/api/trait.impl/xray_lite_aws_sdk/trait.InterceptorContext.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"xray_lite_aws_sdk":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/api/xray_lite/all.html b/docs/api/xray_lite/all.html index dfde569..9f498e2 100644 --- a/docs/api/xray_lite/all.html +++ b/docs/api/xray_lite/all.html @@ -1,2 +1,2 @@ -List of all items in this crate +List of all items in this crate
\ No newline at end of file diff --git a/docs/api/xray_lite/enum.Annotation.html b/docs/api/xray_lite/enum.Annotation.html index 782c830..0c1ec65 100644 --- a/docs/api/xray_lite/enum.Annotation.html +++ b/docs/api/xray_lite/enum.Annotation.html @@ -1,4 +1,4 @@ -Annotation in xray_lite - Rust +Annotation in xray_lite - Rust
pub enum Annotation {
     String(String),
     Number(usize),
diff --git a/docs/api/xray_lite/enum.Cause.html b/docs/api/xray_lite/enum.Cause.html
index fddf433..56d16de 100644
--- a/docs/api/xray_lite/enum.Cause.html
+++ b/docs/api/xray_lite/enum.Cause.html
@@ -1,4 +1,4 @@
-Cause in xray_lite - Rust
+Cause in xray_lite - Rust
     

Enum xray_lite::Cause

source ·
pub enum Cause {
     Name(String),
     Description {
diff --git a/docs/api/xray_lite/enum.Error.html b/docs/api/xray_lite/enum.Error.html
index bef9c14..de96c70 100644
--- a/docs/api/xray_lite/enum.Error.html
+++ b/docs/api/xray_lite/enum.Error.html
@@ -1,4 +1,4 @@
-Error in xray_lite - Rust
+Error in xray_lite - Rust
     

Enum xray_lite::Error

source ·
pub enum Error {
     MissingEnvVar(&'static str),
     IO(Error),
@@ -9,7 +9,7 @@
 
§

IO(Error)

I/O error.

§

Json(Error)

JSON error.

§

BadConfig(String)

Bad configuration.

-

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<Error> for Error

source§

fn from(source: IOError) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(source: JsonError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<Error> for Error

source§

fn from(source: JsonError) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(source: IOError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/docs/api/xray_lite/enum.SegmentId.html b/docs/api/xray_lite/enum.SegmentId.html index 8ae3ba2..706a294 100644 --- a/docs/api/xray_lite/enum.SegmentId.html +++ b/docs/api/xray_lite/enum.SegmentId.html @@ -1,4 +1,4 @@ -SegmentId in xray_lite - Rust +SegmentId in xray_lite - Rust

Enum xray_lite::SegmentId

source ·
pub enum SegmentId {
     // some variants omitted
 }
Expand description

Unique identifier of an operation within a trace

diff --git a/docs/api/xray_lite/enum.SubsegmentSession.html b/docs/api/xray_lite/enum.SubsegmentSession.html index fa0ffc0..f3104c9 100644 --- a/docs/api/xray_lite/enum.SubsegmentSession.html +++ b/docs/api/xray_lite/enum.SubsegmentSession.html @@ -1,5 +1,5 @@ -SubsegmentSession in xray_lite - Rust -

Entered subsegment.

§

Failed

Failed subsegment.

-

Implementations§

source§

impl<T> SubsegmentSession<T>
where - T: Namespace + Send + Sync,

source

pub fn x_amzn_trace_id(&self) -> Option<String>

Returns the x-amzn-trace-id header value.

-
source

pub fn namespace_mut(&mut self) -> Option<&mut T>

Returns the namespace as a mutable reference.

-

Trait Implementations§

source§

impl<T> Drop for SubsegmentSession<T>
where - T: Namespace + Send + Sync,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for SubsegmentSession<T>
where +

Implementations§

source§

impl<T> SubsegmentSession<T>
where + T: Namespace + Send + Sync,

source

pub fn x_amzn_trace_id(&self) -> Option<String>

Returns the x-amzn-trace-id header value.

+
source

pub fn namespace_mut(&mut self) -> Option<&mut T>

Returns the namespace as a mutable reference.

+

Trait Implementations§

source§

impl<T> Debug for SubsegmentSession<T>
where + T: Namespace + Send + Sync + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T> Drop for SubsegmentSession<T>
where + T: Namespace + Send + Sync,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for SubsegmentSession<T>
where T: RefUnwindSafe,

§

impl<T> Send for SubsegmentSession<T>

§

impl<T> Sync for SubsegmentSession<T>

§

impl<T> Unpin for SubsegmentSession<T>
where T: Unpin,

§

impl<T> UnwindSafe for SubsegmentSession<T>
where T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/docs/api/xray_lite/enum.TraceId.html b/docs/api/xray_lite/enum.TraceId.html index 68f757f..53d46f0 100644 --- a/docs/api/xray_lite/enum.TraceId.html +++ b/docs/api/xray_lite/enum.TraceId.html @@ -1,12 +1,12 @@ -TraceId in xray_lite - Rust +TraceId in xray_lite - Rust

Enum xray_lite::TraceId

source ·
pub enum TraceId {
     // some variants omitted
 }
Expand description

Coorelates a string of spans together

Users need only refer to displability a factory for generating these is provided.

Implementations§

source§

impl TraceId

source

pub fn new() -> Self

Generate a new random trace ID

-

Trait Implementations§

source§

impl Clone for TraceId

source§

fn clone(&self) -> TraceId

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TraceId

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TraceId

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for TraceId

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where - D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for TraceId

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for TraceId

source§

fn eq(&self, other: &TraceId) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for TraceId

source§

fn clone(&self) -> TraceId

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TraceId

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TraceId

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for TraceId

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where + D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for TraceId

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for TraceId

source§

fn eq(&self, other: &TraceId) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for TraceId

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for TraceId

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/docs/api/xray_lite/index.html b/docs/api/xray_lite/index.html index c27d436..09baaf1 100644 --- a/docs/api/xray_lite/index.html +++ b/docs/api/xray_lite/index.html @@ -1,4 +1,4 @@ -xray_lite - Rust