From f914c3fdb0912b21a19be33025437f2d25d864e3 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Fri, 28 Jun 2019 17:33:43 -0400 Subject: [PATCH 01/34] Remove synchronous lambda --- Cargo.toml | 9 - lambda-runtime-client/Cargo.toml | 30 - lambda-runtime-client/src/client.rs | 519 ------------------ lambda-runtime-client/src/error.rs | 165 ------ lambda-runtime-client/src/lib.rs | 62 --- lambda-runtime-core/Cargo.toml | 27 - lambda-runtime-core/build.rs | 56 -- lambda-runtime-core/examples/simple.rs | 21 - lambda-runtime-core/src/context.rs | 134 ----- lambda-runtime-core/src/env.rs | 183 ------ lambda-runtime-core/src/error.rs | 98 ---- lambda-runtime-core/src/handler.rs | 20 - lambda-runtime-core/src/lib.rs | 25 - lambda-runtime-core/src/runtime.rs | 326 ----------- lambda-runtime-errors-derive/Cargo.toml | 24 - lambda-runtime-errors-derive/src/lib.rs | 23 - lambda-runtime-errors-derive/tests/tests.rs | 75 --- lambda-runtime-errors/Cargo.toml | 20 - lambda-runtime-errors/errorgen.py | 142 ----- lambda-runtime-errors/src/error_ext_impl.rs | 252 --------- lambda-runtime-errors/src/lib.rs | 199 ------- lambda-runtime/Cargo.toml | 29 - lambda-runtime/examples/basic.rs | 36 -- lambda-runtime/examples/custom_error.rs | 70 --- .../examples/custom_error_failure.rs | 51 -- lambda-runtime/examples/failure_error.rs | 38 -- .../examples/with_custom_runtime.rs | 38 -- lambda-runtime/src/lib.rs | 219 -------- 28 files changed, 2891 deletions(-) delete mode 100644 Cargo.toml delete mode 100644 lambda-runtime-client/Cargo.toml delete mode 100644 lambda-runtime-client/src/client.rs delete mode 100644 lambda-runtime-client/src/error.rs delete mode 100644 lambda-runtime-client/src/lib.rs delete mode 100644 lambda-runtime-core/Cargo.toml delete mode 100644 lambda-runtime-core/build.rs delete mode 100644 lambda-runtime-core/examples/simple.rs delete mode 100644 lambda-runtime-core/src/context.rs delete mode 100644 lambda-runtime-core/src/env.rs delete mode 100644 lambda-runtime-core/src/error.rs delete mode 100644 lambda-runtime-core/src/handler.rs delete mode 100644 lambda-runtime-core/src/lib.rs delete mode 100644 lambda-runtime-core/src/runtime.rs delete mode 100644 lambda-runtime-errors-derive/Cargo.toml delete mode 100644 lambda-runtime-errors-derive/src/lib.rs delete mode 100644 lambda-runtime-errors-derive/tests/tests.rs delete mode 100644 lambda-runtime-errors/Cargo.toml delete mode 100755 lambda-runtime-errors/errorgen.py delete mode 100644 lambda-runtime-errors/src/error_ext_impl.rs delete mode 100644 lambda-runtime-errors/src/lib.rs delete mode 100644 lambda-runtime/Cargo.toml delete mode 100644 lambda-runtime/examples/basic.rs delete mode 100644 lambda-runtime/examples/custom_error.rs delete mode 100644 lambda-runtime/examples/custom_error_failure.rs delete mode 100644 lambda-runtime/examples/failure_error.rs delete mode 100644 lambda-runtime/examples/with_custom_runtime.rs delete mode 100644 lambda-runtime/src/lib.rs diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index 255cc695..00000000 --- a/Cargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[workspace] -members = [ - "lambda-runtime-client", - "lambda-runtime-core", - "lambda-runtime", - "lambda-http", - "lambda-runtime-errors", - "lambda-runtime-errors-derive" -] \ No newline at end of file diff --git a/lambda-runtime-client/Cargo.toml b/lambda-runtime-client/Cargo.toml deleted file mode 100644 index bf5dcef9..00000000 --- a/lambda-runtime-client/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "lambda_runtime_client" -version = "0.2.2" -authors = ["Stefano Buliani", "David Barsky"] -edition = "2018" -description = "Client SDK for AWS Lambda's runtime APIs" -keywords = ["AWS", "Lambda", "Runtime", "API", "Client"] -license = "Apache-2.0" -homepage = "https://github.com/awslabs/aws-lambda-rust-runtime" -repository = "https://github.com/awslabs/aws-lambda-rust-runtime" -documentation = "https://docs.rs/lambda_runtime_client" -readme = "../README.md" - -[badges] -travis-ci = { repository = "awslabs/aws-lambda-rust-runtime" } -maintenance = { status = "actively-developed" } - -[dependencies] -hyper = "0.12" -tokio = "0.1" -http = "0.1" -serde = "^1" -serde_json = "^1" -serde_derive = "^1" -log = "0.4" -lambda_runtime_errors = { path = "../lambda-runtime-errors", version = "^0.1" } -failure = "^0.1" - -[dev-dependencies] -chrono = "^0.4" \ No newline at end of file diff --git a/lambda-runtime-client/src/client.rs b/lambda-runtime-client/src/client.rs deleted file mode 100644 index 11e70dd2..00000000 --- a/lambda-runtime-client/src/client.rs +++ /dev/null @@ -1,519 +0,0 @@ -use crate::error::{ApiError, ApiErrorKind, ErrorResponse}; -use failure::ResultExt; -use hyper::{ - client::HttpConnector, - header::{self, HeaderMap, HeaderValue}, - rt::{Future, Stream}, - Body, Client, Method, Request, Uri, -}; -use log::*; -use serde_derive::*; -use serde_json; -use std::{collections::HashMap, fmt}; -use tokio::runtime::Runtime; - -const RUNTIME_API_VERSION: &str = "2018-06-01"; -const API_CONTENT_TYPE: &str = "application/json"; -const API_ERROR_CONTENT_TYPE: &str = "application/vnd.aws.lambda.error+json"; -const RUNTIME_ERROR_HEADER: &str = "Lambda-Runtime-Function-Error-Type"; -// TODO: Perhaps use a macro to generate this -const DEFAULT_AGENT: &str = "AWS_Lambda_Rust"; - -/// Enum of the headers returned by Lambda's `/next` API call. -pub enum LambdaHeaders { - /// The AWS request ID - RequestId, - /// The ARN of the Lambda function being invoked - FunctionArn, - /// The X-Ray trace ID generated for this invocation - TraceId, - /// The deadline for the function execution in milliseconds - Deadline, - /// The client context header. This field is populated when the function - /// is invoked from a mobile client. - ClientContext, - /// The Cognito Identity context for the invocation. This field is populated - /// when the function is invoked with AWS credentials obtained from Cognito - /// Identity. - CognitoIdentity, -} - -impl LambdaHeaders { - /// Returns the `str` representation of the header. - fn as_str(&self) -> &'static str { - match self { - LambdaHeaders::RequestId => "Lambda-Runtime-Aws-Request-Id", - LambdaHeaders::FunctionArn => "Lambda-Runtime-Invoked-Function-Arn", - LambdaHeaders::TraceId => "Lambda-Runtime-Trace-Id", - LambdaHeaders::Deadline => "Lambda-Runtime-Deadline-Ms", - LambdaHeaders::ClientContext => "Lambda-Runtime-Client-Context", - LambdaHeaders::CognitoIdentity => "Lambda-Runtime-Cognito-Identity", - } - } -} - -impl fmt::Display for LambdaHeaders { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(self.as_str()) - } -} - -/// AWS Moble SDK client properties -#[derive(Deserialize, Clone)] -pub struct ClientApplication { - /// The mobile app installation id - #[serde(rename = "installationId")] - pub installation_id: String, - /// The app title for the mobile app as registered with AWS' mobile services. - #[serde(rename = "appTitle")] - pub app_title: String, - /// The version name of the application as registered with AWS' mobile services. - #[serde(rename = "appVersionName")] - pub app_version_name: String, - /// The app version code. - #[serde(rename = "appVersionCode")] - pub app_version_code: String, - /// The package name for the mobile application invoking the function - #[serde(rename = "appPackageName")] - pub app_package_name: String, -} - -/// Client context sent by the AWS Mobile SDK. -#[derive(Deserialize, Clone)] -pub struct ClientContext { - /// Information about the mobile application invoking the function. - pub client: ClientApplication, - /// Custom properties attached to the mobile event context. - pub custom: HashMap, - /// Environment settings from the mobile client. - pub environment: HashMap, -} - -#[derive(Deserialize, Clone)] -/// Cognito identity information sent with the event -pub struct CognitoIdentity { - /// The unique identity id for the Cognito credentials invoking the function. - pub identity_id: String, - /// The identity pool id the caller is "registered" with. - pub identity_pool_id: String, -} - -/// The Lambda function execution context. The values in this struct -/// are populated using the [Lambda environment variables](https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html) -/// and the headers returned by the poll request to the Runtime APIs. -/// A new instance of the `Context` object is passed to each handler invocation. -#[derive(Clone)] -pub struct EventContext { - /// The ARN of the Lambda function being invoked. - pub invoked_function_arn: String, - /// The AWS request ID generated by the Lambda service. - pub aws_request_id: String, - /// The X-Ray trace ID for the current invocation. - pub xray_trace_id: Option, - /// The execution deadline for the current invocation in milliseconds. - pub deadline: i64, - /// The client context object sent by the AWS mobile SDK. This field is - /// empty unless the function is invoked using an AWS mobile SDK. - pub client_context: Option, - /// The Cognito identity that invoked the function. This field is empty - /// unless the invocation request to the Lambda APIs was made using AWS - /// credentials issues by Amazon Cognito Identity Pools. - pub identity: Option, -} - -/// Used by the Runtime to communicate with the internal endpoint. -pub struct RuntimeClient { - _runtime: Runtime, - http_client: Client, - next_endpoint: Uri, - runtime_agent: String, - host: String, -} - -impl<'ev> RuntimeClient { - /// Creates a new instance of the Runtime APIclient SDK. The http client has timeouts disabled and - /// will always send a `Connection: keep-alive` header. Optionally, the runtime client can receive - /// a user agent string. This string is used to make requests to the runtime APIs and is used to - /// identify the runtime being used by the function. For example, the `lambda_runtime_core` crate - /// uses `AWS_Lambda_Rust/0.1.0 (rustc/1.31.1-stable)`. The runtime client can also receive an - /// instance of Tokio Runtime to use. - pub fn new(host: &str, agent: Option, runtime: Option) -> Result { - debug!("Starting new HttpRuntimeClient for {}", host); - let runtime_agent = match agent { - Some(a) => a, - None => DEFAULT_AGENT.to_owned(), - }; - - // start a tokio core main event loop for hyper - let runtime = match runtime { - Some(r) => r, - None => Runtime::new().context(ApiErrorKind::Unrecoverable("Could not initialize runtime".to_string()))?, - }; - - let http_client = Client::builder().executor(runtime.executor()).build_http(); - // we cached the parsed Uri since this never changes. - let next_endpoint = format!("http://{}/{}/runtime/invocation/next", host, RUNTIME_API_VERSION) - .parse::() - .context(ApiErrorKind::Unrecoverable("Could not parse API uri".to_string()))?; - - Ok(RuntimeClient { - _runtime: runtime, - http_client, - next_endpoint, - runtime_agent, - host: host.to_owned(), - }) - } -} - -impl<'ev> RuntimeClient { - /// Polls for new events to the Runtime APIs. - pub fn next_event(&self) -> Result<(Vec, EventContext), ApiError> { - trace!("Polling for next event"); - - // We wait instead of processing the future asynchronously because AWS Lambda - // itself enforces only one event per container at a time. No point in taking on - // the additional complexity. - let resp = self - .http_client - .get(self.next_endpoint.clone()) - .wait() - .context(ApiErrorKind::Unrecoverable("Could not fetch next event".to_string()))?; - - if resp.status().is_client_error() { - error!( - "Runtime API returned client error when polling for new events: {}", - resp.status() - ); - Err(ApiErrorKind::Recoverable(format!( - "Error {} when polling for events", - resp.status() - )))?; - } - if resp.status().is_server_error() { - error!( - "Runtime API returned server error when polling for new events: {}", - resp.status() - ); - Err(ApiErrorKind::Unrecoverable( - "Server error when polling for new events".to_string(), - ))?; - } - let ctx = self.get_event_context(&resp.headers())?; - let out = resp - .into_body() - .concat2() - .wait() - .context(ApiErrorKind::Recoverable("Could not read event boxy".to_string()))?; - let buf = out.into_bytes().to_vec(); - - trace!( - "Received new event for request id {}. Event length {} bytes", - ctx.aws_request_id, - buf.len() - ); - Ok((buf, ctx)) - } - - /// Calls the Lambda Runtime APIs to submit a response to an event. In this function we treat - /// all errors from the API as an unrecoverable error. This is because the API returns - /// 4xx errors for responses that are too long. In that case, we simply log the output and fail. - /// - /// # Arguments - /// - /// * `request_id` The request id associated with the event we are serving the response for. - /// This is returned as a header from the poll (`/next`) API. - /// * `output` The object be sent back to the Runtime APIs as a response. - /// - /// # Returns - /// A `Result` object containing a bool return value for the call or an `error::ApiError` instance. - pub fn event_response(&self, request_id: &str, output: &[u8]) -> Result<(), ApiError> { - trace!( - "Posting response for request {} to Runtime API. Response length {} bytes", - request_id, - output.len() - ); - let uri = format!( - "http://{}/{}/runtime/invocation/{}/response", - self.host, RUNTIME_API_VERSION, request_id - ) - .parse::() - .context(ApiErrorKind::Unrecoverable( - "Could not generate response uri".to_owned(), - ))?; - let req = self.get_runtime_post_request(&uri, output); - - let resp = self - .http_client - .request(req) - .wait() - .context(ApiErrorKind::Recoverable("Could not post event response".to_string()))?; - if !resp.status().is_success() { - error!( - "Error from Runtime API when posting response for request {}: {}", - request_id, - resp.status() - ); - Err(ApiErrorKind::Recoverable(format!( - "Error {} while sending response", - resp.status() - )))?; - } - trace!("Posted response to Runtime API for request {}", request_id); - Ok(()) - } - - /// Calls Lambda's Runtime APIs to send an error generated by the `Handler`. Because it's rust, - /// the error type for lambda is always `handled`. - /// - /// # Arguments - /// - /// * `request_id` The request id associated with the event we are serving the error for. - /// * `e` An instance of `errors::HandlerError` generated by the handler function. - /// - /// # Returns - /// A `Result` object containing a bool return value for the call or an `error::ApiError` instance. - pub fn event_error(&self, request_id: &str, e: &ErrorResponse) -> Result<(), ApiError> { - trace!( - "Posting error to runtime API for request {}: {}", - request_id, - e.error_message - ); - let uri = format!( - "http://{}/{}/runtime/invocation/{}/error", - self.host, RUNTIME_API_VERSION, request_id - ) - .parse::() - .context(ApiErrorKind::Unrecoverable( - "Could not generate response uri".to_owned(), - ))?; - let req = self.get_runtime_error_request(&uri, &e); - - let resp = self.http_client.request(req).wait().context(ApiErrorKind::Recoverable( - "Could not post event error response".to_string(), - ))?; - if !resp.status().is_success() { - error!( - "Error from Runtime API when posting error response for request {}: {}", - request_id, - resp.status() - ); - Err(ApiErrorKind::Recoverable(format!( - "Error {} while sending response", - resp.status() - )))?; - } - trace!("Posted error response for request id {}", request_id); - Ok(()) - } - - /// Calls the Runtime APIs to report a failure during the init process. - /// The contents of the error (`e`) parmeter are passed to the Runtime APIs - /// using the private `to_response()` method. - /// - /// # Arguments - /// - /// * `e` An instance of `errors::RuntimeError`. - /// - /// # Panics - /// If it cannot send the init error. In this case we panic to force the runtime - /// to restart. - pub fn fail_init(&self, e: &ErrorResponse) { - error!("Calling fail_init Runtime API: {}", e.error_message); - let uri = format!("http://{}/{}/runtime/init/error", self.host, RUNTIME_API_VERSION) - .parse::() - .map_err(|e| { - error!("Could not parse fail init URI: {}", e); - panic!("Killing runtime"); - }); - let req = self.get_runtime_error_request(&uri.unwrap(), &e); - - self.http_client - .request(req) - .wait() - .map_err(|e| { - error!("Error while sending init failed message: {}", e); - panic!("Error while sending init failed message: {}", e); - }) - .map(|resp| { - info!("Successfully sent error response to the runtime API: {:?}", resp); - }) - .expect("Could not complete init_fail request"); - } - - /// Returns the endpoint configured for this HTTP Runtime client. - pub fn get_endpoint(&self) -> &str { - &self.host - } - - /// Creates a Hyper `Request` object for the given `Uri` and `Body`. Sets the - /// HTTP method to `POST` and the `Content-Type` header value to `application/json`. - /// - /// # Arguments - /// - /// * `uri` A `Uri` reference target for the request - /// * `body` The content of the post request. This parameter must not be null - /// - /// # Returns - /// A Populated Hyper `Request` object. - fn get_runtime_post_request(&self, uri: &Uri, body: &[u8]) -> Request { - Request::builder() - .method(Method::POST) - .uri(uri.clone()) - .header(header::CONTENT_TYPE, header::HeaderValue::from_static(API_CONTENT_TYPE)) - .header(header::USER_AGENT, self.runtime_agent.clone()) - .body(Body::from(body.to_owned())) - .unwrap() - } - - fn get_runtime_error_request(&self, uri: &Uri, e: &ErrorResponse) -> Request { - let body = serde_json::to_vec(&e).expect("Could not turn error object into response JSON"); - Request::builder() - .method(Method::POST) - .uri(uri.clone()) - .header( - header::CONTENT_TYPE, - header::HeaderValue::from_static(API_ERROR_CONTENT_TYPE), - ) - .header(header::USER_AGENT, self.runtime_agent.clone()) - // this header is static for the runtime APIs and it's likely to go away in the future. - .header(RUNTIME_ERROR_HEADER, HeaderValue::from_static("Unhandled")) - .body(Body::from(body)) - .unwrap() - } - - /// Creates an `EventContext` object based on the response returned by the Runtime - /// API `/next` endpoint. - /// - /// # Arguments - /// - /// * `resp` The response returned by the Runtime APIs endpoint. - /// - /// # Returns - /// A `Result` containing the populated `EventContext` or an `ApiError` if the required headers - /// were not present or the client context and cognito identity could not be parsed from the - /// JSON string. - fn get_event_context(&self, headers: &HeaderMap) -> Result { - // let headers = resp.headers(); - - let aws_request_id = header_string( - headers.get(LambdaHeaders::RequestId.as_str()), - &LambdaHeaders::RequestId, - )?; - let invoked_function_arn = header_string( - headers.get(LambdaHeaders::FunctionArn.as_str()), - &LambdaHeaders::FunctionArn, - )?; - let xray_trace_id = match headers.get(LambdaHeaders::TraceId.as_str()) { - Some(trace_id) => match trace_id.to_str() { - Ok(trace_str) => Some(trace_str.to_owned()), - Err(e) => { - // we do not fail on this error. - error!("Could not parse X-Ray trace id as string: {}", e); - None - } - }, - None => None, - }; - let deadline = header_string(headers.get(LambdaHeaders::Deadline.as_str()), &LambdaHeaders::Deadline)? - .parse::() - .context(ApiErrorKind::Recoverable( - "Could not parse deadline header value to int".to_string(), - ))?; - - let mut ctx = EventContext { - aws_request_id, - invoked_function_arn, - xray_trace_id, - deadline, - client_context: Option::default(), - identity: Option::default(), - }; - - if let Some(ctx_json) = headers.get(LambdaHeaders::ClientContext.as_str()) { - let ctx_json = ctx_json.to_str().context(ApiErrorKind::Recoverable( - "Could not convert context header content to string".to_string(), - ))?; - trace!("Found Client Context in response headers: {}", ctx_json); - let ctx_value: ClientContext = serde_json::from_str(&ctx_json).context(ApiErrorKind::Recoverable( - "Could not parse client context value as json object".to_string(), - ))?; - ctx.client_context = Option::from(ctx_value); - }; - - if let Some(cognito_json) = headers.get(LambdaHeaders::CognitoIdentity.as_str()) { - let cognito_json = cognito_json.to_str().context(ApiErrorKind::Recoverable( - "Could not convert congnito context header content to string".to_string(), - ))?; - trace!("Found Cognito Identity in response headers: {}", cognito_json); - let identity_value: CognitoIdentity = serde_json::from_str(&cognito_json).context( - ApiErrorKind::Recoverable("Could not parse cognito context value as json object".to_string()), - )?; - ctx.identity = Option::from(identity_value); - }; - - Ok(ctx) - } -} - -fn header_string(value: Option<&HeaderValue>, header_type: &LambdaHeaders) -> Result { - match value { - Some(value_str) => Ok(value_str - .to_str() - .context(ApiErrorKind::Recoverable(format!( - "Could not parse {} header", - header_type - )))? - .to_owned()), - None => { - error!("Response headers do not contain {} header", header_type); - Err(ApiErrorKind::Recoverable(format!("Missing {} header", header_type)))? - } - } -} - -#[cfg(test)] -pub(crate) mod tests { - use super::*; - use chrono::{Duration, Utc}; - - fn get_headers() -> HeaderMap { - let mut headers: HeaderMap = HeaderMap::new(); - headers.insert( - LambdaHeaders::RequestId.as_str(), - HeaderValue::from_str("req_id").unwrap(), - ); - headers.insert( - LambdaHeaders::FunctionArn.as_str(), - HeaderValue::from_str("func_arn").unwrap(), - ); - headers.insert(LambdaHeaders::TraceId.as_str(), HeaderValue::from_str("trace").unwrap()); - let deadline = Utc::now() + Duration::seconds(10); - headers.insert( - LambdaHeaders::Deadline.as_str(), - HeaderValue::from_str(&deadline.timestamp_millis().to_string()).unwrap(), - ); - headers - } - - #[test] - fn get_event_context_with_empty_trace_id() { - let client = RuntimeClient::new("localhost:8081", None, None).expect("Could not initialize runtime client"); - let mut headers = get_headers(); - headers.remove(LambdaHeaders::TraceId.as_str()); - let headers_result = client.get_event_context(&headers); - assert_eq!(false, headers_result.is_err()); - let ok_result = headers_result.unwrap(); - assert_eq!(None, ok_result.xray_trace_id); - assert_eq!("req_id", ok_result.aws_request_id); - } - - #[test] - fn get_event_context_populates_trace_id_when_present() { - let client = RuntimeClient::new("localhost:8081", None, None).expect("Could not initialize runtime client"); - let headers = get_headers(); - let headers_result = client.get_event_context(&headers); - assert_eq!(false, headers_result.is_err()); - assert_eq!(Some("trace".to_owned()), headers_result.unwrap().xray_trace_id); - } -} diff --git a/lambda-runtime-client/src/error.rs b/lambda-runtime-client/src/error.rs deleted file mode 100644 index 0d778135..00000000 --- a/lambda-runtime-client/src/error.rs +++ /dev/null @@ -1,165 +0,0 @@ -//! This module defines the `RuntimeApiError` trait that developers should implement -//! to send their custom errors to the AWS Lambda Runtime Client SDK. The module also -//! defines the `ApiError` type returned by the `RuntimeClient` implementations. -use failure::{AsFail, Backtrace, Context, Fail}; -use lambda_runtime_errors::LambdaErrorExt; -use log::*; -use serde_derive::*; -use std::{ - fmt::{self, Display}, - option::Option, -}; - -/// Error type for the error responses to the Runtime APIs. In the future, this library -/// should use a customer-generated error code -pub const RUNTIME_ERROR_TYPE: &str = "RustRuntimeError"; - -/// This object is used to generate requests to the Lambda Runtime APIs. -/// It is used for both the error response APIs and fail init calls. -/// custom error types should implement the `RuntimeError` trait and return -/// this object to be compatible with the APIs. -#[derive(Serialize)] -pub struct ErrorResponse { - /// The error message generated by the application. - #[serde(rename = "errorMessage")] - pub error_message: String, - /// The error type for Lambda. Normally, this value is populated using the - /// `error_type()` method from the `LambdaErrorExt` trait. - #[serde(rename = "errorType")] - pub error_type: String, - /// The stack trace for the exception as vector of strings. In the framework, - /// this value is automatically populated using the `backtrace` crate. - #[serde(rename = "stackTrace")] - pub stack_trace: Option>, -} - -impl ErrorResponse { - /// Creates a new instance of the `ErrorResponse` object with the given parameters. If the - /// `RUST_BACKTRACE` env variable is `1` the `ErrorResponse` is populated with the backtrace - /// collected through the [`backtrace` craete](https://crates.io/crates/backtrace). - /// - /// # Arguments - /// - /// * `message` The error message to be returned to the APIs. Normally the error description() - /// * `err_type` An error type that identifies the root cause. Normally populated by the - /// `error_type()` method in the `LambdaErrorExt` trait. - /// * `backtrace` The stack trace for the error - /// - /// # Return - /// A new instance of the `ErrorResponse` object. - fn new(message: String, err_type: String, backtrace: Option<&Backtrace>) -> Self { - let mut err = ErrorResponse { - error_message: message, - error_type: err_type, - stack_trace: Option::default(), - }; - // assume that failure is smart enough to only collect a backtrace - // if the env variable is enabled - if let Some(stack) = backtrace { - trace!("Begin backtrace collection"); - err.stack_trace = Some( - format!("{:?}", stack) - .lines() - .map(std::string::ToString::to_string) - .collect::>(), - ); - trace!("Completed backtrace collection"); - } - - err - } -} - -impl From for ErrorResponse { - fn from(e: T) -> Self { - ErrorResponse::new(format!("{}", e), e.error_type().to_owned(), e.as_fail().backtrace()) - } -} - -/// Represents an error generated by the Lambda Runtime API client. -#[derive(Debug)] -pub struct ApiError { - inner: Context, -} - -impl ApiError { - /// Returns `true` if the API error is recoverable and should be retried - pub fn is_recoverable(&self) -> bool { - match *self.inner.get_context() { - ApiErrorKind::Recoverable(_) => true, - _ => false, - } - } -} -/// Failure context for the `ApiError` type. The kind is used to indicate whether the -/// error is recoverable and should be retried or not. -#[derive(Clone, PartialEq, Debug, Fail)] -pub enum ApiErrorKind { - /// Runtime implementations that receive recoverable errors should automatically - /// retry requests - #[fail(display = "Recoverable API error: {}", _0)] - Recoverable(String), - /// Unrecoverable error should cause the runtime implementation to call the `fail_init` - /// method of the Runtime APIs if it is appropriate and then shutdown gracefully - #[fail(display = "Unrecoverable API error: {}", _0)] - Unrecoverable(String), -} - -impl Fail for ApiError { - fn cause(&self) -> Option<&Fail> { - self.inner.cause() - } - - fn backtrace(&self) -> Option<&Backtrace> { - self.inner.backtrace() - } -} - -impl Display for ApiError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - Display::fmt(&self.inner, f) - } -} - -impl LambdaErrorExt for ApiError { - fn error_type(&self) -> &str { - "RuntimeApiError" - } -} - -impl From for ApiError { - fn from(kind: ApiErrorKind) -> Self { - Self { - inner: Context::new(kind), - } - } -} - -impl From> for ApiError { - fn from(inner: Context) -> Self { - Self { inner } - } -} - -#[cfg(test)] -pub(crate) mod tests { - use super::*; - use failure::format_err; - use std::env; - - #[test] - fn does_not_produce_stack_trace() { - env::remove_var("RUST_BACKTRACE"); - let err = format_err!("Test error").compat(); - let resp_err = ErrorResponse::from(err); - assert_eq!(resp_err.stack_trace, None); - } - - #[test] - fn is_recoverable_eq_correctly() { - let rec_err = ApiError::from(ApiErrorKind::Recoverable("Some recoverable kind".to_owned())); - assert_eq!(true, rec_err.is_recoverable()); - let unrec_err = ApiError::from(ApiErrorKind::Unrecoverable("Some unrecovrable kind".to_owned())); - assert_eq!(false, unrec_err.is_recoverable()); - } -} diff --git a/lambda-runtime-client/src/lib.rs b/lambda-runtime-client/src/lib.rs deleted file mode 100644 index 85089ecc..00000000 --- a/lambda-runtime-client/src/lib.rs +++ /dev/null @@ -1,62 +0,0 @@ -#![warn(missing_docs)] -#![deny(warnings)] -#![allow(clippy::new_ret_no_self)] -//! Rust client SDK for the AWS Lambda Runtime APIs. This crate defines -//! a `RuntimeClient` that encapsulates interactions with AWS Lambda's Runtime -//! APIs. -//! -//! To return errors to the Runtime APIs through the `event_error()` or -//! `fail_init()` methods the `Error` objects must implement the `error::RuntimeApiError` -//! trait from this crate. The RuntimeApiError trait defines a single method -//! called `to_response()`. The method must return an `error::RuntimeError` object. -//! See the `error::ApiError` object in this crate for an example. -//! -//! # Examples -//! -//! ```rust,no_run -//! extern crate lambda_runtime_client; -//! #[macro_use] -//! extern crate serde_derive; -//! extern crate serde_json; -//! -//! use lambda_runtime_client::{RuntimeClient, EventContext}; -//! -//! #[derive(Serialize, Deserialize, Debug)] -//! struct CustomEvent { -//! name: String, -//! } -//! -//! #[derive(Serialize, Deserialize, Debug)] -//! struct CustomResponse { -//! surname: String, -//! } -//! -//! fn main() { -//! let client = RuntimeClient::new("http://localhost:8080", None, None) -//! .expect("Could not initialize client"); -//! -//! let (event_data, event_context) = client.next_event() -//! .expect("Could not retrieve next event"); -//! let custom_event: CustomEvent = serde_json::from_slice(&event_data) -//! .expect("Could not turn Vec into CustomEvent object"); -//! -//! println!("Event for {}", custom_event.name); -//! if custom_event.name == "John" { -//! let resp_object = CustomResponse{ surname: String::from("Doe")}; -//! let resp_vec = serde_json::to_vec(&resp_object) -//! .expect("Could not serialize CustomResponse to Vec"); -//! client.event_response(&event_context.aws_request_id, &resp_vec) -//! .expect("Response sent successfully"); -//! } else { -//! // return a custom error by implementing the RuntimeApiError trait. -//! // See the error module for examples. -//! //client.event_error(&event_context.aws_request_id, CustomErrorType::new("Invalid first name")) -//! // .expect("Could not send error response"); -//! } -//! } -//! ``` - -mod client; -pub mod error; - -pub use crate::client::*; diff --git a/lambda-runtime-core/Cargo.toml b/lambda-runtime-core/Cargo.toml deleted file mode 100644 index cf57ad41..00000000 --- a/lambda-runtime-core/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "lambda_runtime_core" -version = "0.1.2" -authors = ["Stefano Buliani", "David Barsky"] -description = "Rust runtime for AWS Lambda" -keywords = ["AWS", "Lambda", "Runtime", "Rust"] -license = "Apache-2.0" -homepage = "https://github.com/awslabs/aws-lambda-rust-runtime" -repository = "https://github.com/awslabs/aws-lambda-rust-runtime" -documentation = "https://docs.rs/lambda_runtime_core" -edition = "2018" - -[dependencies] -log = "^0.4" -hyper = "^0.12" -tokio = "^0.1" -backtrace = "^0.3" -chrono = "^0.4" -failure = "^0.1" -lambda_runtime_client = { path = "../lambda-runtime-client", version = "^0.2" } -lambda_runtime_errors = { path = "../lambda-runtime-errors", version = "^0.1" } - -[dev-dependencies] -simple_logger = "^1.0" - -[build-dependencies] -rustc_version = "^0.2" \ No newline at end of file diff --git a/lambda-runtime-core/build.rs b/lambda-runtime-core/build.rs deleted file mode 100644 index b5eb4bc9..00000000 --- a/lambda-runtime-core/build.rs +++ /dev/null @@ -1,56 +0,0 @@ -use rustc_version::{Channel, VersionMeta}; -use std::{env, fs, io::Write, path::Path, process::Command}; - -const RUNTIME_METADATA_FILE: &str = "runtime_release"; - -fn main() { - println!("Generating AWS Lambda metadata file"); - let out_dir = env::var("OUT_DIR").unwrap(); - let compiler = env::var("RUSTC").unwrap(); - let cargo_version = env::var("CARGO_PKG_VERSION").unwrap(); - let compiler_version = - VersionMeta::for_command(Command::new(compiler.clone())).expect("Could not load compiler metdata"); - let chn: &str; - match compiler_version.channel { - Channel::Dev => chn = "dev", - Channel::Nightly => chn = "nightly", - Channel::Beta => chn = "beta", - Channel::Stable => chn = "stable", - } - let compiler_str = format!("{}/{}-{}", compiler, compiler_version.semver, chn); - - let agent = format!("AWS_Lambda_Rust/{} ({})", cargo_version, compiler_str); - // we expect this library to be built as a dependency and the output directory - // to be something like: my-lambda-function/target/release/build/lambda_runtime_core-c1abe336a4420096/out. - // we want the metadata file to be generated alongside the executable of the function - // so we travel 3 directories up to my-lambda-function/target/release. - let metadata_path = Path::new(&out_dir) - .parent() - .unwrap() - .parent() - .unwrap() - .parent() - .unwrap() - .join(RUNTIME_METADATA_FILE); - println!("Writing runtime metadata to: {}", metadata_path.to_str().unwrap()); - println!("Runtime metadata: {}", agent); - fs::write(metadata_path, agent.clone()).expect("Could not write runtime metdata file"); - - // next generate the metadata function for the runtime - let dest_path = Path::new(&out_dir).join("metadata.rs"); - let mut f = fs::File::create(&dest_path).unwrap(); - - f.write_all( - format!( - " -/// returns metdata information about the Lambda runtime -pub fn runtime_release() -> &'static str {{ - \"{}\" -}} -", - agent - ) - .as_bytes(), - ) - .unwrap(); -} diff --git a/lambda-runtime-core/examples/simple.rs b/lambda-runtime-core/examples/simple.rs deleted file mode 100644 index f83f3f34..00000000 --- a/lambda-runtime-core/examples/simple.rs +++ /dev/null @@ -1,21 +0,0 @@ -use failure::format_err; -use lambda_runtime_core::{lambda, Context, HandlerError}; -use simple_logger; -use std::error::Error; - -fn main() -> Result<(), Box> { - simple_logger::init_with_level(log::Level::Debug)?; - lambda!(my_handler); - - Ok(()) -} - -fn my_handler(data: Vec, _c: Context) -> Result, HandlerError> { - let first_name = String::from_utf8(data)?; - - if first_name == "" { - return Err(format_err!("First name must be valid").into()); - } - - Ok(format!("Hello, {}!", first_name).as_bytes().to_vec()) -} diff --git a/lambda-runtime-core/src/context.rs b/lambda-runtime-core/src/context.rs deleted file mode 100644 index 658a29f6..00000000 --- a/lambda-runtime-core/src/context.rs +++ /dev/null @@ -1,134 +0,0 @@ -use chrono::Utc; - -use crate::env as lambda_env; -use lambda_runtime_client; - -/// The Lambda function execution context. The values in this struct -/// are populated using the [Lambda environment variables](https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html) -/// and the headers returned by the poll request to the Runtime APIs. -/// A new instance of the `Context` object is passed to each handler invocation. -#[derive(Default, Clone)] -pub struct Context { - /// The amount of memory allocated to the Lambda function in Mb. - /// This value is extracted from the `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` - /// environment variable set by the Lambda service. - pub memory_limit_in_mb: i32, - /// The name of the Lambda function as registered with the Lambda - /// service. The value is extracted from the `AWS_LAMBDA_FUNCTION_NAME` - /// environment variable set by the Lambda service. - pub function_name: String, - /// The version of the function being invoked. This value is extracted - /// from the `AWS_LAMBDA_FUNCTION_VERSION` environment variable set - /// by the Lambda service. - pub function_version: String, - /// The fully qualified ARN (Amazon Resource Name) for the function - /// invocation event. This value is returned by the Lambda Runtime APIs - /// as a header. - pub invoked_function_arn: String, - /// The AWS request ID for the current invocation event. This value - /// is returned by the Lambda Runtime APIs as a header. - pub aws_request_id: String, - /// The X-Ray trace ID for the current invocation. This value is returned - /// by the Lambda Runtime APIs as a header. Developers can use this value - /// with the AWS SDK to create new, custom sub-segments to the current - /// invocation. - pub xray_trace_id: Option, - /// The name of the CloudWatch log stream for the current execution - /// environment. This value is extracted from the `AWS_LAMBDA_LOG_STREAM_NAME` - /// environment variable set by the Lambda service. - pub log_stream_name: String, - /// The name of the CloudWatch log group for the current execution - /// environment. This value is extracted from the `AWS_LAMBDA_LOG_GROUP_NAME` - /// environment variable set by the Lambda service. - pub log_group_name: String, - - /// The client context sent by the AWS Mobile SDK with the invocation - /// request. This value is returned by the Lambda Runtime APIs as a - /// header. This value is populated only if the invocation request - /// originated from an AWS Mobile SDK or an SDK that attached the client - /// context information to the request. - pub client_context: Option, - /// The information of the Cognito identity that sent the invocation - /// request to the Lambda service. This value is returned by the Lambda - /// Runtime APIs in a header and it's only populated if the invocation - /// request was performed with AWS credentials federated through the Cognito - /// identity service. - pub identity: Option, - - /// The deadline for the current handler execution in milliseconds, based - /// on a unix `MONOTONIC` clock. - pub deadline: i64, -} - -impl Context { - /// Generates a new `Context` object for an event. Uses the responses headers alongside the - /// environment variable values from the `FunctionSettings` object to populate the data. - /// - /// # Arguments - /// - /// * `local_settings` A populated environment settings object - /// - /// # Return - /// A new, populated `Context` object. - pub(super) fn new(local_settings: lambda_env::FunctionSettings) -> Context { - Context { - xray_trace_id: None, - memory_limit_in_mb: local_settings.memory_size, - function_name: local_settings.function_name, - function_version: local_settings.version, - log_stream_name: local_settings.log_stream, - log_group_name: local_settings.log_group, - ..Default::default() - } - } - - /// Returns the remaining time in the execution in milliseconds. This is based on the - /// deadline header passed by Lambda's Runtime APIs. - pub fn get_time_remaining_millis(&self) -> i64 { - self.deadline - Utc::now().timestamp_millis() - } -} - -#[cfg(test)] -pub(crate) mod tests { - use super::*; - use crate::env::{self, ConfigProvider}; - use std::{thread::sleep, time}; - - fn get_deadline(timeout_secs: i64) -> i64 { - let deadline = Utc::now() + chrono::Duration::seconds(timeout_secs); - deadline.timestamp_millis() - } - - pub(crate) fn test_context(timeout_secs: i64) -> Context { - Context { - memory_limit_in_mb: 128, - function_name: "test_func".to_string(), - function_version: "$LATEST".to_string(), - invoked_function_arn: "arn:aws:lambda".to_string(), - aws_request_id: "123".to_string(), - xray_trace_id: Some("123".to_string()), - log_stream_name: "logStream".to_string(), - log_group_name: "logGroup".to_string(), - client_context: Option::default(), - identity: Option::default(), - deadline: get_deadline(timeout_secs), - } - } - - #[test] - fn verify_time_remaining() { - let config = env::tests::MockConfigProvider { error: false }; - let mut ctx = Context::new(config.get_function_settings().unwrap()); - ctx.deadline = get_deadline(10); - println!("Set deadline to: {}", ctx.deadline); - sleep(time::Duration::new(2, 0)); - - let remaining = ctx.get_time_remaining_millis(); - assert!( - remaining > 7800 && remaining < 8200, - "Remaining time in millis outside the expected range: {}", - remaining - ); - } -} diff --git a/lambda-runtime-core/src/env.rs b/lambda-runtime-core/src/env.rs deleted file mode 100644 index 94cde577..00000000 --- a/lambda-runtime-core/src/env.rs +++ /dev/null @@ -1,183 +0,0 @@ -use std::env; - -use crate::error::RuntimeError; -use log::*; - -/// The name of the environment variable in the Lambda execution -/// environment for the Runtime APIs endpoint. The value of this -/// variable is read once as the runtime starts. -pub const RUNTIME_ENDPOINT_VAR: &str = "AWS_LAMBDA_RUNTIME_API"; - -/// Clone-able generic function settings object. The data is loaded -/// from environment variables during the init process. The data -/// for the object is cloned in the `Context` for each invocation. -#[derive(Clone)] -pub struct FunctionSettings { - pub function_name: String, - pub memory_size: i32, - pub version: String, - pub log_stream: String, - pub log_group: String, -} - -/// Trait used by the `RustRuntime` module to retrieve configuration information -/// about the environement. This is implemented by the `EnvConfigProvider` using -/// the environment variables. We also have a mock implementation for the unit tests -pub trait ConfigProvider { - /// Loads the function settings such as name, arn, memory amount, version, etc. - /// - /// # Return - /// A `Result` of `FunctionSettings` or a `RuntimeError`. The runtime - /// fails the init process if this function returns an error. - fn get_function_settings(&self) -> Result; - - /// Returns the endpoint (hostname:port) for the Runtime API endpoint - fn get_runtime_api_endpoint(&self) -> Result; -} - -/// Implementation of the `ConfigProvider` trait that reads the settings from -/// environment variables in the Lambda execution environment. This is the config -/// used by the `start()` method of this module. -pub struct EnvConfigProvider; - -impl std::default::Default for EnvConfigProvider { - fn default() -> Self { - EnvConfigProvider - } -} - -impl ConfigProvider for EnvConfigProvider { - /// Loads the function settings from the Lambda environment variables: - /// https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html - fn get_function_settings(&self) -> Result { - let function_name = env::var("AWS_LAMBDA_FUNCTION_NAME")?; - let version = env::var("AWS_LAMBDA_FUNCTION_VERSION")?; - let log_stream = env::var("AWS_LAMBDA_LOG_STREAM_NAME")?; - let log_group = env::var("AWS_LAMBDA_LOG_GROUP_NAME")?; - let memory_str = env::var("AWS_LAMBDA_FUNCTION_MEMORY_SIZE")?; - let parsed_memory_str = memory_str.parse::(); - let memory_size: i32; - match parsed_memory_str { - Ok(int_value) => memory_size = int_value, - Err(_parse_err) => { - error!( - "Memory value from environment is not i32: {}", - env::var("AWS_LAMBDA_FUNCTION_MEMORY_SIZE").unwrap() - ); - return Err(RuntimeError::unrecoverable(&format!( - "Could not parse memory value: {}", - memory_str - ))); - } - }; - - Ok(FunctionSettings { - function_name, - memory_size, - version, - log_stream, - log_group, - }) - } - - /// Loads the endpoint from Lambda's default environment variable: AWS_LAMBDA_RUNTIME_API - fn get_runtime_api_endpoint(&self) -> Result { - let endpoint = env::var(RUNTIME_ENDPOINT_VAR)?; - Ok(endpoint) - } -} - -#[cfg(test)] -pub(crate) mod tests { - use crate::{env::*, error}; - use std::{env, error::Error}; - - pub(crate) struct MockConfigProvider { - pub(crate) error: bool, - } - - impl ConfigProvider for MockConfigProvider { - fn get_function_settings(&self) -> Result { - if self.error { - return Err(error::RuntimeError::unrecoverable("Mock error")); - } - - Ok(FunctionSettings { - function_name: String::from("MockFunction"), - memory_size: 128, - version: String::from("$LATEST"), - log_stream: String::from("LogStream"), - log_group: String::from("LogGroup"), - }) - } - - fn get_runtime_api_endpoint(&self) -> Result { - if self.error { - return Err(error::RuntimeError::unrecoverable("Mock error")); - } - - Ok(String::from("http://localhost:8080")) - } - } - - fn set_endpoint_env_var() { - env::set_var(RUNTIME_ENDPOINT_VAR, "localhost:8080"); - } - - fn set_lambda_env_vars() { - env::set_var("AWS_LAMBDA_FUNCTION_NAME", "test_func"); - env::set_var("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); - env::set_var("AWS_LAMBDA_LOG_STREAM_NAME", "LogStreamName"); - env::set_var("AWS_LAMBDA_LOG_GROUP_NAME", "LogGroup2"); - env::set_var("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "128"); - } - - fn unset_env_vars() { - env::remove_var(RUNTIME_ENDPOINT_VAR); - env::remove_var("AWS_LAMBDA_FUNCTION_NAME"); - env::remove_var("AWS_LAMBDA_FUNCTION_VERSION"); - env::remove_var("AWS_LAMBDA_LOG_STREAM_NAME"); - env::remove_var("AWS_LAMBDA_LOG_GROUP_NAME"); - env::remove_var("AWS_LAMBDA_FUNCTION_MEMORY_SIZE"); - } - - #[test] - fn function_config_from_env_vars() { - unset_env_vars(); - set_endpoint_env_var(); - set_lambda_env_vars(); - let config_provider: &dyn ConfigProvider = &EnvConfigProvider {}; - let env_settings = config_provider.get_function_settings(); - assert_eq!( - env_settings.is_err(), - false, - "Env settings returned an error: {}", - env_settings.err().unwrap().description() - ); - let settings = env_settings.unwrap(); - assert_eq!( - settings.memory_size, 128, - "Invalid memory size: {}", - settings.memory_size - ); - let endpoint = config_provider.get_runtime_api_endpoint(); - assert_eq!( - endpoint.is_err(), - false, - "Env endpoint returned an error: {}", - endpoint.err().unwrap().description() - ); - - unset_env_vars(); - let err_env_settings = config_provider.get_function_settings(); - assert!( - err_env_settings.is_err(), - "Env config did not return error without variables" - ); - let err_endpoint = config_provider.get_runtime_api_endpoint(); - assert!( - err_endpoint.is_err(), - "Env endpoint did not return error without variables" - ); - } -} diff --git a/lambda-runtime-core/src/error.rs b/lambda-runtime-core/src/error.rs deleted file mode 100644 index 89cad043..00000000 --- a/lambda-runtime-core/src/error.rs +++ /dev/null @@ -1,98 +0,0 @@ -//! The error module defines the error types that can be returned -//! by custom handlers as well as the runtime itself. -use std::{env, error::Error, fmt}; - -use lambda_runtime_client::error::ApiError; -use lambda_runtime_errors::LambdaErrorExt; - -/// The `RuntimeError` object is returned by the custom runtime as it polls -/// for new events and tries to execute the handler function. The error -/// is primarily used by other methods within this crate and should not be relevant -/// to developers building Lambda functions. Handlers are expected to return -/// the `HandlerError` defined in this module. -#[derive(Debug, Clone)] -pub struct RuntimeError { - msg: String, - /// The request id that generated this error - pub(crate) request_id: Option, - /// Whether the error is recoverable or not. - pub(crate) recoverable: bool, -} - -impl RuntimeError { - /// Creates a new `RuntimeError` that is unrecoverable and it will cause the - /// runtime to panic in order to force a restart of the execution environment. - /// When a new `RuntimeError` is created the stack trace for the error is collected - /// automatically using the `backtrace` crate. - /// - /// # Arguments - /// - /// * `msg` The error message to be attached to the error. - /// - /// # Returns - /// A new `RuntimeError` instance with the `recoverable` property set to `false`. - pub(crate) fn unrecoverable(msg: &str) -> RuntimeError { - let mut new_error = RuntimeError::new(msg); - new_error.recoverable = false; - new_error - } - - /// Creates a new `RuntimeError` with the given properties. The stack trace for the - /// error is collected automatically using the `backtrace` crate. - /// - /// # Arguments - /// - /// * `msg` The error message - /// - /// # Returns - /// A new `RuntimeError` instance. - pub(crate) fn new(msg: &str) -> RuntimeError { - RuntimeError { - msg: String::from(msg), - recoverable: true, - request_id: None, - } - } -} - -impl LambdaErrorExt for RuntimeError { - fn error_type(&self) -> &str { - if self.recoverable { - "RecoverableRuntimeError" - } else { - "UnrecoverableRuntimeError" - } - } -} - -impl fmt::Display for RuntimeError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{}", self.msg) - } -} - -// This is important for other errors to wrap this one. -impl Error for RuntimeError { - fn description(&self) -> &str { - &self.msg - } - - fn cause(&self) -> Option<&Error> { - // Generic error, underlying cause isn't tracked. - None - } -} - -impl From for RuntimeError { - fn from(e: env::VarError) -> Self { - RuntimeError::unrecoverable(e.description()) - } -} - -impl From for RuntimeError { - fn from(e: ApiError) -> Self { - let mut err = RuntimeError::new(&format!("{}", e)); - err.recoverable = e.is_recoverable(); - err - } -} diff --git a/lambda-runtime-core/src/handler.rs b/lambda-runtime-core/src/handler.rs deleted file mode 100644 index 41d2eff5..00000000 --- a/lambda-runtime-core/src/handler.rs +++ /dev/null @@ -1,20 +0,0 @@ -use crate::context::Context; -use failure::Fail; -use lambda_runtime_errors::LambdaErrorExt; -use std::fmt::Display; - -/// Functions acting as a handler must conform to this type. -pub trait Handler { - /// Run the handler. - fn run(&mut self, event: Vec, ctx: Context) -> Result, EventError>; -} - -impl<'ev, Function, EventError> Handler for Function -where - Function: FnMut(Vec, Context) -> Result, EventError>, - EventError: Fail + LambdaErrorExt + Display + Send + Sync, -{ - fn run(&mut self, event: Vec, ctx: Context) -> Result, EventError> { - (*self)(event, ctx) - } -} diff --git a/lambda-runtime-core/src/lib.rs b/lambda-runtime-core/src/lib.rs deleted file mode 100644 index 7a52c1d1..00000000 --- a/lambda-runtime-core/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -#![warn(missing_docs)] -#![deny(warnings)] -//! The Lambda runtime core crate implements [Lambda's custom runtime main loop](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html#runtimes-custom-build). -//! The crate receives a `Handler` type that consumed events in the form of `Vec` and -//! outputs a `Result` with a `Vec` successful output. -//! -//! **Unless you have specific requirements to consume/produce raw bytes, you should look at the -//! [`lambda_runtime` crate](https://crates.io/crates/lambda_runtime)**. -//! -//! TODO: Add example - -mod context; -mod env; -mod error; -mod handler; -mod runtime; - -pub use crate::{ - context::Context, - env::{ConfigProvider, EnvConfigProvider}, - handler::Handler, - runtime::*, -}; - -pub use lambda_runtime_errors::{HandlerError, LambdaErrorExt, LambdaResultExt}; diff --git a/lambda-runtime-core/src/runtime.rs b/lambda-runtime-core/src/runtime.rs deleted file mode 100644 index 35357322..00000000 --- a/lambda-runtime-core/src/runtime.rs +++ /dev/null @@ -1,326 +0,0 @@ -use crate::{ - context::Context, - env::{ConfigProvider, EnvConfigProvider, FunctionSettings}, - error::RuntimeError, - handler::Handler, -}; -use failure::Fail; -use lambda_runtime_client::{error::ErrorResponse, RuntimeClient}; -use lambda_runtime_errors::LambdaErrorExt; -use log::*; -use std::{fmt::Display, marker::PhantomData}; -use tokio::runtime::Runtime as TokioRuntime; - -// include file generated during the build process -include!(concat!(env!("OUT_DIR"), "/metadata.rs")); - -const MAX_RETRIES: i8 = 3; - -/// Creates a new runtime and begins polling for events using Lambda's Runtime APIs. -/// -/// # Arguments -/// -/// * `f` A function pointer that conforms to the `Handler` type. -/// -/// # Panics -/// The function panics if the Lambda environment variables are not set. -pub fn start(f: impl Handler, runtime: Option) -where - EventError: Fail + LambdaErrorExt + Display + Send + Sync, -{ - start_with_config(f, &EnvConfigProvider::default(), runtime) -} - -#[macro_export] -/// Starts an event listener which will parse incoming events into the even type requested by -/// `handler` and will invoke `handler` on each incoming event. Can optionally be passed a Tokio -/// `runtime` to build the listener on. If none is provided, it creates its own. -macro_rules! lambda { - ($handler:ident) => { - $crate::start($handler, None) - }; - ($handler:ident, $runtime:expr) => { - $crate::start($handler, Some($runtime)) - }; - ($handler:expr) => { - $crate::start($handler, None) - }; - ($handler:expr, $runtime:expr) => { - $crate::start($handler, Some($runtime)) - }; -} - -/// Internal implementation of the start method that receives a config provider. This method -/// is used for unit tests with a mock provider. The provider data is used to construct the -/// `HttpRuntimeClient` which is then passed to the `start_with_runtime_client()` function. -/// -/// # Arguments -/// -/// * `f` A function pointer that conforms to the `Handler` type. -/// * `config` An implementation of the `ConfigProvider` trait with static lifetime. -/// -/// # Panics -/// The function panics if the `ConfigProvider` returns an error from the `get_runtime_api_endpoint()` -/// or `get_function_settings()` methods. The panic forces AWS Lambda to terminate the environment -/// and spin up a new one for the next invocation. -pub fn start_with_config( - f: impl Handler, - config: &Config, - runtime: Option, -) where - Config: ConfigProvider, - EventError: Fail + LambdaErrorExt + Display + Send + Sync, -{ - // if we cannot find the endpoint we panic, nothing else we can do. - let endpoint: String; - match config.get_runtime_api_endpoint() { - Ok(value) => endpoint = value, - Err(e) => { - panic!("Could not find runtime API env var: {}", e); - } - } - - // if we can't get the settings from the environment variable - // we also panic. - let function_config: FunctionSettings; - let settings = config.get_function_settings(); - match settings { - Ok(env_settings) => function_config = env_settings, - Err(e) => { - panic!("Could not find runtime API env var: {}", e); - } - } - - let info = Option::from(runtime_release().to_owned()); - - match RuntimeClient::new(&endpoint, info, runtime) { - Ok(client) => { - start_with_runtime_client(f, function_config, client); - } - Err(e) => { - panic!("Could not create runtime client SDK: {}", e); - } - } -} - -/// Starts the rust runtime with the given Runtime API client. -/// -/// # Arguments -/// -/// * `f` A function pointer that conforms to the `Handler` type. -/// * `client` An implementation of the `lambda_runtime_client::RuntimeClient` -/// trait with a lifetime that matches that of the environment, -/// in this case expressed as `'env`. -/// -/// # Panics -/// The function panics if we cannot instantiate a new `RustRuntime` object. -pub(crate) fn start_with_runtime_client( - f: impl Handler, - func_settings: FunctionSettings, - client: RuntimeClient, -) where - EventError: Fail + LambdaErrorExt + Display + Send + Sync, -{ - let mut lambda_runtime: Runtime<_, EventError> = Runtime::new(f, func_settings, MAX_RETRIES, client); - - // start the infinite loop - lambda_runtime.start(); -} - -/// Internal representation of the runtime object that polls for events and communicates -/// with the Runtime APIs -pub(super) struct Runtime { - runtime_client: RuntimeClient, - handler: Function, - max_retries: i8, - settings: FunctionSettings, - _phantom: PhantomData, -} - -// generic methods implementation -impl Runtime -where - Function: Handler, - EventError: Fail + LambdaErrorExt + Display + Send + Sync, -{ - /// Creates a new instance of the `Runtime` object populated with the environment - /// settings. - /// - /// # Arguments - /// - /// * `f` A function pointer that conforms to the `Handler` type. - /// * `retries` The maximum number of times we should retry calling the Runtime APIs - /// for recoverable errors while polling for new events. - /// - /// # Return - /// A `Result` for the `Runtime` object or a `errors::RuntimeSerror`. The runtime - /// fails the init if this function returns an error. If we cannot find the - /// `AWS_LAMBDA_RUNTIME_API` variable in the environment the function panics. - pub(super) fn new(f: Function, config: FunctionSettings, retries: i8, client: RuntimeClient) -> Self { - debug!( - "Creating new runtime with {} max retries for endpoint {}", - retries, - client.get_endpoint() - ); - - Runtime { - runtime_client: client, - settings: config, - handler: f, - max_retries: retries, - _phantom: PhantomData, - } - } -} - -// implementation of methods that require the Event and Output types -// to be compatible with `serde`'s Deserialize/Serialize. -impl Runtime -where - Function: Handler, - EventError: Fail + LambdaErrorExt + Display + Send + Sync, -{ - /// Starts the main event loop and begin polling or new events. If one of the - /// Runtime APIs returns an unrecoverable error this method calls the init failed - /// API and then panics. - fn start(&mut self) { - debug!("Beginning main event loop"); - loop { - let (event, ctx) = self.get_next_event(0, None); - let request_id = ctx.aws_request_id.clone(); - info!("Received new event with AWS request id: {}", request_id); - let function_outcome = self.invoke(event, ctx); - match function_outcome { - Ok(response) => { - debug!( - "Function executed succesfully for {}, pushing response to Runtime API", - request_id - ); - match self.runtime_client.event_response(&request_id, &response) { - Ok(_) => info!("Response for {} accepted by Runtime API", request_id), - // unrecoverable error while trying to communicate with the endpoint. - // we let the Lambda Runtime API know that we have died - Err(e) => { - error!("Could not send response for {} to Runtime API: {}", request_id, e); - if !e.is_recoverable() { - error!( - "Error for {} is not recoverable, sending fail_init signal and panicking.", - request_id - ); - self.runtime_client.fail_init(&ErrorResponse::from(e)); - panic!("Could not send response"); - } - } - } - } - Err(e) => { - error!("Handler returned an error for {}: {}", request_id, e); - debug!("Attempting to send error response to Runtime API for {}", request_id); - match self.runtime_client.event_error(&request_id, &ErrorResponse::from(e)) { - Ok(_) => info!("Error response for {} accepted by Runtime API", request_id), - Err(e) => { - error!("Unable to send error response for {} to Runtime API: {}", request_id, e); - if !e.is_recoverable() { - error!( - "Error for {} is not recoverable, sending fail_init signal and panicking", - request_id - ); - self.runtime_client.fail_init(&ErrorResponse::from(e)); - panic!("Could not send error response"); - } - } - } - } - } - } - } - - /// Invoke the handler function. This method is split out of the main loop to - /// make it testable. - pub(super) fn invoke(&mut self, e: Vec, ctx: Context) -> Result, EventError> { - (self.handler).run(e, ctx) - } - - /// Attempts to get the next event from the Runtime APIs and keeps retrying - /// unless the error throws is not recoverable. - /// - /// # Return - /// The next `Event` object to be processed. - pub(super) fn get_next_event(&self, retries: i8, e: Option) -> (Vec, Context) { - if let Some(err) = e { - if retries > self.max_retries { - error!("Unrecoverable error while fetching next event: {}", err); - match err.request_id.clone() { - Some(req_id) => { - self.runtime_client - .event_error(&req_id, &ErrorResponse::from(err)) - .expect("Could not send event error response"); - } - None => { - self.runtime_client.fail_init(&ErrorResponse::from(err)); - } - } - - // these errors are not recoverable. Either we can't communicate with the runtie APIs - // or we cannot parse the event. panic to restart the environment. - panic!("Could not retrieve next event"); - } - } - - match self.runtime_client.next_event() { - Ok((ev_data, invocation_ctx)) => { - let mut handler_ctx = Context::new(self.settings.clone()); - handler_ctx.invoked_function_arn = invocation_ctx.invoked_function_arn; - handler_ctx.aws_request_id = invocation_ctx.aws_request_id; - handler_ctx.xray_trace_id = invocation_ctx.xray_trace_id; - handler_ctx.client_context = invocation_ctx.client_context; - handler_ctx.identity = invocation_ctx.identity; - handler_ctx.deadline = invocation_ctx.deadline; - - (ev_data, handler_ctx) - } - Err(e) => self.get_next_event(retries + 1, Option::from(RuntimeError::from(e))), - } - } -} - -#[cfg(test)] -pub(crate) mod tests { - use super::*; - use crate::{context, env}; - use lambda_runtime_client::RuntimeClient; - use lambda_runtime_errors::HandlerError; - - #[test] - fn runtime_invokes_handler() { - let config: &dyn env::ConfigProvider = &env::tests::MockConfigProvider { error: false }; - let client = RuntimeClient::new( - &config - .get_runtime_api_endpoint() - .expect("Could not get runtime endpoint"), - None, - None, - ) - .expect("Could not initialize client"); - let handler = |_e: Vec, _c: context::Context| -> Result, HandlerError> { Ok(b"hello".to_vec()) }; - let retries: i8 = 3; - let mut runtime = Runtime::new( - handler, - config - .get_function_settings() - .expect("Could not load environment config"), - retries, - client, - ); - let output = runtime.invoke(b"test".to_vec(), context::tests::test_context(10)); - assert_eq!( - output.is_err(), - false, - "Handler threw an unexpected error: {}", - output.err().unwrap() - ); - let output_bytes = output.ok().unwrap(); - let output_string = String::from_utf8(output_bytes).unwrap(); - assert_eq!(output_string, "hello", "Unexpected output message: {}", output_string); - } -} diff --git a/lambda-runtime-errors-derive/Cargo.toml b/lambda-runtime-errors-derive/Cargo.toml deleted file mode 100644 index f7fe0e84..00000000 --- a/lambda-runtime-errors-derive/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "lambda_runtime_errors_derive" -version = "0.1.1" -authors = ["Stefano Buliani", "David Barsky"] -edition = "2018" -description = "Rust runtime errors derive for AWS Lambda" -keywords = ["AWS", "Lambda", "Runtime", "Rust"] -license = "Apache-2.0" -homepage = "https://github.com/awslabs/aws-lambda-rust-runtime" -repository = "https://github.com/awslabs/aws-lambda-rust-runtime" -documentation = "https://docs.rs/lambda_runtime_errors_derive" - -[dependencies] -syn = "^0.15" -synstructure = "^0.10" -proc-macro2 = "^0.4" -quote = "^0.6" - -[dev-dependencies] -lambda_runtime_errors = { path = "../lambda-runtime-errors", version = "^0.1" } -failure = "^0.1.5" - -[lib] -proc-macro = true \ No newline at end of file diff --git a/lambda-runtime-errors-derive/src/lib.rs b/lambda-runtime-errors-derive/src/lib.rs deleted file mode 100644 index 4018ccb6..00000000 --- a/lambda-runtime-errors-derive/src/lib.rs +++ /dev/null @@ -1,23 +0,0 @@ -use proc_macro2::TokenStream; -use quote::quote; -use synstructure::decl_derive; - -decl_derive!([LambdaErrorExt, attributes()] => lambda_error_derive); - -fn lambda_error_derive(s: synstructure::Structure) -> TokenStream { - let name = format!("{}", s.ast().ident); - - let err_impl = s.gen_impl(quote! { - use lambda_runtime_errors::LambdaErrorExt; - - gen impl LambdaErrorExt for @Self { - fn error_type(&self) -> &str { - #name - } - } - }); - - (quote! { - #err_impl - }) -} diff --git a/lambda-runtime-errors-derive/tests/tests.rs b/lambda-runtime-errors-derive/tests/tests.rs deleted file mode 100644 index 51024742..00000000 --- a/lambda-runtime-errors-derive/tests/tests.rs +++ /dev/null @@ -1,75 +0,0 @@ -use failure::{Backtrace, Context, Fail}; -use lambda_runtime_errors::LambdaErrorExt; -use std::fmt; - -#[derive(LambdaErrorExt)] -struct BasicCustomError; - -#[derive(Fail, LambdaErrorExt, Debug)] -#[fail(display = "Input was invalid UTF-8")] -struct FailureCustomError; - -#[derive(Debug, LambdaErrorExt)] -struct FailureCustomWithKind { - inner: Context, -} - -#[derive(Clone, Eq, PartialEq, Debug, Fail, LambdaErrorExt)] -enum FailureErrorKind { - #[fail(display = "First contextual error message.")] - FirstVariant, - #[fail(display = "Second contextual error message: {}.", _0)] - SecondVariant(String), -} - -impl Fail for FailureCustomWithKind { - fn cause(&self) -> Option<&Fail> { - self.inner.cause() - } - - fn backtrace(&self) -> Option<&Backtrace> { - self.inner.backtrace() - } -} - -impl fmt::Display for FailureCustomWithKind { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - fmt::Display::fmt(&self.inner, f) - } -} - -impl FailureCustomWithKind { - pub fn kind(&self) -> FailureErrorKind { - self.inner.get_context().clone() - } -} - -impl From for FailureCustomWithKind { - fn from(kind: FailureErrorKind) -> Self { - FailureCustomWithKind { - inner: Context::new(kind), - } - } -} - -#[test] -fn simple_error_type() { - let err = BasicCustomError {}; - assert_eq!( - err.error_type(), - "BasicCustomError", - "Custom error not implemented correctly" - ); -} - -#[test] -fn fail_custom_error() { - let err = FailureCustomError {}; - assert_eq!(err.error_type(), "FailureCustomError", "Error type wrong") -} - -#[test] -fn fail_variant_first() { - let err = FailureCustomWithKind::from(FailureErrorKind::FirstVariant); - //assert_eq!(err.error_type(), "FailureCustomError", "Error type wrong") -} diff --git a/lambda-runtime-errors/Cargo.toml b/lambda-runtime-errors/Cargo.toml deleted file mode 100644 index a141187f..00000000 --- a/lambda-runtime-errors/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "lambda_runtime_errors" -version = "0.1.1" -authors = ["Stefano Buliani", "David Barsky"] -edition = "2018" -description = "Rust runtime errors for AWS Lambda" -keywords = ["AWS", "Lambda", "Runtime", "Rust"] -license = "Apache-2.0" -homepage = "https://github.com/awslabs/aws-lambda-rust-runtime" -repository = "https://github.com/awslabs/aws-lambda-rust-runtime" -documentation = "https://docs.rs/lambda_runtime_errors" - -[dependencies] -log = "^0.4" -failure = "^0.1.5" -serde_json = "^1" -lambda_runtime_errors_derive = { path = "../lambda-runtime-errors-derive", version = "^0.1" } - -[dev-dependencies] -lambda_runtime_core = { path = "../lambda-runtime-core", version = "^0.1"} diff --git a/lambda-runtime-errors/errorgen.py b/lambda-runtime-errors/errorgen.py deleted file mode 100755 index 04538651..00000000 --- a/lambda-runtime-errors/errorgen.py +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env python3 - -# Generates the LambdaErrorExt implementation for all of the Errors -# in the standard library, excluding unstable APIs and errors that -# require generics. -# -# !! Please note this script is a hacky, short term solution !! -import os -from urllib.request import urlopen -from html.parser import HTMLParser - -RUST_ERROR_DOCS = "https://doc.rust-lang.org/std/error/trait.Error.html" -GENERATED_FILE_NAME = "./src/error_ext_impl.rs" -UNSTABLE_APIS = ["std::alloc::AllocErr", - "std::alloc::CannotReallocInPlace", - "std::char::CharTryFromError", - "std::num::TryFromIntError"] -GENERIC_ERRORS = ["std::sync::TryLockError", - "std::sync::PoisonError", - "std::sync::mpsc::TrySendError", - "std::sync::mpsc::SendError", - "std::io::IntoInnerError"] - - -class ErrorHtmlParser(HTMLParser): - def __init__(self): - super().__init__() - self.reset() - self.errors = [] - self.parsing = False - self.cur_error = self.empty_error() - - def handle_starttag(self, tag, attrs): - if self.parsing and tag == "a": - href = "" - if len(attrs) == 1: - href = attrs[0][1] - else: - href = attrs[1][1] - parts = href.split("/") - cnt = 0 - package = "" - for part in parts: - cnt = cnt + 1 - if part == "..": - continue - if cnt == len(parts): - break - - package += part + "::" - - if package.endswith("::"): - package = package[0:len(package) - 2] - self.cur_error["package"] = package - self.cur_error["href"] = href - - def empty_error(self): - return { - "package": "", - "name": "" - } - - def handle_data(self, data): - if data == " Error for " or data == "impl Error for ": - self.start_parsing() - else: - if self.parsing: - self.cur_error["name"] = data - if self.is_valid_error(self.cur_error): - self.errors.append(self.cur_error) - self.cur_error = self.empty_error - self.parsing = False - - def is_valid_error(self, err): - if err["name"] == "Box": - return False - if ".html" in err["package"]: - return False - if err["package"] == "": - return False - if err["package"] + "::" + err["name"] in UNSTABLE_APIS: - return False - if err["package"] + "::" + err["name"] in GENERIC_ERRORS: - return False - - return True - - def start_parsing(self): - if not self.parsing: - self.parsing = True - self.cur_error = self.empty_error() - else: - if self.cur_error["package"] == "" or self.cur_error["name"] == "": - print("Starting new error with empty existing error") - - -res = urlopen(RUST_ERROR_DOCS) -assert res.getcode() == 200, "Could not retrieve Rust error docs" - -error_docs_html = res.read() -assert error_docs_html != "", "Empty Error docs" - -parser = ErrorHtmlParser() -parser.feed(error_docs_html.decode()) - -print("found {} valid errors. Beginning code generation to {}".format( - len(parser.errors), GENERATED_FILE_NAME)) - -if os.path.isfile(GENERATED_FILE_NAME): - os.remove(GENERATED_FILE_NAME) - -# code gen -with open(GENERATED_FILE_NAME, "a") as f: - f.write("""// Generated code, DO NOT MODIFY! -// This file contains the implementation of the LambdaErrorExt -// trait for most of the standard library errors as well as the -// implementation of the From trait for the HandlerError struct -// to support the same standard library errors.\n\n""") - - # use statements - for err in parser.errors: - f.write("use {}::{};\n".format(err["package"], err["name"])) - f.write( - "use crate::{LambdaErrorExt, HandlerError};\n\n") - - # impl for LambdaErrorExt for the standard library errors - for err in parser.errors: - f.write("""impl LambdaErrorExt for {} {{ - fn error_type(&self) -> &str {{ - "{}::{}" - }} -}}\n""".format(err["name"], err["package"], err["name"])) - - # impl From trait for standard library errors to HandlerError - for err in parser.errors: - f.write("""impl From<{}> for HandlerError {{ - fn from(e: {}) -> Self {{ - HandlerError::new(e) - }} -}}\n""".format(err["name"], err["name"])) - - f.close() diff --git a/lambda-runtime-errors/src/error_ext_impl.rs b/lambda-runtime-errors/src/error_ext_impl.rs deleted file mode 100644 index 04a46a6a..00000000 --- a/lambda-runtime-errors/src/error_ext_impl.rs +++ /dev/null @@ -1,252 +0,0 @@ -// Generated code, DO NOT MODIFY! -// This file contains the implementation of the LambdaErrorExt -// trait for most of the standard library errors as well as the -// implementation of the From trait for the HandlerError struct -// to support the same standard library errors. - -use crate::{HandlerError, LambdaErrorExt}; -use std::{ - alloc::LayoutErr, - cell::{BorrowError, BorrowMutError}, - char::{DecodeUtf16Error, ParseCharError}, - env::{JoinPathsError, VarError}, - ffi::{FromBytesWithNulError, IntoStringError, NulError}, - net::AddrParseError, - num::{ParseFloatError, ParseIntError}, - path::StripPrefixError, - str::{ParseBoolError, Utf8Error}, - string::{FromUtf16Error, FromUtf8Error, ParseError}, - sync::mpsc::{RecvError, RecvTimeoutError, TryRecvError}, - time::SystemTimeError, -}; - -impl LambdaErrorExt for VarError { - fn error_type(&self) -> &str { - "std::env::VarError" - } -} -impl LambdaErrorExt for ParseError { - fn error_type(&self) -> &str { - "std::string::ParseError" - } -} -impl LambdaErrorExt for RecvTimeoutError { - fn error_type(&self) -> &str { - "std::sync::mpsc::RecvTimeoutError" - } -} -impl LambdaErrorExt for TryRecvError { - fn error_type(&self) -> &str { - "std::sync::mpsc::TryRecvError" - } -} -impl LambdaErrorExt for LayoutErr { - fn error_type(&self) -> &str { - "std::alloc::LayoutErr" - } -} -impl LambdaErrorExt for BorrowError { - fn error_type(&self) -> &str { - "std::cell::BorrowError" - } -} -impl LambdaErrorExt for BorrowMutError { - fn error_type(&self) -> &str { - "std::cell::BorrowMutError" - } -} -impl LambdaErrorExt for DecodeUtf16Error { - fn error_type(&self) -> &str { - "std::char::DecodeUtf16Error" - } -} -impl LambdaErrorExt for ParseCharError { - fn error_type(&self) -> &str { - "std::char::ParseCharError" - } -} -impl LambdaErrorExt for JoinPathsError { - fn error_type(&self) -> &str { - "std::env::JoinPathsError" - } -} -impl LambdaErrorExt for FromBytesWithNulError { - fn error_type(&self) -> &str { - "std::ffi::FromBytesWithNulError" - } -} -impl LambdaErrorExt for IntoStringError { - fn error_type(&self) -> &str { - "std::ffi::IntoStringError" - } -} -impl LambdaErrorExt for NulError { - fn error_type(&self) -> &str { - "std::ffi::NulError" - } -} -impl LambdaErrorExt for AddrParseError { - fn error_type(&self) -> &str { - "std::net::AddrParseError" - } -} -impl LambdaErrorExt for ParseFloatError { - fn error_type(&self) -> &str { - "std::num::ParseFloatError" - } -} -impl LambdaErrorExt for ParseIntError { - fn error_type(&self) -> &str { - "std::num::ParseIntError" - } -} -impl LambdaErrorExt for StripPrefixError { - fn error_type(&self) -> &str { - "std::path::StripPrefixError" - } -} -impl LambdaErrorExt for ParseBoolError { - fn error_type(&self) -> &str { - "std::str::ParseBoolError" - } -} -impl LambdaErrorExt for Utf8Error { - fn error_type(&self) -> &str { - "std::str::Utf8Error" - } -} -impl LambdaErrorExt for FromUtf16Error { - fn error_type(&self) -> &str { - "std::string::FromUtf16Error" - } -} -impl LambdaErrorExt for FromUtf8Error { - fn error_type(&self) -> &str { - "std::string::FromUtf8Error" - } -} -impl LambdaErrorExt for RecvError { - fn error_type(&self) -> &str { - "std::sync::mpsc::RecvError" - } -} -impl LambdaErrorExt for SystemTimeError { - fn error_type(&self) -> &str { - "std::time::SystemTimeError" - } -} -impl From for HandlerError { - fn from(e: VarError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: ParseError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: RecvTimeoutError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: TryRecvError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: LayoutErr) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: BorrowError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: BorrowMutError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: DecodeUtf16Error) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: ParseCharError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: JoinPathsError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: FromBytesWithNulError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: IntoStringError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: NulError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: AddrParseError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: ParseFloatError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: ParseIntError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: StripPrefixError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: ParseBoolError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: Utf8Error) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: FromUtf16Error) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: FromUtf8Error) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: RecvError) -> Self { - HandlerError::new(e) - } -} -impl From for HandlerError { - fn from(e: SystemTimeError) -> Self { - HandlerError::new(e) - } -} diff --git a/lambda-runtime-errors/src/lib.rs b/lambda-runtime-errors/src/lib.rs deleted file mode 100644 index 13881331..00000000 --- a/lambda-runtime-errors/src/lib.rs +++ /dev/null @@ -1,199 +0,0 @@ -//! The Lambda runtime errors crate defines the `LambdaErrorExt` trait -//! that can be used by libriaries to return errors compatible with the -//! AWS Lambda Rust runtime. -//! -//! This crate also exports the `lambda_runtime_errors_derive` crate to -//! derive the `LambdaErrorExt` trait. -//! -//! ```rust,no-run -//! use lambda_runtime_errors::*; -//! -//! // the generated error_type() method returns "crate::LambdaError" -//! #[derive(LambdaErrorExt)] -//! struct LambdaError; -//! ``` -mod error_ext_impl; - -pub use crate::error_ext_impl::*; -pub use lambda_runtime_errors_derive::*; - -use failure::{format_err, Compat, Error, Fail}; -use std::fmt; - -/// The `LambdaErrorExt` trait defines the `error_type()` method used -/// by the AWS Lambda runtime client to generate `ErrorResponse` -/// objects. The value returned by the `error_type()` method is used to -/// populate the `errorType` field in the Lambda response. This crate -/// includes an implementation of this trait for most errors in the -/// standard library. By default, error return their type name. -pub trait LambdaErrorExt { - /// The value for this field should be an alphanumeric unique identifier - /// of the error type. For example `MyCustomError`. - /// - /// # Return - /// An alphanumeric identifier for the error - fn error_type(&self) -> &str; -} - -impl LambdaErrorExt for Error { - fn error_type(&self) -> &str { - self.find_root_cause().name().unwrap_or_else(|| "FailureError") - } -} - -// We implement this trait here so that we can use the Compat type -// in the lambda-runtime crate - heaps of fun between failure and std::error -impl LambdaErrorExt for Compat { - fn error_type(&self) -> &str { - "CompatFailureError" - } -} - -/// `Result` type extension for AWS that makes it easy to generate a `HandlerError` -/// object or a `Compat` from the failure crate using an existing result. -/// This trait should be imported from the `lambda_runtime_core` or `lambda_runtime` -/// crates. -pub trait LambdaResultExt { - /// Takes the incoming `Result` and maps it to a Result that returns an `HandlerError` object. - /// The `HandlerError` type already includes implementations of the `From` trait for most - /// standard library errors. This method is intended to be used when a the `From` trait is not - /// implemented. - /// - /// # Example - /// - /// ```rust,no_run - /// use lambda_runtime_core::{Context, LambdaResultExt, HandlerError, lambda}; - /// use std::error::Error as StdError; - /// - /// fn main() -> Result<(), Box> { - /// lambda!(my_handler); - /// Ok(()) - /// } - /// - /// fn my_handler(_event: Vec, _ctx: Context) -> Result, HandlerError> { - /// let age = "hello"; // this will throw an error when we try to parse it into an int - /// age.parse::().handler_error()?; - /// - /// Ok(vec!()) - /// } - /// ``` - fn handler_error(self) -> Result; - - /// Takes the incoming result and converts it into an `Error` type from the `failure` crate - /// wrapped in a `Compat` object to make it implement the `Error` trait from the standard - /// library. This method makes it easy to write handler functions that return `Compat` - /// directly. - /// - /// # Example - /// - /// ```rust,no_run - /// use lambda_runtime_core::{Context, LambdaResultExt, lambda}; - /// use failure::{Error, Compat}; - /// use std::error::Error as StdError; - /// - /// fn main() -> Result<(), Box> { - /// lambda!(my_handler); - /// Ok(()) - /// } - /// - /// fn my_handler(_event: Vec, _ctx: Context) -> Result, Compat> { - /// let age = "hello"; // this will throw an error when we try to parse it into an int - /// age.parse::().failure_compat()?; - /// Ok(vec!()) - /// } - /// ``` - fn failure_compat(self) -> Result>; -} - -impl LambdaResultExt for Result -where - ERR: Fail + LambdaErrorExt, -{ - fn handler_error(self) -> Result { - self.map_err(HandlerError::new) - } - - fn failure_compat(self) -> Result> { - self.map_err(|err| Error::from(err).compat()) - } -} - -/// The `HandlerError` struct can be use to abstract any `Err` of the handler method `Result`. -/// The `HandlerError` object can be generated `From` any object that supports `Display`, -/// `Send, `Sync`, and `Debug`. This allows handler functions to return any error using -/// the `?` syntax. For example `let _age_num: u8 = e.age.parse()?;` will return the -/// `::Err` from the handler function. -//pub type HandlerError = failure::Error; -#[derive(Debug)] -pub struct HandlerError { - err_type: String, - inner: failure::Error, -} -impl HandlerError { - pub fn new(e: T) -> Self { - let err_type = e.error_type().to_owned(); - HandlerError { - err_type, - inner: failure::Error::from(e), - } - } -} -impl std::error::Error for HandlerError {} -impl fmt::Display for HandlerError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{}: {}", self.err_type, self.inner.find_root_cause()) - } -} -impl LambdaErrorExt for HandlerError { - fn error_type(&self) -> &str { - &self.err_type - } -} -impl From<&str> for HandlerError { - fn from(s: &str) -> Self { - HandlerError { - err_type: "UnknownError".to_owned(), - inner: format_err!("{}", s), - } - } -} -impl From for HandlerError { - fn from(e: failure::Error) -> Self { - let error_type = e.error_type(); - HandlerError { - err_type: error_type.to_owned(), - inner: e, - } - } -} -impl From for HandlerError { - fn from(e: serde_json::error::Error) -> Self { - HandlerError { - err_type: "JsonError".to_owned(), - inner: failure::Error::from(e), - } - } -} - -#[cfg(test)] -pub(crate) mod tests { - use super::*; - use failure::Fail; - - #[derive(Fail, Debug)] - #[fail(display = "Custom Error")] - struct CustomError; - - #[test] - fn std_error_type() { - let parsed_int = "hello".parse::(); - let err = HandlerError::from(parsed_int.err().unwrap()); - assert_eq!(err.error_type(), "std::num::ParseIntError"); - } - - #[test] - fn error_type_from_failure() { - let err = HandlerError::from(failure::Error::from(CustomError {})); - assert_eq!(err.error_type(), "lambda_runtime_errors::tests::CustomError"); - } -} diff --git a/lambda-runtime/Cargo.toml b/lambda-runtime/Cargo.toml deleted file mode 100644 index 1120c8f3..00000000 --- a/lambda-runtime/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "lambda_runtime" -version = "0.2.1" -authors = ["Stefano Buliani", "David Barsky"] -edition = "2018" -description = "Rust runtime for AWS Lambda" -keywords = ["AWS", "Lambda", "Runtime", "Rust"] -license = "Apache-2.0" -homepage = "https://github.com/awslabs/aws-lambda-rust-runtime" -repository = "https://github.com/awslabs/aws-lambda-rust-runtime" -documentation = "https://docs.rs/lambda_runtime" -readme = "../README.md" - -[badges] -travis-ci = { repository = "awslabs/aws-lambda-rust-runtime" } -maintenance = { status = "actively-developed" } - -[dependencies] -serde = "^1" -serde_json = "^1" -serde_derive = "^1" -tokio = "0.1" -log = "^0.4" -lambda_runtime_core = { path = "../lambda-runtime-core", version = "^0.1" } -failure = "^0.1" - -[dev-dependencies] -simple_logger = "^1" -simple-error = "^0.1" diff --git a/lambda-runtime/examples/basic.rs b/lambda-runtime/examples/basic.rs deleted file mode 100644 index 1a64f628..00000000 --- a/lambda-runtime/examples/basic.rs +++ /dev/null @@ -1,36 +0,0 @@ -use std::error::Error; - -use lambda_runtime::{error::HandlerError, lambda, Context}; -use log::{self, error}; -use serde_derive::{Deserialize, Serialize}; -use simple_error::bail; -use simple_logger; - -#[derive(Deserialize)] -struct CustomEvent { - #[serde(rename = "firstName")] - first_name: String, -} - -#[derive(Serialize)] -struct CustomOutput { - message: String, -} - -fn main() -> Result<(), Box> { - simple_logger::init_with_level(log::Level::Debug)?; - lambda!(my_handler); - - Ok(()) -} - -fn my_handler(e: CustomEvent, c: Context) -> Result { - if e.first_name == "" { - error!("Empty first name in request {}", c.aws_request_id); - bail!("Empty first name"); - } - - Ok(CustomOutput { - message: format!("Hello, {}!", e.first_name), - }) -} diff --git a/lambda-runtime/examples/custom_error.rs b/lambda-runtime/examples/custom_error.rs deleted file mode 100644 index 35f0c0dd..00000000 --- a/lambda-runtime/examples/custom_error.rs +++ /dev/null @@ -1,70 +0,0 @@ -use lambda_runtime::{error::LambdaErrorExt, lambda, Context}; -use log::error; -use serde_derive::{Deserialize, Serialize}; -use std::{error::Error, fmt}; - -#[derive(Debug)] -struct CustomError { - msg: String, -} -impl CustomError { - fn new(message: &str) -> CustomError { - CustomError { - msg: message.to_owned(), - } - } -} -impl fmt::Display for CustomError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{}", self.msg) - } -} -impl Error for CustomError {} -impl From for CustomError { - fn from(i: std::num::ParseIntError) -> Self { - CustomError::new(&format!("{}", i)) - } -} -// the value return by the error_type function is included as the -// `errorType` in the AWS Lambda response -impl LambdaErrorExt for CustomError { - fn error_type(&self) -> &str { - "CustomError" - } -} - -#[derive(Deserialize)] -struct CustomEvent { - #[serde(rename = "firstName")] - first_name: String, - age: String, -} - -#[derive(Serialize)] -struct CustomOutput { - message: String, -} - -fn main() -> Result<(), Box> { - simple_logger::init_with_level(log::Level::Debug)?; - lambda!(my_handler); - - Ok(()) -} - -fn my_handler(e: CustomEvent, c: Context) -> Result { - if e.first_name == "" { - error!("Empty first name in request {}", c.aws_request_id); - // in this case, we explicitly initialize and box our custom error type. - // the HandlerError type is an alias to Box/ - return Err(CustomError::new("Empty first name")); - } - - // For errors simply want to return, because the HandlerError is an alias to any - // generic error type, we can propapgate with the standard "?" syntax. - let _age_num: u8 = e.age.parse()?; - - Ok(CustomOutput { - message: format!("Hello, {}!", e.first_name), - }) -} diff --git a/lambda-runtime/examples/custom_error_failure.rs b/lambda-runtime/examples/custom_error_failure.rs deleted file mode 100644 index 8e8c33e8..00000000 --- a/lambda-runtime/examples/custom_error_failure.rs +++ /dev/null @@ -1,51 +0,0 @@ -use failure::Fail; -use lambda_runtime::{error::LambdaErrorExt, lambda, Context}; -use log::error; -use serde_derive::{Deserialize, Serialize}; -use std::error::Error as StdError; - -#[derive(Fail, Debug)] -#[fail(display = "Custom Error")] -struct CustomError; -impl LambdaErrorExt for CustomError { - fn error_type(&self) -> &str { - "CustomError" - } -} -impl From for CustomError { - fn from(_i: std::num::ParseIntError) -> Self { - CustomError {} - } -} - -#[derive(Deserialize)] -struct CustomEvent { - #[serde(rename = "firstName")] - first_name: String, - age: String, -} - -#[derive(Serialize)] -struct CustomOutput { - message: String, -} - -fn main() -> Result<(), Box> { - simple_logger::init_with_level(log::Level::Debug)?; - lambda!(my_handler); - - Ok(()) -} - -fn my_handler(e: CustomEvent, c: Context) -> Result { - if e.first_name == "" { - error!("Empty first name in request {}", c.aws_request_id); - return Err(CustomError {}); - } - - let _age_num: u8 = e.age.parse()?; - - Ok(CustomOutput { - message: format!("Hello, {}!", e.first_name), - }) -} diff --git a/lambda-runtime/examples/failure_error.rs b/lambda-runtime/examples/failure_error.rs deleted file mode 100644 index b426ecb2..00000000 --- a/lambda-runtime/examples/failure_error.rs +++ /dev/null @@ -1,38 +0,0 @@ -use failure::{format_err, Compat, Error}; -use lambda_runtime::{error::LambdaResultExt, lambda, Context}; -use log::error; -use serde_derive::{Deserialize, Serialize}; -use std::error::Error as StdError; - -#[derive(Deserialize)] -struct CustomEvent { - #[serde(rename = "firstName")] - first_name: String, - age: String, -} - -#[derive(Serialize)] -struct CustomOutput { - message: String, -} - -fn main() -> Result<(), Box> { - simple_logger::init_with_level(log::Level::Debug)?; - lambda!(my_handler); - - Ok(()) -} - -fn my_handler(e: CustomEvent, c: Context) -> Result> { - if e.first_name == "" { - error!("Empty first name in request {}", c.aws_request_id); - let err = format_err!("Invalid First Name"); - return Err(err.compat()); - } - - let _age_num: u8 = e.age.parse().failure_compat()?; - - Ok(CustomOutput { - message: format!("Hello, {}!", e.first_name), - }) -} diff --git a/lambda-runtime/examples/with_custom_runtime.rs b/lambda-runtime/examples/with_custom_runtime.rs deleted file mode 100644 index d0e6a0b7..00000000 --- a/lambda-runtime/examples/with_custom_runtime.rs +++ /dev/null @@ -1,38 +0,0 @@ -use lambda_runtime::{error::HandlerError, lambda, Context}; -use log::{self, error}; -use serde_derive::{Deserialize, Serialize}; -use simple_error::bail; -use simple_logger; -use std::error::Error; -use tokio::runtime::Runtime; - -#[derive(Deserialize, Clone)] -struct CustomEvent { - #[serde(rename = "firstName")] - first_name: String, -} - -#[derive(Serialize, Clone)] -struct CustomOutput { - message: String, -} - -fn main() -> Result<(), Box> { - let rt = Runtime::new()?; - - simple_logger::init_with_level(log::Level::Debug)?; - lambda!(my_handler, rt); - - Ok(()) -} - -fn my_handler(e: CustomEvent, c: Context) -> Result { - if e.first_name == "" { - error!("Empty first name in request {}", c.aws_request_id); - bail!("Empty first name"); - } - - Ok(CustomOutput { - message: format!("Hello, {}!", e.first_name), - }) -} diff --git a/lambda-runtime/src/lib.rs b/lambda-runtime/src/lib.rs deleted file mode 100644 index 2ef78f4e..00000000 --- a/lambda-runtime/src/lib.rs +++ /dev/null @@ -1,219 +0,0 @@ -#![warn(missing_docs)] -#![deny(warnings)] -//! Lambda runtime makes it easy to run Rust code inside AWS Lambda. To create -//! Lambda function with this library simply include it as a dependency, make -//! sure that you declare a function that respects the `Handler` type, and call -//! the `start()` function from your main method. The executable in your deployment -//! package must be called `bootstrap`. -//! -//! ```rust,no_run -//! use lambda_runtime::{error::HandlerError, lambda, Context}; -//! use simple_error::bail; -//! use serde_derive::{Serialize, Deserialize}; -//! -//! #[derive(Deserialize, Clone)] -//! struct CustomEvent { -//! first_name: String, -//! last_name: String, -//! } -//! -//! #[derive(Serialize, Clone)] -//! struct CustomOutput { -//! message: String, -//! } -//! -//! fn main() { -//! lambda!(my_handler); -//! } -//! -//! fn my_handler(e: CustomEvent, ctx: Context) -> Result { -//! if e.first_name == "" { -//! bail!("Empty first name"); -//! } -//! Ok(CustomOutput{ -//! message: format!("Hello, {}!", e.first_name), -//! }) -//! } -//! ``` -use failure::Fail; -use lambda_runtime_core::{start_with_config, EnvConfigProvider, HandlerError, LambdaErrorExt}; -use serde; -use serde_json; -use std::fmt::Display; -use tokio::runtime::Runtime as TokioRuntime; - -pub use lambda_runtime_core::Context; - -/// The error module exposes the HandlerError type. -pub mod error { - pub use lambda_runtime_core::{HandlerError, LambdaErrorExt, LambdaResultExt}; -} - -/// Functions acting as a handler must conform to this type. -pub trait Handler { - /// Method to execute the handler function - fn run(&mut self, event: Event, ctx: Context) -> Result; -} - -/// Implementation of the `Handler` trait for both function pointers -/// and closures. -impl Handler for Function -where - Function: FnMut(Event, Context) -> Result, - EventError: Fail + LambdaErrorExt + Display + Send + Sync, -{ - fn run(&mut self, event: Event, ctx: Context) -> Result { - (*self)(event, ctx) - } -} - -/// Wraps a typed handler into a closure that complies with the `Handler` trait -/// defined in the `lambda_runtime_core` crate. The closure simply uses `serde_json` -/// to serialize and deserialize the incoming event from a `Vec` and the output -/// to a `Vec`. -fn wrap( - mut h: impl Handler, -) -> impl FnMut(Vec, Context) -> Result, HandlerError> -where - Event: serde::de::DeserializeOwned, - Output: serde::Serialize, - EventError: Fail + LambdaErrorExt + Display + Send + Sync, -{ - move |ev, ctx| { - let event: Event = serde_json::from_slice(&ev)?; - match h.run(event, ctx) { - Ok(out) => { - let out_bytes = serde_json::to_vec(&out)?; - Ok(out_bytes) - } - Err(e) => Err(HandlerError::new(e)), - } - } -} - -/// Creates a new runtime and begins polling for events using Lambda's Runtime APIs. -/// -/// # Arguments -/// -/// * `f` A function pointer that conforms to the `Handler` type. -/// -/// # Panics -/// The function panics if the Lambda environment variables are not set. -pub fn start(f: impl Handler, runtime: Option) -where - Event: serde::de::DeserializeOwned, - Output: serde::Serialize, - EventError: Fail + LambdaErrorExt + Display + Send + Sync, -{ - let wrapped = wrap(f); - start_with_config(wrapped, &EnvConfigProvider::default(), runtime) -} - -/// Initializes the Lambda runtime with the given handler. Optionally this macro can -/// also receive a customized instance of Tokio runtime to drive internal lambda operations -/// to completion -#[macro_export] -macro_rules! lambda { - ($handler:ident) => { - $crate::start($handler, None) - }; - ($handler:ident, $runtime:expr) => { - $crate::start($handler, Some($runtime)) - }; - ($handler:expr) => { - $crate::start($handler, None) - }; - ($handler:expr, $runtime:expr) => { - $crate::start($handler, Some($runtime)) - }; -} - -#[cfg(test)] -pub(crate) mod tests { - use super::*; - use lambda_runtime_core::Context; - use serde_derive::{Deserialize, Serialize}; - use serde_json; - - fn test_context() -> Context { - Context { - memory_limit_in_mb: 128, - function_name: "test_func".to_string(), - function_version: "$LATEST".to_string(), - invoked_function_arn: "arn:aws:lambda".to_string(), - aws_request_id: "123".to_string(), - xray_trace_id: Some("123".to_string()), - log_stream_name: "logStream".to_string(), - log_group_name: "logGroup".to_string(), - client_context: Option::default(), - identity: Option::default(), - deadline: 0, - } - } - - #[derive(Serialize, Deserialize)] - struct Input { - name: String, - } - - #[derive(Serialize, Deserialize)] - struct Output { - msg: String, - } - - #[test] - fn runtime_invokes_handler() { - let handler_ok = |_e: Input, _c: Context| -> Result { - Ok(Output { - msg: "hello".to_owned(), - }) - }; - let mut wrapped_ok = wrap(handler_ok); - let input = Input { - name: "test".to_owned(), - }; - let output = wrapped_ok.run( - serde_json::to_vec(&input).expect("Could not convert input to Vec"), - test_context(), - ); - assert_eq!( - output.is_err(), - false, - "Handler threw an unexpected error: {}", - output.err().unwrap() - ); - let output_obj: Output = serde_json::from_slice(&output.ok().unwrap()).expect("Could not serialize output"); - assert_eq!( - output_obj.msg, - "hello".to_owned(), - "Unexpected output message: {}", - output_obj.msg - ); - } - - #[test] - fn runtime_captures_error() { - let handler_ok = |e: Input, _c: Context| -> Result { - let _age = e.name.parse::()?; - Ok(Output { - msg: "hello".to_owned(), - }) - }; - let mut wrapped_ok = wrap(handler_ok); - let input = Input { - name: "test".to_owned(), - }; - let output = wrapped_ok.run( - serde_json::to_vec(&input).expect("Could not convert input to Vec"), - test_context(), - ); - assert_eq!(output.is_err(), true, "Handler did not throw an error"); - let err = output.err().unwrap(); - assert_eq!( - err.error_type(), - "std::num::ParseIntError", - "Unexpected error_type: {}", - err.error_type() - ); - } -} From 5e66648d12538a8966c59e84867b2bb59489cb97 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Fri, 28 Jun 2019 17:34:01 -0400 Subject: [PATCH 02/34] use custom proptest attribute; Err -> Error --- Cargo.lock | 1002 +++++++++---- Cargo.toml | 5 + lambda-attributes/Cargo.lock | 948 ++++++++++++ lambda-attributes/Cargo.toml | 18 + lambda-attributes/src/lib.rs | 144 ++ lambda/Cargo.lock | 1275 +++++++++++++++++ lambda/Cargo.toml | 23 + lambda/examples/hello-with-ctx.rs | 10 + lambda/examples/hello-without-macro.rs | 14 + lambda/examples/hello.rs | 9 + lambda/src/client.rs | 167 +++ lambda/src/error_hook.rs | 97 ++ lambda/src/lib.rs | 240 ++++ lambda/src/types.rs | 353 +++++ lambda/tests/compile-fail/no-args.rs | 4 + lambda/tests/compile-fail/no-args.stderr | 11 + lambda/tests/compile-fail/non-async-main.rs | 2 + .../tests/compile-fail/non-async-main.stderr | 11 + lambda/tests/tests.rs | 10 + lambda/tests/ui/arg-plus-ctx.rs | 10 + lambda/tests/ui/arg.rs | 9 + 21 files changed, 4079 insertions(+), 283 deletions(-) create mode 100644 Cargo.toml create mode 100644 lambda-attributes/Cargo.lock create mode 100644 lambda-attributes/Cargo.toml create mode 100644 lambda-attributes/src/lib.rs create mode 100644 lambda/Cargo.lock create mode 100644 lambda/Cargo.toml create mode 100644 lambda/examples/hello-with-ctx.rs create mode 100644 lambda/examples/hello-without-macro.rs create mode 100644 lambda/examples/hello.rs create mode 100644 lambda/src/client.rs create mode 100644 lambda/src/error_hook.rs create mode 100644 lambda/src/lib.rs create mode 100644 lambda/src/types.rs create mode 100644 lambda/tests/compile-fail/no-args.rs create mode 100644 lambda/tests/compile-fail/no-args.stderr create mode 100644 lambda/tests/compile-fail/non-async-main.rs create mode 100644 lambda/tests/compile-fail/non-async-main.stderr create mode 100644 lambda/tests/tests.rs create mode 100644 lambda/tests/ui/arg-plus-ctx.rs create mode 100644 lambda/tests/ui/arg.rs diff --git a/Cargo.lock b/Cargo.lock index ae5bbaf7..b63a830c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,13 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +[[package]] +name = "aho-corasick" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "arrayvec" version = "0.4.10" @@ -8,6 +16,31 @@ dependencies = [ "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "async-datagram" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "async-datagram" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "async-ready" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "atty" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "autocfg" version = "0.1.2" @@ -15,15 +48,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "backtrace" -version = "0.3.13" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -43,11 +74,62 @@ dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "better-panic" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)", + "console 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bit-set" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bit-vec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "bitflags" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "block-padding" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bumpalo" +version = "2.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "byteorder" version = "1.3.1" @@ -55,7 +137,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytes" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -73,13 +155,14 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "chrono" -version = "0.4.6" +name = "clicolors-control" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -90,6 +173,23 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "console" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam" version = "0.6.0" @@ -100,7 +200,7 @@ dependencies = [ "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -131,7 +231,7 @@ dependencies = [ "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -142,33 +242,26 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "dtoa" -version = "0.4.3" +name = "digest" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] -name = "failure" -version = "0.1.5" +name = "encode_unicode" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "failure_derive" -version = "0.1.5" +name = "fake-simd" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "fnv" @@ -199,6 +292,19 @@ name = "futures" version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures-channel-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-core-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "futures-cpupool" version = "0.1.8" @@ -208,16 +314,95 @@ dependencies = [ "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "futures-executor-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-io-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-sink-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-timer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-util-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "generic-array" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "h2" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -225,12 +410,47 @@ dependencies = [ "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "headers" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "headers-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", + "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "headers-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "headers-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "http" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -245,11 +465,11 @@ name = "hyper" version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -266,16 +486,6 @@ dependencies = [ "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "idna" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "indexmap" version = "1.0.2" @@ -296,106 +506,68 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "kernel32-sys" -version = "0.2.2" +name = "js-sys" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lambda_http" -version = "0.1.1" -dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "lambda_runtime 0.2.1", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "simple_logger 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "lambda_runtime" -version = "0.2.1" +name = "juliex" +version = "0.3.0-alpha.7" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lambda_runtime_core 0.1.2", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "simple-error 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "simple_logger 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "lambda_runtime_client" +name = "kernel32-sys" version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)", - "lambda_runtime_errors 0.1.1", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "lambda_runtime_core" -version = "0.1.2" +name = "lambda" +version = "0.1.0" dependencies = [ - "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "better-panic 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)", - "lambda_runtime_client 0.2.2", - "lambda_runtime_errors 0.1.1", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "simple_logger 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lambda_runtime_errors" -version = "0.1.1" -dependencies = [ - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lambda_runtime_core 0.1.2", - "lambda_runtime_errors_derive 0.1.1", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lambda-attributes 0.1.0", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "trybuild 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "lambda_runtime_errors_derive" -version = "0.1.1" +name = "lambda-attributes" +version = "0.1.0" dependencies = [ - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lambda_runtime_errors 0.1.1", - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lazy_static" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -426,19 +598,22 @@ dependencies = [ ] [[package]] -name = "maplit" -version = "1.0.1" +name = "memchr" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "matches" -version = "0.1.8" +name = "memoffset" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "memoffset" -version = "0.2.1" +name = "mime" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "mio" @@ -494,14 +669,6 @@ name = "nodrop" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "num-integer" -version = "0.1.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "num-traits" version = "0.2.6" @@ -515,6 +682,16 @@ dependencies = [ "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "numtoa" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "opaque-debug" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "owning_ref" version = "0.4.0" @@ -545,24 +722,48 @@ dependencies = [ ] [[package]] -name = "percent-encoding" -version = "1.0.1" +name = "pin-utils" +version = "0.1.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro2" -version = "0.4.27" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "proptest" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quick-error" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "quote" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -674,6 +875,107 @@ name = "redox_syscall" version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "redox_termios" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex-syntax" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "remove_dir_all" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "romio" +version = "0.3.0-alpha.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "async-datagram 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "async-ready 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime" +version = "0.3.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-attributes 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-native 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-raw 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime-attributes" +version = "0.3.0-alpha.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime-native" +version = "0.3.0-alpha.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "juliex 0.3.0-alpha.7 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "romio 0.3.0-alpha.9 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-raw 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-futures 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime-raw" +version = "0.3.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rustc-demangle" version = "0.1.13" @@ -687,9 +989,20 @@ dependencies = [ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rusty-fork" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.9 (registry+https://github.com/rust-lang/crates.io-index)", + "wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ryu" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -712,52 +1025,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.87" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "serde_derive" version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_urlencoded" -version = "0.5.4" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "simple-error" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "simple_logger" -version = "1.0.1" +name = "sha-1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -785,23 +1087,60 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "syn" -version = "0.15.26" +version = "0.15.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "synstructure" -version = "0.10.1" +name = "tempfile" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "termcolor" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "termion" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "termios" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "thread_local" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -819,32 +1158,16 @@ name = "tokio" version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-codec" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -865,22 +1188,12 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "tokio-fs" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "tokio-io" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -892,7 +1205,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -902,20 +1215,12 @@ dependencies = [ "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "tokio-sync" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "tokio-tcp" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -952,57 +1257,54 @@ dependencies = [ ] [[package]] -name = "tokio-udp" -version = "0.1.3" +name = "toml" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "tokio-uds" -version = "0.2.5" +name = "try-lock" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "trybuild" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "try-lock" -version = "0.2.2" +name = "typenum" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "unicode-bidi" -version = "0.3.4" +name = "ucd-util" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "unicode-normalization" -version = "0.1.8" +name = "unicase" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unicode-width" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-xid" version = "0.1.0" @@ -1017,20 +1319,28 @@ dependencies = [ ] [[package]] -name = "url" -version = "1.7.2" +name = "utf8-ranges" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "void" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "want" version = "0.0.6" @@ -1041,6 +1351,64 @@ dependencies = [ "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "wasm-bindgen" +version = "0.2.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wasm-bindgen-macro 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bumpalo 2.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.47" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "winapi" version = "0.2.8" @@ -1065,11 +1433,28 @@ name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "winapi-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "wincolor" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ws2_32-sys" version = "0.2.1" @@ -1080,63 +1465,93 @@ dependencies = [ ] [metadata] +"checksum aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f484ae0c99fec2e858eb6134949117399f222608d84cadb3f58c1f97c2364c" "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" +"checksum async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43d8594c35b0f8c540f322ac40fcf32536fa9fe41872ccf60b445a06a87fd1ae" +"checksum async-datagram 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ec4e1e7c4c16c964d7040b676d2eeb0ce4f94bed2e57e28f28a88768c8f934c" +"checksum async-ready 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9470c79dd71fcd6090676d2ef90f45e9d357831234e8a1f70a1991093019bc27" +"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" "checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" -"checksum backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5" +"checksum backtrace 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)" = "18b50f5258d1a9ad8396d2d345827875de4261b158124d4c819d9b351454fae5" "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +"checksum better-panic 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "734e15aeecdaead081b4b07364648ba6eb6ef94eedc6578a47b8a99879cc4597" +"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" +"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +"checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09" +"checksum bumpalo 2.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "84dca3afd8e01b9526818b7963e5b4916063b3cdf9f10cf6b73ef0bd0ec37aa5" +"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" "checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" -"checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa" +"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" "checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e" "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" -"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" +"checksum clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "73abfd4c73d003a674ce5d2933fca6ce6c42480ea84a5ffe0a2dc39ed56300f9" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +"checksum console 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8ca57c2c14b8a2bf3105bc9d15574aad80babf6a9c44b1058034cdf8bd169628" "checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" "checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" "checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" "checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" -"checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" -"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" -"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" +"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +"checksum encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90b2c9496c001e8cb61827acdefad780795c42264c137744cae6f7d9e3450abd" +"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" +"checksum futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4cd523712fc272e9b714669165a2832debee5a5b7e409bfccdc7c0d5cd0cf07a" +"checksum futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "719770f328642b657b849856bb5a607db9538dd5bb3000122e5ead55d0a58c36" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" +"checksum futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "315dc58c908535d059576a329b86cd185933433382cfcd394fb2fa353330de03" +"checksum futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "cca0bf7a1f39c9d32b797b0def93d5932aa71796236aad6b549bac6f7df159a3" +"checksum futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfeac5f016a4b5835bb93eb7961f50a64f0e001207562703d9ddf4109d7b263" +"checksum futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "49dcfdacd6b5974ca0b9b78bc38ffd1071da0206179735c3df82e279f5b784e4" +"checksum futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eb4a32e84935678650944c6ebd0d912db46405d37bf94f1a058435c5080abcb1" +"checksum futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "f7a0451b9c5047c2b9ab93425ffd0793165511e93c04b977cd45fbd41c6e34b2" +"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" "checksum h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ddb2b25a33e231484694267af28fec74ac63b5ccf51ee2065a5e313b834d836e" -"checksum http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "1a10e5b573b9a0146545010f50772b9e8b1dd0a256564cc4307694c68832a2f5" +"checksum headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6e2e51d356081258ef05ff4c648138b5d3fe64b7300aaad3b820554a2b7fb6" +"checksum headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "967131279aaa9f7c20c7205b45a391638a83ab118e6509b2d0ccbe08de044237" +"checksum headers-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97c462e8066bca4f0968ddf8d12de64c40f2c2187b3b9a2fa994d06e8ad444a9" +"checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)" = "fdfa9b401ef6c4229745bb6e9b2529192d07b920eed624cdee2a82348cd550af" -"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" "checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" +"checksum js-sys 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "eac16f41aa9b9388230b1d6617d7ed897a1af5416b8fe1c8734dcef79c7aae10" +"checksum juliex 0.3.0-alpha.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1c917bb13450f9999a24980cc13ac76e45d9af0f69e0228b503f68a3e1db4466" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" +"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" "checksum libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "e962c7641008ac010fa60a7dfdc1712449f29c44ef2d4702394aea943ee75047" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" -"checksum maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08cbb6b4fef96b6d77bfc40ec491b1690c779e77b05cd9f07f787ed376fd4c43" -"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" "checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" "checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" +"checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" +"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" -"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" +"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" +"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +"checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" +"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" +"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" @@ -1149,49 +1564,70 @@ dependencies = [ "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" +"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" +"checksum regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0b2f0808e7d7e4fb1cb07feb6ff2f4bc827938f24f8c2e6a3beb7370af544bdd" +"checksum regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d76410686f9e3a17f06128962e0ecc5755870bb890c34820c7af7f1db2e1d48" +"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" +"checksum romio 0.3.0-alpha.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5793a53bf62de2d49fc38552afa2f1422feb8cfd5bb9fdd9b1536f0c03dbeac1" +"checksum runtime 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b3d96c8eb594e86b955056fbbfa337c02382e45f7ec80f78259ac133d3088508" +"checksum runtime-attributes 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ecbf89dcd4241edd7e82abc386201e20bd2a7b5057aeabaffe357430da5bcb51" +"checksum runtime-native 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "cd600395f69c5a7b80089020c66bea5947e62e0cb288ba9ac10b9a72ff3a6cf4" +"checksum runtime-raw 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7551354d1bc6a66c1d671000ea14dd360d23367ff803bd37bf91938c9a91fa0f" "checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" +"checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae" +"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "2e20fde37801e83c891a2dc4ebd3b81f0da4d1fb67a9e0a2a3b921e2536a58ee" +"checksum serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "076a696fdea89c19d3baed462576b8f6d663064414b5c793642da8dfeb99475b" "checksum serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "633e97856567e518b59ffb2ad7c7a4fd4c5d91d9c7f32dd38a27b2bf7e8114ea" -"checksum serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "27dce848e7467aa0e2fcaf0a413641499c0b745452aaca1194d24dedde9e13c9" -"checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" -"checksum simple-error 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "c00e871264295428089fb278c4b225be3ca92c227c918857f2e562bac973257b" -"checksum simple_logger 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "25111f1d77db1ac3ee11b62ba4b7a162e6bb3be43e28273f0d3935cc8d3ff7fb" +"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" +"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "88aea073965ab29f6edb5493faf96ad662fb18aa9eeb186a3b7057951605ed15" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b639411d0b9c738748b5397d5ceba08e648f4f1992231aa859af1a017f31f60b" -"checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" -"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" +"checksum syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d960b829a55e56db167e861ddb43602c003c7be0bee1d345021703fac2fb7c" +"checksum tempfile 3.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "99372620708c1ccc26166a6491c4d836e5dd00cd65335505e02410ff6c6f6282" +"checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" +"checksum termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a8fb22f7cde82c8220e5aeacb3258ed7ce996142c77cba193f203515e26c330" +"checksum termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625" +"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" "checksum tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e0500b88064f08bebddd0c0bed39e19f5c567a5f30975bee52b0c0d3e2eeb38c" -"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" "checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6" "checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" -"checksum tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0e9cbbc8a3698b7ab652340f46633364f9eaa928ddaaee79d8b8f356dd79a09d" "checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f" "checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f" -"checksum tokio-sync 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3742b64166c1ee9121f1921aea5a726098458926a6b732d906ef23b1f3ef6f4f" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" "checksum tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c3fd86cb15547d02daa2b21aadaf4e37dee3368df38a526178a5afa3c034d2fb" "checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" -"checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" -"checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" +"checksum toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8c96d7873fa7ef8bdeb3a9cda3ac48389b4154f32b9803b4bc26220b677b039" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" -"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" +"checksum trybuild 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b7592bfd3449da952920cb55618d55f34779293127f76d946c4a54f258ca87b8" +"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" +"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" +"checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" +"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +"checksum utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9d50aa7650df78abf942826607c62468ce18d9019673d4a2ebe1865dbb96ffde" +"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +"checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" +"checksum wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "22029998cc650473cb05f10f19c06a1536b9e1f1572e4f5dacd45ab4d3f85877" +"checksum wasm-bindgen-backend 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "6f858ff3cb4196c702e8c24b75fba1d3ab46958de4f7c253627f0507aae1507c" +"checksum wasm-bindgen-futures 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "cc16facd42fc3d0fa0cae78b39516bac04496cf80518fd09bbfa33e9b0e9c92d" +"checksum wasm-bindgen-macro 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "15c29f04eb117312931e7b02878453ee63d67a6f291797651890128bf5ee71db" +"checksum wasm-bindgen-macro-support 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "92b1356b623816248dfe0e2c4b7e113618d647808907ff6a3d9838ebee8e82ee" +"checksum wasm-bindgen-shared 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "15de16ddb30cfd424a87598b30021491bae1607d32e52056979865c98b7913b4" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 00000000..da7fefce --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,5 @@ +[workspace] +members = [ + "lambda", + "lambda-attributes" +] \ No newline at end of file diff --git a/lambda-attributes/Cargo.lock b/lambda-attributes/Cargo.lock new file mode 100644 index 00000000..329df9ac --- /dev/null +++ b/lambda-attributes/Cargo.lock @@ -0,0 +1,948 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "arrayvec" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "async-datagram" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "async-ready" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "autocfg" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bitflags" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bumpalo" +version = "2.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byteorder" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bytes" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cfg-if" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-channel" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-deque" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-channel-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-core-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-executor-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-io-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-select-macro-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-sink-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-util-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-select-macro-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "iovec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "itoa" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "js-sys" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wasm-bindgen 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "juliex" +version = "0.3.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lambda-attributes" +version = "0.1.0" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", + "trybuild 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lazy_static" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.55" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "lock_api" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "memchr" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memoffset" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "mio" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio-uds" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "net2" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "nodrop" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "num_cpus" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "owning_ref" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot_core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pin-utils" +version = "0.1.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro-hack" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-nested" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_jitter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_os" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "romio" +version = "0.3.0-alpha.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "async-ready 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime" +version = "0.3.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-attributes 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-native 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime-attributes" +version = "0.3.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime-native" +version = "0.3.0-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "juliex 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "romio 0.3.0-alpha.8 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-futures 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime-raw" +version = "0.3.0-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ryu" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "scopeguard" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "serde" +version = "1.0.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_derive" +version = "1.0.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_json" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "smallvec" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "stable_deref_trait" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "syn" +version = "0.15.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "termcolor" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "toml" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "trybuild" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "wasm-bindgen" +version = "0.2.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wasm-bindgen-macro 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bumpalo 2.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.45" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "wincolor" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[metadata] +"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" +"checksum async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43d8594c35b0f8c540f322ac40fcf32536fa9fe41872ccf60b445a06a87fd1ae" +"checksum async-ready 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb690f88f674eed5c82591f5bc74e97f0fe29393e39e3c3b18b451c92ab0e753" +"checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" +"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum bumpalo 2.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "84dca3afd8e01b9526818b7963e5b4916063b3cdf9f10cf6b73ef0bd0ec37aa5" +"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" +"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" +"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +"checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" +"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" +"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" +"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" +"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" +"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +"checksum futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "a2037ec1c6c1c4f79557762eab1f7eae1f64f6cb418ace90fae88f0942b60139" +"checksum futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4cd523712fc272e9b714669165a2832debee5a5b7e409bfccdc7c0d5cd0cf07a" +"checksum futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "719770f328642b657b849856bb5a607db9538dd5bb3000122e5ead55d0a58c36" +"checksum futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "315dc58c908535d059576a329b86cd185933433382cfcd394fb2fa353330de03" +"checksum futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "cca0bf7a1f39c9d32b797b0def93d5932aa71796236aad6b549bac6f7df159a3" +"checksum futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfeac5f016a4b5835bb93eb7961f50a64f0e001207562703d9ddf4109d7b263" +"checksum futures-select-macro-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "afee2644abc7c8a6529530bb20e044ace4b7dfc4df1c114614d1b458fc29f0b0" +"checksum futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "49dcfdacd6b5974ca0b9b78bc38ffd1071da0206179735c3df82e279f5b784e4" +"checksum futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "f7a0451b9c5047c2b9ab93425ffd0793165511e93c04b977cd45fbd41c6e34b2" +"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" +"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" +"checksum js-sys 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "9987e7c13a91d9cf0efe59cca48a3a7a70e2b11695d5a4640f85ae71e28f5e73" +"checksum juliex 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7ba5bc8e8d05cc0980ea90e146d2ffc0ad9634281ebb48e4edee411251184663" +"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" +"checksum libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)" = "42914d39aad277d9e176efbdad68acb1d5443ab65afe0e0e4f0d49352a950880" +"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" +"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" +"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum mio 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)" = "9fbe95ae9216d99c944a1afa429fef2a2ed012b65b0840de5047a86a82969502" +"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" +"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" +"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" +"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" +"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" +"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" +"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" +"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" +"checksum proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0c1dd4172a1e1f96f709341418f49b11ea6c2d95d53dca08c0f74cbd332d9cf3" +"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" +"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" +"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" +"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" +"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +"checksum romio 0.3.0-alpha.8 (registry+https://github.com/rust-lang/crates.io-index)" = "e45fc890683557502157efb9479163ad7af2ea4bce850cbd1218926d89c13018" +"checksum runtime 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0a5bc0b95e096ced67025933b8cf3cffc0b6283d5c5591b5e8f2bcbdd2d69186" +"checksum runtime-attributes 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6da2562eb0f314b0494a81fcb4a741357683ba538b9f769167925a3953df2c2b" +"checksum runtime-native 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "acf5520e4f3d366498a968d746c276eee06d9c5fd6c553bd858437e052454976" +"checksum runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "134702e4a37a0b4386c07f97ca309cdefa213b4dfb3eeeee51aa28d3dbfa718d" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "b96a9549dc8d48f2c283938303c4b5a77aa29bfbc5b54b084fb1630408899a8f" +"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "a72e9b96fa45ce22a4bc23da3858dfccfd60acd28a25bcd328a98fdd6bea43fd" +"checksum serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "101b495b109a3e3ca8c4cbe44cf62391527cdfb6ba15821c5ce80bcd5ea23f9f" +"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" +"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" +"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" +"checksum syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)" = "a1393e4a97a19c01e900df2aec855a29f71cf02c402e2f443b8d2747c25c5dbe" +"checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" +"checksum toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8c96d7873fa7ef8bdeb3a9cda3ac48389b4154f32b9803b4bc26220b677b039" +"checksum trybuild 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0b0df728de48978b759da185ed7ef76676ef0c878ae4800c9e90024c998dc75b" +"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum wasm-bindgen 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "b7ccc7b93cfd13e26700a9e2e41e6305f1951b87e166599069f77d10358100e6" +"checksum wasm-bindgen-backend 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "1953f91b1608eb1522513623c7739f047bb0fed4128ce51a93f08e12cc314645" +"checksum wasm-bindgen-futures 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "fa1af11c73eca3dc8c51c76ea475a4416e912da6402064a49fc6c0214701866d" +"checksum wasm-bindgen-macro 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "0f69da5696545d7ca6607a2e4b1a0edf5a6b36b2c49dbb0f1df6ad1d92884047" +"checksum wasm-bindgen-macro-support 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "2d4246f3bc73223bbb846f4f2430a60725826a96c9389adf715ed1d5af46dec6" +"checksum wasm-bindgen-shared 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "c08381e07e7a79e5e229ad7c60d15833d19033542cc5dd91d085df59d235f4a6" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" +"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" +"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" diff --git a/lambda-attributes/Cargo.toml b/lambda-attributes/Cargo.toml new file mode 100644 index 00000000..edec67a1 --- /dev/null +++ b/lambda-attributes/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "lambda-attributes" +version = "0.1.0" +authors = ["David Barsky "] +edition = "2018" + +[lib] +proc-macro = true + +[dependencies] +syn = { version = "0.15.39", features = ["full"] } +proc-macro2 = { version = "0.4.30", features = ["nightly"] } +quote = "0.6.12" +bytes = "0.4.12" +proptest = "0.9.3" + +[dev-dependencies] +runtime = "0.3.0-alpha.5" diff --git a/lambda-attributes/src/lib.rs b/lambda-attributes/src/lib.rs new file mode 100644 index 00000000..1e977bb0 --- /dev/null +++ b/lambda-attributes/src/lib.rs @@ -0,0 +1,144 @@ +extern crate proc_macro; + +use proc_macro::TokenStream; +use quote::{quote, quote_spanned}; +use syn::{spanned::Spanned, Expr, FnArg, ItemFn}; + +#[cfg(not(test))] +#[proc_macro_attribute] +pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { + let input = syn::parse_macro_input!(item as ItemFn); + + let ret = &input.decl.output; + let name = &input.ident; + let body = &input.block; + let attrs = &input.attrs; + let asyncness = &input.asyncness; + let inputs = &input.decl.inputs; + + if name != "main" { + let tokens = quote_spanned! { name.span() => + compile_error!("only the main function can be tagged with #[lambda::main]"); + }; + return TokenStream::from(tokens); + } + + if asyncness.is_none() { + let tokens = quote_spanned! { input.span() => + compile_error!("the async keyword is missing from the function declaration"); + }; + return TokenStream::from(tokens); + } + + let result = match inputs.len() { + 1 => { + let event = match inputs.first().unwrap().into_value() { + FnArg::Captured(arg) => arg, + _ => { + let tokens = quote_spanned! { inputs.span() => + compile_error!("fn main should take a fully formed argument"); + }; + return TokenStream::from(tokens); + } + }; + let arg_name = &event.pat; + let arg_type = &event.ty; + + quote_spanned! { input.span() => + #(#attrs)* + #asyncness fn main() { + async fn actual(#arg_name: #arg_type, ctx: Option) #ret { + #body + } + let f = lambda::handler_fn(actual); + + lambda::run(f).await.unwrap(); + } + } + } + 2 => { + let event = match inputs.first().unwrap().into_value() { + FnArg::Captured(arg) => arg, + _ => { + let tokens = quote_spanned! { inputs.span() => + compile_error!("fn main should take a fully formed argument"); + }; + return TokenStream::from(tokens); + } + }; + let ctx = match &inputs[1] { + FnArg::Captured(arg) => arg, + _ => { + let tokens = quote_spanned! { inputs.span() => + compile_error!("fn main should take a fully formed argument"); + }; + return TokenStream::from(tokens); + } + }; + let arg_name = &event.pat; + let arg_type = &event.ty; + let ctx_name = &ctx.pat; + let ctx_type = &ctx.ty; + quote_spanned! { input.span() => + #(#attrs)* + #asyncness fn main() { + async fn actual(#arg_name: #arg_type, #ctx_name: Option<#ctx_type>) #ret { + let #ctx_name = #ctx_name.unwrap(); + #body + } + let f = lambda::handler_fn(actual); + + lambda::run(f).await.unwrap(); + } + } + } + _ => { + let tokens = quote_spanned! { inputs.span() => + compile_error!("The #[lambda] macro can accept one or two arguments."); + }; + return TokenStream::from(tokens); + } + }; + + result.into() +} + +#[proc_macro_attribute] +pub fn proptest(attr: TokenStream, item: TokenStream) -> TokenStream { + let input = syn::parse_macro_input!(item as ItemFn); + let call = syn::parse_macro_input!(attr as Expr); + + let ret = &input.decl.output; + let name = &input.ident; + let body = &input.block; + let attrs = &input.attrs; + let inputs = &input.decl.inputs; + + match inputs.len() { + 1 => { + let arg = match inputs.first().unwrap().into_value() { + FnArg::Captured(arg) => arg, + _ => { + let tokens = quote_spanned! { inputs.span() => + compile_error!("fn main should take a fully formed argument"); + }; + return TokenStream::from(tokens); + } + }; + let arg_name = &arg.pat; + quote! { + #[test] + #(#attrs)* + fn #name() #ret { + proptest::proptest!(|(#arg_name in #call)| { + #body + }) + } + } + } + _ => { + unimplemented!(); + } + } + .into() +} diff --git a/lambda/Cargo.lock b/lambda/Cargo.lock new file mode 100644 index 00000000..3013b93e --- /dev/null +++ b/lambda/Cargo.lock @@ -0,0 +1,1275 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "arrayvec" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "async-datagram" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "async-ready" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "autocfg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "backtrace" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "backtrace-sys" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bit-set" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bit-vec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bitflags" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "block-padding" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bumpalo" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byteorder" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bytes" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cc" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cfg-if" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-channel" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-deque" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "digest" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "envy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "failure" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "failure_derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fnv" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-channel-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-core-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-executor-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-io-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-select-macro-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-sink-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-util-preview" +version = "0.3.0-alpha.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-select-macro-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "generic-array" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "headers" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "headers-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "headers-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", + "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "headers-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "headers-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "http" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "iovec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "itoa" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "js-sys" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wasm-bindgen 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "juliex" +version = "0.3.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lambda-attributes" +version = "0.1.0" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lambda-proto" +version = "0.1.0" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "envy 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "lambda-attributes 0.1.0", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lazy_static" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "lock_api" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "memchr" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memoffset" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "mime" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio" +version = "0.6.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio-uds" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "net2" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "nodrop" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "num-traits" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num_cpus" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "opaque-debug" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "owning_ref" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot_core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pin-utils" +version = "0.1.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro-hack" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-nested" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proptest" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quick-error" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "quote" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_jitter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_os" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_syscall" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "regex-syntax" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "remove_dir_all" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "romio" +version = "0.3.0-alpha.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "async-ready 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime" +version = "0.3.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-attributes 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-native 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime-attributes" +version = "0.3.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime-native" +version = "0.3.0-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "juliex 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "romio 0.3.0-alpha.8 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-futures 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "runtime-raw" +version = "0.3.0-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rusty-fork" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ryu" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "scopeguard" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "serde" +version = "1.0.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_derive" +version = "1.0.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_json" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sha-1" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "smallvec" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "stable_deref_trait" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "syn" +version = "0.15.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "synstructure" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tempfile" +version = "3.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "time" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "typenum" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ucd-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicase" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wasm-bindgen-macro 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bumpalo 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.44" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[metadata] +"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" +"checksum async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43d8594c35b0f8c540f322ac40fcf32536fa9fe41872ccf60b445a06a87fd1ae" +"checksum async-ready 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb690f88f674eed5c82591f5bc74e97f0fe29393e39e3c3b18b451c92ab0e753" +"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" +"checksum backtrace 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)" = "45934a579eff9fd0ff637ac376a4bd134f47f8fc603f0b211d696b54d61e35f1" +"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" +"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" +"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" +"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +"checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09" +"checksum bumpalo 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4639720be048090544634e0402490838995ccdc9d2fe648f528f30d3c33ae71f" +"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" +"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +"checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d" +"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" +"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +"checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" +"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" +"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" +"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" +"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" +"checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c" +"checksum envy 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "261b836bcf13f42a01c70351f56bd7b66db6e6fb58352bd214cb77e9269a34b4" +"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" +"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" +"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" +"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +"checksum futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "a2037ec1c6c1c4f79557762eab1f7eae1f64f6cb418ace90fae88f0942b60139" +"checksum futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4cd523712fc272e9b714669165a2832debee5a5b7e409bfccdc7c0d5cd0cf07a" +"checksum futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "719770f328642b657b849856bb5a607db9538dd5bb3000122e5ead55d0a58c36" +"checksum futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "315dc58c908535d059576a329b86cd185933433382cfcd394fb2fa353330de03" +"checksum futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "cca0bf7a1f39c9d32b797b0def93d5932aa71796236aad6b549bac6f7df159a3" +"checksum futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfeac5f016a4b5835bb93eb7961f50a64f0e001207562703d9ddf4109d7b263" +"checksum futures-select-macro-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "afee2644abc7c8a6529530bb20e044ace4b7dfc4df1c114614d1b458fc29f0b0" +"checksum futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "49dcfdacd6b5974ca0b9b78bc38ffd1071da0206179735c3df82e279f5b784e4" +"checksum futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "f7a0451b9c5047c2b9ab93425ffd0793165511e93c04b977cd45fbd41c6e34b2" +"checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592" +"checksum headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6e2e51d356081258ef05ff4c648138b5d3fe64b7300aaad3b820554a2b7fb6" +"checksum headers-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51ae5b0b5417559ee1d2733b21d33b0868ae9e406bd32eb1a51d613f66ed472a" +"checksum headers-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97c462e8066bca4f0968ddf8d12de64c40f2c2187b3b9a2fa994d06e8ad444a9" +"checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" +"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" +"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" +"checksum js-sys 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)" = "825bc8ab4bd6a1f5c119f01400a6bcb8176e553c53f5be03ec5c5b874b8a6ca4" +"checksum juliex 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7ba5bc8e8d05cc0980ea90e146d2ffc0ad9634281ebb48e4edee411251184663" +"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" +"checksum libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "c6785aa7dd976f5fbf3b71cfd9cd49d7f783c1ff565a858d71031c6c313aa5c6" +"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" +"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" +"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" +"checksum mio 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)" = "049ba5ca2b63e837adeee724aa9e36b408ed593529dcc802aa96ca14bd329bdf" +"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" +"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" +"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" +"checksum num-traits 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d9c79c952a4a139f44a0fe205c4ee66ce239c0e6ce72cd935f5f7e2f717549dd" +"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" +"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" +"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" +"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" +"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" +"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" +"checksum proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0c1dd4172a1e1f96f709341418f49b11ea6c2d95d53dca08c0f74cbd332d9cf3" +"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" +"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +"checksum proptest 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2afed8cbdc8a64b58a5c021757a782351ec1afee85be374872721c84d5da5d80" +"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" +"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" +"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" +"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" +"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +"checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252" +"checksum regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dcfd8681eebe297b81d98498869d4aae052137651ad7b96822f09ceb690d0a96" +"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" +"checksum romio 0.3.0-alpha.8 (registry+https://github.com/rust-lang/crates.io-index)" = "e45fc890683557502157efb9479163ad7af2ea4bce850cbd1218926d89c13018" +"checksum runtime 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0a5bc0b95e096ced67025933b8cf3cffc0b6283d5c5591b5e8f2bcbdd2d69186" +"checksum runtime-attributes 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6da2562eb0f314b0494a81fcb4a741357683ba538b9f769167925a3953df2c2b" +"checksum runtime-native 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "acf5520e4f3d366498a968d746c276eee06d9c5fd6c553bd858437e052454976" +"checksum runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "134702e4a37a0b4386c07f97ca309cdefa213b4dfb3eeeee51aa28d3dbfa718d" +"checksum rustc-demangle 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "ccc78bfd5acd7bf3e89cffcf899e5cb1a52d6fafa8dec2739ad70c9577a57288" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae" +"checksum ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "b96a9549dc8d48f2c283938303c4b5a77aa29bfbc5b54b084fb1630408899a8f" +"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "a72e9b96fa45ce22a4bc23da3858dfccfd60acd28a25bcd328a98fdd6bea43fd" +"checksum serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "101b495b109a3e3ca8c4cbe44cf62391527cdfb6ba15821c5ce80bcd5ea23f9f" +"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" +"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" +"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" +"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" +"checksum syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)" = "a1393e4a97a19c01e900df2aec855a29f71cf02c402e2f443b8d2747c25c5dbe" +"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" +"checksum tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7dc4738f2e68ed2855de5ac9cdbe05c9216773ecde4739b2f095002ab03a13ef" +"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" +"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" +"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" +"checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" +"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" +"checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +"checksum wasm-bindgen 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "df659e080ba2ee410d3651a84e33cc09f5bd355b0c6f014876502231f2f91659" +"checksum wasm-bindgen-backend 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "b7adec71077d40b84d771e5155aa3ca1985e1f5bcefb36cdae4157e670509ea4" +"checksum wasm-bindgen-futures 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)" = "9b1f125b44e5cfe2d0bdaed2c7db67c5060a0138e51f82409a750eea9c07b8e2" +"checksum wasm-bindgen-macro 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "d2182038ee8ee22c5f5653ab081d4970c054b435b4b513d587beaa7f95c9c277" +"checksum wasm-bindgen-macro-support 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "cc4b5cb4ac8bf9c516016f7f12b0b8fbcaf16c6a983bf438738ba165055c2b7b" +"checksum wasm-bindgen-shared 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "5617f78ef6ffc25f1e34130a9581cdd0d54b90000a9e8ac1e28a1cdc16ca65b3" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" +"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml new file mode 100644 index 00000000..43ebbaa0 --- /dev/null +++ b/lambda/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "lambda" +version = "0.1.0" +authors = ["David Barsky "] +edition = "2018" + +[dependencies] +futures-preview = "0.3.0-alpha.16" +runtime = "0.3.0-alpha.5" +http = "0.1.17" +serde = { version = "1.0.91", features = ["derive"] } +serde_json = "1.0.39" +hyper = "0.12" +proptest = "0.9.3" +headers = "0.2.1" +lazy_static = "1.3.0" +bytes = "0.4.12" +lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } +pin-utils = "0.1.0-alpha.4" + +[dev-dependencies] +trybuild = "1" +better-panic = "0.1.1" diff --git a/lambda/examples/hello-with-ctx.rs b/lambda/examples/hello-with-ctx.rs new file mode 100644 index 00000000..cf57fa1a --- /dev/null +++ b/lambda/examples/hello-with-ctx.rs @@ -0,0 +1,10 @@ +#![feature(async_await)] + +use lambda::{lambda, LambdaCtx, Error}; + +#[lambda] +#[runtime::main] +async fn main(event: String, ctx: LambdaCtx) -> Result { + let _ = ctx; + Ok(event) +} diff --git a/lambda/examples/hello-without-macro.rs b/lambda/examples/hello-without-macro.rs new file mode 100644 index 00000000..2f6dbca5 --- /dev/null +++ b/lambda/examples/hello-without-macro.rs @@ -0,0 +1,14 @@ +#![feature(async_await)] + +use lambda::{handler_fn, LambdaCtx, Error}; + +#[runtime::main] +async fn main() -> Result<(), Error> { + let func = handler_fn(func); + lambda::run(func).await?; + Ok(()) +} + +async fn func(event: String, _: Option) -> Result { + Ok(event) +} diff --git a/lambda/examples/hello.rs b/lambda/examples/hello.rs new file mode 100644 index 00000000..9b03b008 --- /dev/null +++ b/lambda/examples/hello.rs @@ -0,0 +1,9 @@ +#![feature(async_await)] + +use lambda::{lambda, Error}; + +#[lambda] +#[runtime::main] +async fn main(event: String) -> Result { + Ok(event) +} diff --git a/lambda/src/client.rs b/lambda/src/client.rs new file mode 100644 index 00000000..b838eaff --- /dev/null +++ b/lambda/src/client.rs @@ -0,0 +1,167 @@ +use crate::{err_fmt, Error}; +use bytes::Bytes; +use futures::{ + future::BoxFuture, + prelude::*, + task::{Context, Poll}, +}; +use http::{Method, Request, Response, Uri}; +use hyper::Body; +use std::pin::Pin; + +#[derive(Debug)] +pub(crate) struct Client { + base: Uri, + client: hyper::Client, +} + +impl Client { + pub(crate) fn new(uri: Uri) -> Self { + Self { + base: uri, + client: hyper::Client::new(), + } + } + + fn set_origin(&self, req: Request) -> Result, Error> { + let (mut parts, body) = req.into_parts(); + let (scheme, authority) = { + let scheme = self + .base + .scheme_part() + .ok_or(err_fmt!("PathAndQuery not found"))?; + let authority = self + .base + .authority_part() + .ok_or(err_fmt!("PathAndQuery not found"))?; + (scheme, authority) + }; + let path = parts + .uri + .path_and_query() + .ok_or(err_fmt!("PathAndQuery not found"))?; + + let uri = Uri::builder() + .scheme(scheme.clone()) + .authority(authority.clone()) + .path_and_query(path.clone()) + .build()?; + + parts.uri = uri; + Ok(Request::from_parts(parts, body)) + } +} + +/// A trait modeling interactions with the [Lambda Runtime API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html). +pub(crate) trait EventClient<'a>: Send + Sync { + /// A future containing the next event from the Lambda Runtime API. + type Fut: Future, Error>> + Send + 'a; + fn call(&self, req: Request) -> Self::Fut; +} + +impl<'a> EventClient<'a> for Client { + type Fut = BoxFuture<'a, Result, Error>>; + + fn call(&self, req: Request) -> Self::Fut { + use futures::compat::{Future01CompatExt, Stream01CompatExt}; + use pin_utils::pin_mut; + + let req = { + let (parts, body) = req.into_parts(); + let body = Body::from(body); + Request::from_parts(parts, body) + }; + let req = self.set_origin(req).unwrap(); + let res = self.client.request(req).compat(); + let fut = async { + let res = res.await?; + let (parts, body) = res.into_parts(); + let body = body.compat(); + pin_mut!(body); + + let mut buf: Vec = vec![]; + while let Some(Ok(chunk)) = body.next().await { + let mut chunk: Vec = chunk.into_bytes().to_vec(); + buf.append(&mut chunk) + } + let buf = Bytes::from(buf); + let res = Response::from_parts(parts, buf); + Ok(res) + }; + + fut.boxed() + } +} + +/// The `Stream` implementation for `EventStream` converts a `Future` +/// containing the next event from the Lambda Runtime into a continuous +/// stream of events. While _this_ stream will continue to produce +/// events indefinitely, AWS Lambda will only run the Lambda function attached +/// to this runtime *if and only if* there is an event available for it to process. +/// For Lambda functions that receive a “warm wakeup”—i.e., the function is +/// readily available in the Lambda service's cache—this runtime is able +/// to immediately fetch the next event. +pub(crate) struct EventStream<'a, T> +where + T: EventClient<'a>, +{ + current: Option, Error>>>, + client: &'a T, +} + +impl<'a, T> EventStream<'a, T> +where + T: EventClient<'a>, +{ + pub(crate) fn new(inner: &'a T) -> Self { + Self { + current: None, + client: inner, + } + } + + pub(crate) fn next_event(&self) -> BoxFuture<'a, Result, Error>> { + let req = Request::builder() + .method(Method::GET) + .uri(Uri::from_static("/runtime/invocation/next")) + .body(Bytes::new()) + .unwrap(); + Box::pin(self.client.call(req)) + } +} + +#[must_use = "streams do nothing unless you `.await` or poll them"] +impl<'a, T> Stream for EventStream<'a, T> +where + T: EventClient<'a>, +{ + type Item = Result, Error>; + + fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + // The `loop` is used to drive the inner future (`current`) to completion, advancing + // the state of this stream to yield a new `Item`. Loops like the one below are + // common in many hand-implemented `Futures` and `Streams`. + loop { + // The stream first checks an inner future is set. If the future is present, + // a runtime polls the inner future to completion. + if let Some(current) = &mut self.current { + match current.as_mut().poll(cx) { + // If the inner future signals readiness, we: + // 1. Create a new Future that represents the _next_ event which will be polled + // by subsequent iterations of this loop. + // 2. Return the current future, yielding the resolved future. + Poll::Ready(res) => { + let next = self.next_event(); + self.current = Some(Box::pin(next)); + return Poll::Ready(Some(res)); + } + // Otherwise, the future signals that it's not ready, so we propagate the + // Poll::Pending signal to the caller. + Poll::Pending => return Poll::Pending, + } + } else { + self.current = Some(self.next_event()); + } + } + } +} diff --git a/lambda/src/error_hook.rs b/lambda/src/error_hook.rs new file mode 100644 index 00000000..79df3cbe --- /dev/null +++ b/lambda/src/error_hook.rs @@ -0,0 +1,97 @@ +use std::{ + mem, ptr, + sync::atomic::{AtomicPtr, Ordering}, +}; + +use serde::{Deserialize, Serialize}; + +use crate::Error; + +static HOOK: AtomicPtr<()> = AtomicPtr::new(ptr::null_mut()); + +/// A computer-readable report of an unhandled error. +#[derive(Serialize, Deserialize, Debug, PartialEq)] +pub struct ErrorReport { + /// The type of the error passed to the Lambda APIs. + pub name: String, + /// The [std::fmt::Display] output of the error. + pub err: String, +} + +fn default_error_hook(err: Error) -> ErrorReport { + ErrorReport { + name: String::from("UnknownError"), + err: format!("{}", err), + } +} + +/// Transforms +/// +/// This function is called by the Lambda Runtime if an error is returned from a Handler. +/// This implementation is a near-direct copy of [`std::alloc::set_alloc_error_hook`], down +/// to the `transmute`. +pub(crate) fn generate_report(err: Error) -> ErrorReport { + let hook = HOOK.load(Ordering::SeqCst); + let hook: fn(Error) -> ErrorReport = if hook.is_null() { + default_error_hook + } else { + unsafe { mem::transmute(hook) } + }; + hook(err) +} + +/// Registers a custom error hook, replacing any that was previously registered. +/// +/// The Lambda error hook is invoked when a [`Handler`] or [`HttpHandler`] returns an error, but prior +/// to the runtime reporting the error to the Lambda Runtime APIs. This hook is intended to be used +/// by those interested in programatialy +/// +/// This function, in terms of intended usage and implementation, mimics [`std::alloc::set_alloc_error_hook`]. +/// +/// # Example +/// ``` +/// #![feature(async_await)] +/// +/// use lambda::{handler_fn, error_hook, LambdaCtx, Error}; +/// +/// #[runtime::main] +/// async fn main() -> Result<(), Error> { +/// let func = handler_fn(func); +/// error_hook::set_error_hook(error_hook); +/// lambda::run(func).await?; +/// Ok(()) +/// } +/// +/// async fn func(event: String, _ctx: LambdaCtx) -> Result { +/// Ok(event) +/// } +/// +/// fn error_hook(e: Error) -> error_hook::ErrorReport { +/// error_hook::ErrorReport{ +/// name: String::from("CustomError"), +/// err: format!("{}", e), +/// } +/// } +/// ``` +pub fn set_error_hook>(hook: fn(err: E) -> ErrorReport) { + HOOK.store(hook as *mut (), Ordering::SeqCst); +} + +#[test] +fn set_err_hook() { + use crate::err_fmt; + set_error_hook(|err: Error| { + if let Some(e) = err.downcast_ref::() { + ErrorReport { + name: String::from("std::io::Error"), + err: format!("{}", e), + } + } else { + default_error_hook(err) + } + }); + + let e = err_fmt!("An error"); + let e = generate_report(e.into()); + assert_eq!(String::from("UnknownError"), e.name) +} diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs new file mode 100644 index 00000000..c4326f58 --- /dev/null +++ b/lambda/src/lib.rs @@ -0,0 +1,240 @@ +#![feature(async_await)] +#![deny(clippy::all, clippy::pedantic, clippy::nursery, clippy::cargo)] +#![warn(missing_docs, nonstandard_style, rust_2018_idioms)] + +//! The official Rust runtime for AWS Lambda. +//! +//! There are two mechanisms of defining a Lambda function: +//! 1. The `#[lambda]` attribute, which generates the boilerplate needed to +//! to launch and run a Lambda function. The `#[lambda]` attribute _must_ +//! be placed on an asynchronous main funtion. However, asynchronous main +//! funtions are not legal valid Rust, which means that a crate like +//! [Runtime](https://github.com/rustasync/runtime) must be used. A main function +//! decorated using `#[lamdba]` +//! 2. A type that conforms to the [`Handler`] trait. This type can then be passed +//! to the the `lambda::run` function, which launches and runs the Lambda runtime. +//! +//! An asynchronous function annotated with the `#[lambda]` attribute must +//! accept an argument of type `A` which implements [`serde::Deserialize`] and +//! return a `Result`, where `B` implements [serde::Serializable]. `E` is +//! any type that implements `Into>`. +//! +//! Optionally, the `#[lambda]` annotated function can accept an argument +//! of [`lambda::LambdaCtx`]. +//! +//! ```rust +//! #![feature(async_await)] +//! +//! type Error = Box; +//! +//! #[lambda] +//! #[runtime::main] +//! async fn main(event: String) -> Result { +//! Ok(event) +//! } +//! ``` +pub use crate::types::LambdaCtx; +use bytes::Bytes; +use client::{Client, EventClient, EventStream}; +use futures::prelude::*; +use http::{Method, Request, Response, Uri}; +pub use lambda_attributes::lambda; +use serde::{Deserialize, Serialize}; +use std::{convert::TryFrom, env}; + +mod client; +/// Mechanism to provide a custom error reporting hook. +pub mod error_hook; +/// Types availible to a Lambda function. +mod types; + +pub type Error = Box; + +#[derive(Debug)] +/// A string error, which can be display +pub(crate) struct StringError(pub String); + +impl std::error::Error for StringError {} + +impl std::fmt::Display for StringError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> { + self.0.fmt(f) + } +} + +#[doc(hidden)] +#[macro_export] +macro_rules! err_fmt { + {$($t:tt)*} => { + $crate::StringError(format!($($t)*)) + } +} + +/// A struct containing configuration values derived from environment variables. +#[derive(Debug, Default, Clone, PartialEq)] +pub struct Config { + /// The host and port of the [runtime API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html). + pub endpoint: String, + /// The name of the function. + pub function_name: String, + /// The amount of memory available to the function in MB. + pub memory: i32, + /// The version of the function being executed. + pub version: String, + /// The name of the Amazon CloudWatch Logs stream for the function. + pub log_stream: String, + /// The name of the Amazon CloudWatch Logs group for the function. + pub log_group: String, +} + +impl Config { + /// Attempts to read configuration from environment variables. + pub fn from_env() -> Result { + let conf = Config { + endpoint: env::var("AWS_LAMBDA_RUNTIME_API")?, + function_name: env::var("AWS_LAMBDA_FUNCTION_NAME")?, + memory: env::var("AWS_LAMBDA_FUNCTION_MEMORY_SIZE")?.parse::()?, + version: env::var("AWS_LAMBDA_FUNCTION_VERSION")?, + log_stream: env::var("AWS_LAMBDA_LOG_STREAM_NAME")?, + log_group: env::var("AWS_LAMBDA_LOG_GROUP_NAME")?, + }; + Ok(conf) + } +} + +/// A trait describing an asynchronous function from `Event` to `Output`. `Event` and `Output` must implement [`Deserialize`](serde::Deserialize) and [`Serialize`](serde::Serialize). +pub trait Handler +where + Event: for<'de> Deserialize<'de>, + Output: Serialize, +{ + /// Errors returned by this handler. + type Err: Into; + /// The future response value of this handler. + type Fut: Future>; + /// Process the incoming event and return the response asynchronously. + /// + /// # Arguments + /// * `event` - The data received in the invocation request + /// * `ctx` - The context for the current invocation + fn call(&mut self, event: Event, ctx: Option) -> Self::Fut; +} + +/// A trait describing an asynchronous function from `Request` to `Response`. `A` and `B` must implement [`Deserialize`](serde::Deserialize) and [`Serialize`](serde::Serialize). +pub trait HttpHandler: Handler, Response> +where + Request: for<'de> Deserialize<'de>, + Response: Serialize, +{ + /// Process the incoming request and return the response asynchronously. + fn call_http(&mut self, event: Request) -> , Response>>::Fut; +} + +/// Returns a new `HandlerFn` with the given closure. +pub fn handler_fn(f: Function) -> HandlerFn { + HandlerFn { f } +} + +/// A `Handler` or `HttpHandler` implemented by a closure. +#[derive(Copy, Clone, Debug)] +pub struct HandlerFn { + f: Function, +} + +impl Handler for HandlerFn +where + Function: Fn(Event, Option) -> Fut, + Event: for<'de> Deserialize<'de>, + Output: Serialize, + Err: Into, + Fut: Future> + Send, +{ + type Err = Err; + type Fut = Fut; + fn call(&mut self, req: Event, ctx: Option) -> Self::Fut { + // we pass along the context here + (self.f)(req, ctx) + } +} + +/// Starts the Lambda Rust runtime and begins polling for events on the [Lambda +/// Runtime APIs](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html). +/// +/// # Arguments +/// * `handler` - A function or closure that conforms to the `Handler` trait +/// +/// # Example +/// ```rust +/// #![feature(async_await)] +/// +/// use lambda::{handler_fn, LambdaCtx, Error}; +/// +/// #[runtime::main] +/// async fn main() -> Result<(), Err> { +/// let func = handler_fn(func); +/// lambda::run(func).await?; +/// Ok(()) +/// } +/// +/// async fn func(event: String, _ctx: LambdaCtx) -> Result { +/// Ok(event) +/// } +/// ``` +pub async fn run( + mut handler: Function, +) -> Result<(), Error> +where + Function: Handler, + Event: for<'de> Deserialize<'de>, + Output: Serialize, +{ + let uri: Bytes = env::var("AWS_LAMBDA_RUNTIME_API")?.into(); + let uri = Uri::from_shared(uri)?; + let client = Client::new(uri); + let mut stream = EventStream::new(&client); + + while let Some(event) = stream.next().await { + let (parts, body) = event?.into_parts(); + let mut ctx: LambdaCtx = LambdaCtx::try_from(parts.headers)?; + ctx.env_config = Config::from_env()?; + let body = serde_json::from_slice(&body)?; + + match handler.call(body, Some(ctx.clone())).await { + Ok(res) => { + let res = serde_json::to_vec(&res)?; + let uri = format!("/runtime/invocation/{}/response", &ctx.id).parse::()?; + let req = Request::builder() + .uri(uri) + .method(Method::POST) + .body(Bytes::from(res))?; + + client.call(req).await?; + } + Err(err) => { + let err = error_hook::generate_report(err.into()); + let err = serde_json::to_vec(&err)?; + let uri = format!("/runtime/invocation/{}/error", &ctx.id).parse::()?; + let req = Request::builder() + .uri(uri) + .method(Method::POST) + .body(Bytes::from(err))?; + + client.call(req).await?; + } + } + } + + Ok(()) +} + +#[runtime::test] +async fn get_next() -> Result<(), Error> { + async fn test_fn(req: String, _ctx: Option) -> Result { + Ok(req) + } + + let test_fn = handler_fn(test_fn); + let _ = run(test_fn).await?; + + Ok(()) +} diff --git a/lambda/src/types.rs b/lambda/src/types.rs new file mode 100644 index 00000000..98eaa641 --- /dev/null +++ b/lambda/src/types.rs @@ -0,0 +1,353 @@ +use crate::{err_fmt, Config}; +use headers::{Header, HeaderMap, HeaderMapExt, HeaderName, HeaderValue}; +use lazy_static::lazy_static; +use serde::{Deserialize, Serialize}; +use std::{collections::HashMap, convert::TryFrom}; + +lazy_static! { + static ref AWS_REQUEST_ID: HeaderName = HeaderName::from_static("lambda-runtime-aws-request-id"); + static ref AWS_INVOCATION_DEADLINE: HeaderName = HeaderName::from_static("lambda-runtime-deadline-ms"); + static ref AWS_FUNCTION_ARN: HeaderName = HeaderName::from_static("lambda-runtime-invoked-function-arn"); + static ref AWS_XRAY_TRACE_ID: HeaderName = HeaderName::from_static("lambda-runtime-trace-id"); + static ref AWS_MOBILE_CLIENT_CONTEXT: HeaderName = HeaderName::from_static("lambda-runtime-client-context"); + static ref AWS_MOBILE_CLIENT_IDENTITY: HeaderName = HeaderName::from_static("lambda-runtime-cognito-identity"); +} + +macro_rules! str_header { + ($type:tt, $header_name:ident) => { + impl Header for $type { + fn name() -> &'static HeaderName { + &$header_name + } + + fn decode<'i, I>(values: &mut I) -> Result + where + I: Iterator, + { + let value = values + .next() + .and_then(|val| { + if let Ok(val) = val.to_str() { + return Some(String::from(val)); + } + None + }) + .ok_or_else(headers::Error::invalid)?; + Ok($type(value)) + } + + fn encode(&self, values: &mut E) + where + E: Extend, + { + let value = HeaderValue::from_str(&self.0).expect("Should not panic on encoding"); + values.extend(std::iter::once(value)); + } + } + }; +} + +macro_rules! num_header { + ($type:tt, $header_name:ident) => { + impl Header for $type { + fn name() -> &'static HeaderName { + &$header_name + } + + fn decode<'i, I>(values: &mut I) -> Result + where + I: Iterator, + { + let value = values + .next() + .and_then(|val| { + if let Ok(val) = val.to_str() { + if let Ok(val) = val.parse::() { + return Some(val); + } + } + None + }) + .ok_or_else(headers::Error::invalid)?; + Ok($type(value)) + } + + fn encode(&self, values: &mut E) + where + E: Extend, + { + let value = HeaderValue::from_str(&self.0.to_string()).expect("Should not panic on encoding"); + values.extend(std::iter::once(value)); + } + } + }; +} + +/// The request ID, which identifies the request that triggered the function invocation. This header +/// tracks the invocation within the Lambda control plane. The request ID is used to specify completion +/// of a given invocation. +#[derive(Debug, Clone, PartialEq)] +pub struct RequestId(pub String); +str_header!(RequestId, AWS_REQUEST_ID); + +/// The date that the function times out in Unix time milliseconds. For example, `1542409706888`. +#[derive(Debug, Clone, PartialEq)] +pub struct InvocationDeadline(pub u64); +num_header!(InvocationDeadline, AWS_INVOCATION_DEADLINE); + +/// The ARN of the Lambda function, version, or alias that is specified in the invocation. +/// For instance, `arn:aws:lambda:us-east-2:123456789012:function:custom-runtime`. +#[derive(Debug, Clone, PartialEq)] +pub struct FunctionArn(pub String); +str_header!(FunctionArn, AWS_FUNCTION_ARN); + +/// The AWS X-Ray Tracing header. For more information, +/// please see [AWS' documentation](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader). +#[derive(Debug, Clone, PartialEq)] +pub struct XRayTraceId(pub String); +str_header!(XRayTraceId, AWS_XRAY_TRACE_ID); + +/// For invocations from the AWS Mobile SDK contains data about client application and device. +#[derive(Debug, Clone, PartialEq)] +struct MobileClientContext(String); +str_header!(MobileClientContext, AWS_MOBILE_CLIENT_CONTEXT); + +/// For invocations from the AWS Mobile SDK, data about the Amazon Cognito identity provider. +#[derive(Debug, Clone, PartialEq)] +struct MobileClientIdentity(String); +str_header!(MobileClientIdentity, AWS_MOBILE_CLIENT_IDENTITY); + +/// Client context sent by the AWS Mobile SDK. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ClientContext { + /// Information about the mobile application invoking the function. + pub client: ClientApplication, + /// Custom properties attached to the mobile event context. + pub custom: HashMap, + /// Environment settings from the mobile client. + pub environment: HashMap, +} + +/// AWS Mobile SDK client fields. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +#[serde(rename_all = "camelCase")] +pub struct ClientApplication { + /// The mobile app installation id + pub installation_id: String, + /// The app title for the mobile app as registered with AWS' mobile services. + pub app_title: String, + /// The version name of the application as registered with AWS' mobile services. + pub app_version_name: String, + /// The app version code. + pub app_version_code: String, + /// The package name for the mobile application invoking the function + pub app_package_name: String, +} + +/// Cognito identity information sent with the event +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct CognitoIdentity { + /// The unique identity id for the Cognito credentials invoking the function. + pub identity_id: String, + /// The identity pool id the caller is "registered" with. + pub identity_pool_id: String, +} + +/// The Lambda function execution context. The values in this struct +/// are populated using the [Lambda environment variables](https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html) +/// and the headers returned by the poll request to the Runtime APIs. +#[derive(Clone, Debug, PartialEq, Default)] +pub struct LambdaCtx { + /// The AWS request ID generated by the Lambda service. + pub id: String, + /// The execution deadline for the current invocation in milliseconds. + pub deadline: u64, + /// The ARN of the Lambda function being invoked. + pub invoked_function_arn: String, + /// The X-Ray trace ID for the current invocation. + pub xray_trace_id: Option, + /// The client context object sent by the AWS mobile SDK. This field is + /// empty unless the function is invoked using an AWS mobile SDK. + pub client_context: Option, + /// The Cognito identity that invoked the function. This field is empty + /// unless the invocation request to the Lambda APIs was made using AWS + /// credentials issues by Amazon Cognito Identity Pools. + pub identity: Option, + /// Lambda function configuration from the local environment variables. + /// Includes information such as the function name, memory allocation, + /// version, and log streams. + pub env_config: Config, +} + +impl TryFrom> for LambdaCtx { + type Error = crate::Error; + + fn try_from(value: HeaderMap) -> Result { + let request_id = value.typed_get::().ok_or(err_fmt!("RequestId not found"))?; + let function_arn = value + .typed_get::() + .ok_or(err_fmt!("FunctionArn not found"))?; + let deadline = value + .typed_get::() + .ok_or(err_fmt!("FunctionArn not found"))?; + let xray = value.typed_get::(); + + let ctx = LambdaCtx { + id: request_id.0, + deadline: deadline.0, + invoked_function_arn: function_arn.0, + xray_trace_id: xray.map(|v| v.0), + ..Default::default() + }; + Ok(ctx) + } +} + +#[allow(dead_code)] +pub mod tests { + use crate::types::{ + ClientApplication, ClientContext, CognitoIdentity, FunctionArn, InvocationDeadline, MobileClientContext, + MobileClientIdentity, RequestId, XRayTraceId, + }; + use bytes::Bytes; + use headers::{HeaderMap, HeaderMapExt}; + use http::Response; + use lambda_attributes::proptest; + use proptest::{collection, option, prelude::*, strategy::Strategy, string::string_regex}; + + fn gen_request_id() -> impl Strategy { + let expr = "[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}"; + let arbitrary_uuid = string_regex(expr).unwrap(); + arbitrary_uuid.prop_map(RequestId) + } + + fn gen_invocation_deadline() -> impl Strategy { + any::().prop_map(InvocationDeadline) + } + + pub fn gen_function_arn() -> impl Strategy { + let expr = "arn:aws:lambda:us-east-1:[0-9]{12}:function:custom-runtime"; + let arn = string_regex(expr).unwrap(); + arn.prop_map(FunctionArn) + } + + fn gen_xray_trace_id() -> impl Strategy { + let expr = "Root=1-[a-zA-Z0-9]{32};Parent=[a-z0-9]{16};Sampled=[0-1]{1}"; + let xray = string_regex(expr).unwrap(); + xray.prop_map(XRayTraceId) + } + + fn uuid() -> impl Strategy { + let expr = "[a-zA-Z0-9]{32}"; + string_regex(expr).unwrap() + } + + fn gen_client_context() -> impl Strategy { + uuid().prop_map(MobileClientContext) + } + + fn gen_client_identity() -> impl Strategy { + uuid().prop_map(MobileClientIdentity) + } + + fn gen_client_identity_struct() -> impl Strategy { + (uuid()).prop_map(|uuid| CognitoIdentity { + identity_id: uuid.clone(), + identity_pool_id: uuid, + }) + } + + fn gen_client_application() -> impl Strategy { + (uuid()).prop_map(|uuid| ClientApplication { + installation_id: uuid.clone(), + app_title: uuid.clone(), + app_version_name: uuid.clone(), + app_version_code: uuid.clone(), + app_package_name: uuid, + }) + } + + fn gen_client_context_struct() -> impl Strategy { + let app = gen_client_application(); + let overrides = collection::hash_map(uuid(), uuid(), 1..10); + let env = collection::hash_map(uuid(), uuid(), 1..10); + (app, overrides, env).prop_map(|args| { + let (app, overrides, env) = args; + ClientContext { + client: app, + custom: overrides, + environment: env, + } + }) + } + + fn gen_headers() -> impl Strategy { + let mandatory = (gen_request_id(), gen_invocation_deadline(), gen_function_arn()); + let xray = option::of(gen_xray_trace_id()); + let mobile = option::of((gen_client_context(), gen_client_identity())); + (mandatory, xray, mobile).prop_map(|headers| { + let (mandatory, xray, mobile) = headers; + let mut map = HeaderMap::new(); + map.typed_insert(mandatory.0); + map.typed_insert(mandatory.1); + map.typed_insert(mandatory.2); + xray.map(|xray| map.typed_insert(xray)); + mobile.map(|mobile| { + map.typed_insert(mobile.0); + map.typed_insert(mobile.1) + }); + map + }) + } + + fn gen_next_event() -> impl Strategy> { + gen_headers().prop_map(|headers| { + let mut resp = Response::new(Bytes::default()); + *resp.headers_mut() = headers; + *resp.status_mut() = http::StatusCode::OK; + resp + }) + } + + #[proptest(gen_request_id())] + fn request_id(req: RequestId) { + let mut headers = HeaderMap::new(); + headers.typed_insert(req.clone()); + prop_assert_eq!(headers.typed_get::(), Some(req)); + } + + #[proptest(gen_invocation_deadline())] + fn deadline(deadline: InvocationDeadline) { + let mut headers = HeaderMap::new(); + headers.typed_insert(deadline.clone()); + prop_assert_eq!(headers.typed_get::(), Some(deadline)); + } + + #[proptest(gen_function_arn())] + fn function_arn(arn: FunctionArn) { + let mut headers = HeaderMap::new(); + headers.typed_insert(arn.clone()); + prop_assert_eq!(headers.typed_get::(), Some(arn)); + } + + #[proptest(gen_xray_trace_id())] + fn xray_trace_id(trace_id: XRayTraceId) { + let mut headers = HeaderMap::new(); + headers.typed_insert(trace_id.clone()); + prop_assert_eq!(headers.typed_get::(), Some(trace_id)); + } + + #[proptest(gen_client_context())] + fn mobile_client_context(ctx: MobileClientContext) { + let mut headers = HeaderMap::new(); + headers.typed_insert(ctx.clone()); + prop_assert_eq!(headers.typed_get::(), Some(ctx)); + } + + #[proptest(gen_client_identity())] + fn mobile_client_identity(id: MobileClientIdentity) { + let mut headers = HeaderMap::new(); + headers.typed_insert(id.clone()); + prop_assert_eq!(headers.typed_get::(), Some(id)) + } +} diff --git a/lambda/tests/compile-fail/no-args.rs b/lambda/tests/compile-fail/no-args.rs new file mode 100644 index 00000000..c61df043 --- /dev/null +++ b/lambda/tests/compile-fail/no-args.rs @@ -0,0 +1,4 @@ +#![feature(async_await)] + +#[lambda_attributes::lambda] +async fn main() {} diff --git a/lambda/tests/compile-fail/no-args.stderr b/lambda/tests/compile-fail/no-args.stderr new file mode 100644 index 00000000..c49c4894 --- /dev/null +++ b/lambda/tests/compile-fail/no-args.stderr @@ -0,0 +1,11 @@ +error: The #[lambda] macro can accept one or two arguments. + --> $DIR/no-args.rs:3:1 + | +3 | #[lambda_attributes::lambda] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error[E0601]: `main` function not found in crate `$CRATE` + | + = note: consider adding a `main` function to `$DIR/tests/compile-fail/no-args.rs` + +For more information about this error, try `rustc --explain E0601`. diff --git a/lambda/tests/compile-fail/non-async-main.rs b/lambda/tests/compile-fail/non-async-main.rs new file mode 100644 index 00000000..83a1a0a2 --- /dev/null +++ b/lambda/tests/compile-fail/non-async-main.rs @@ -0,0 +1,2 @@ +#[lambda_attributes::lambda] +fn main() {} diff --git a/lambda/tests/compile-fail/non-async-main.stderr b/lambda/tests/compile-fail/non-async-main.stderr new file mode 100644 index 00000000..5a6ad063 --- /dev/null +++ b/lambda/tests/compile-fail/non-async-main.stderr @@ -0,0 +1,11 @@ +error: the async keyword is missing from the function declaration + --> $DIR/non-async-main.rs:2:1 + | +2 | fn main() {} + | ^^ + +error[E0601]: `main` function not found in crate `$CRATE` + | + = note: consider adding a `main` function to `$DIR/tests/compile-fail/non-async-main.rs` + +For more information about this error, try `rustc --explain E0601`. diff --git a/lambda/tests/tests.rs b/lambda/tests/tests.rs new file mode 100644 index 00000000..34054f63 --- /dev/null +++ b/lambda/tests/tests.rs @@ -0,0 +1,10 @@ +use trybuild::TestCases; + +#[test] +fn ui_tests() { + let t = TestCases::new(); + t.pass("tests/ui/arg.rs"); + t.pass("tests/ui/arg-plus-ctx.rs"); + t.compile_fail("tests/compile-fail/no-args.rs"); + t.compile_fail("tests/compile-fail/non-async-main.rs"); +} diff --git a/lambda/tests/ui/arg-plus-ctx.rs b/lambda/tests/ui/arg-plus-ctx.rs new file mode 100644 index 00000000..b1108d08 --- /dev/null +++ b/lambda/tests/ui/arg-plus-ctx.rs @@ -0,0 +1,10 @@ +#![feature(async_await)] + +use lambda::{lambda, LambdaCtx, Error}; + +#[lambda] +#[runtime::main] +async fn main(s: String, ctx: LambdaCtx) -> Result { + let _ = ctx; + Ok(s) +} diff --git a/lambda/tests/ui/arg.rs b/lambda/tests/ui/arg.rs new file mode 100644 index 00000000..e6cf2c8f --- /dev/null +++ b/lambda/tests/ui/arg.rs @@ -0,0 +1,9 @@ +#![feature(async_await)] + +use lambda::{lambda, Error}; + +#[lambda] +#[runtime::main] +async fn main(s: String) -> Result { + Ok(s) +} From 96ea1247f9f0c968883016c3558b7058bdd17c7a Mon Sep 17 00:00:00 2001 From: David Barsky Date: Fri, 5 Jul 2019 12:01:07 -0400 Subject: [PATCH 03/34] version bump --- Cargo.lock | 700 +++++++++++++++++++++-------------- lambda-attributes/Cargo.toml | 2 +- lambda/Cargo.toml | 4 +- rust-toolchain | 1 + 4 files changed, 433 insertions(+), 274 deletions(-) create mode 100644 rust-toolchain diff --git a/Cargo.lock b/Cargo.lock index b63a830c..4b6636f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,7 +2,7 @@ # It is not intended for manual editing. [[package]] name = "aho-corasick" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -36,14 +36,14 @@ name = "atty" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "autocfg" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -51,19 +51,19 @@ name = "backtrace" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "backtrace-sys" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -71,7 +71,7 @@ name = "base64" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -98,7 +98,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bitflags" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -108,7 +108,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "bumpalo" -version = "2.4.3" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -132,7 +132,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "byteorder" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -140,18 +140,28 @@ name = "bytes" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "c2-chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "cc" -version = "1.0.29" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -161,8 +171,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -170,7 +180,7 @@ name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -182,12 +192,12 @@ dependencies = [ "clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -195,13 +205,13 @@ name = "crossbeam" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -211,7 +221,7 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -223,25 +233,42 @@ dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-deque" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-epoch" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-queue" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-utils" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -253,6 +280,11 @@ dependencies = [ "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "either" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "encode_unicode" version = "0.3.5" @@ -278,7 +310,7 @@ name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -289,20 +321,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures" -version = "0.1.25" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-channel-preview" -version = "0.3.0-alpha.16" +version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-core-preview" -version = "0.3.0-alpha.16" +version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -310,50 +343,45 @@ name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-executor-preview" -version = "0.3.0-alpha.16" +version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-io-preview" -version = "0.3.0-alpha.16" +version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "futures-preview" -version = "0.3.0-alpha.16" +version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-sink-preview" -version = "0.3.0-alpha.16" +version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -361,20 +389,20 @@ name = "futures-timer" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-util-preview" -version = "0.3.0-alpha.16" +version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -388,6 +416,15 @@ dependencies = [ "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "getrandom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "glob" version = "0.3.0" @@ -395,19 +432,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "h2" -version = "0.1.16" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -416,7 +453,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "headers-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -452,38 +489,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "http-body" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "httparse" -version = "1.3.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hyper" -version = "0.12.24" +version = "0.12.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -496,13 +547,13 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "itoa" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -519,9 +570,9 @@ version = "0.3.0-alpha.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -539,10 +590,10 @@ version = "0.1.0" dependencies = [ "better-panic 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.31 (registry+https://github.com/rust-lang/crates.io-index)", "lambda-attributes 0.1.0", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -569,15 +620,13 @@ dependencies = [ name = "lazy_static" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "lazycell" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "libc" -version = "0.2.48" +version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -589,12 +638,20 @@ dependencies = [ "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "lock_api" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "log" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -617,15 +674,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.6.16" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -639,8 +695,8 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -659,9 +715,9 @@ name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -671,15 +727,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "num-traits" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "num_cpus" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -709,16 +768,41 @@ dependencies = [ "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parking_lot" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot_core" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -726,6 +810,11 @@ name = "pin-utils" version = "0.1.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "ppv-lite86" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "proc-macro2" version = "0.4.30" @@ -740,17 +829,17 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -771,17 +860,29 @@ name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -789,10 +890,20 @@ name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand_chacha" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_core" version = "0.3.1" @@ -806,6 +917,14 @@ name = "rand_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "rand_core" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_hc" version = "0.1.0" @@ -814,6 +933,14 @@ dependencies = [ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_isaac" version = "0.1.1" @@ -824,34 +951,34 @@ dependencies = [ [[package]] name = "rand_jitter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_os" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_pcg" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -872,7 +999,7 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.1.51" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -880,15 +1007,15 @@ name = "redox_termios" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -908,7 +1035,7 @@ name = "remove_dir_all" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -919,13 +1046,13 @@ dependencies = [ "async-datagram 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "async-ready 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -935,7 +1062,7 @@ name = "runtime" version = "0.3.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "runtime-attributes 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "runtime-native 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "runtime-raw 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -957,8 +1084,8 @@ version = "0.3.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "juliex 0.3.0-alpha.7 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -973,12 +1100,12 @@ name = "runtime-raw" version = "0.3.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rustc-demangle" -version = "0.1.13" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -996,7 +1123,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1010,6 +1137,11 @@ name = "scopeguard" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "scopeguard" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "semver" version = "0.9.0" @@ -1028,12 +1160,12 @@ name = "serde" version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" -version = "1.0.87" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1046,7 +1178,7 @@ name = "serde_json" version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1069,11 +1201,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "smallvec" -version = "0.6.8" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "spin" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "stable_deref_trait" @@ -1082,8 +1216,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "string" -version = "0.1.3" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "syn" @@ -1097,15 +1234,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.0.9" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1121,9 +1258,9 @@ name = "termion" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1132,7 +1269,7 @@ name = "termios" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1148,71 +1285,91 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" -version = "0.1.15" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-buf" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-current-thread" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-reactor" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-sync" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1221,39 +1378,38 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-threadpool" -version = "0.1.11" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-timer" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1310,14 +1466,6 @@ name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "utf8-ranges" version = "1.0.3" @@ -1328,25 +1476,20 @@ name = "version_check" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "wait-timeout" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "want" -version = "0.0.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1364,7 +1507,7 @@ name = "wasm-bindgen-backend" version = "0.2.47" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bumpalo 2.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bumpalo 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1378,7 +1521,7 @@ name = "wasm-bindgen-futures" version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "js-sys 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1416,7 +1559,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1438,7 +1581,7 @@ name = "winapi-util" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1451,7 +1594,7 @@ name = "wincolor" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1465,107 +1608,120 @@ dependencies = [ ] [metadata] -"checksum aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f484ae0c99fec2e858eb6134949117399f222608d84cadb3f58c1f97c2364c" +"checksum aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "36b7aa1ccb7d7ea3f437cf025a2ab1c47cc6c1bc9fc84918ff449def12f5e282" "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" "checksum async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43d8594c35b0f8c540f322ac40fcf32536fa9fe41872ccf60b445a06a87fd1ae" "checksum async-datagram 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ec4e1e7c4c16c964d7040b676d2eeb0ce4f94bed2e57e28f28a88768c8f934c" "checksum async-ready 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9470c79dd71fcd6090676d2ef90f45e9d357831234e8a1f70a1991093019bc27" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" +"checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" "checksum backtrace 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)" = "18b50f5258d1a9ad8396d2d345827875de4261b158124d4c819d9b351454fae5" -"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" +"checksum backtrace-sys 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)" = "5b3a000b9c543553af61bc01cbfc403b04b5caa9e421033866f2e98061eb3e61" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum better-panic 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "734e15aeecdaead081b4b07364648ba6eb6ef94eedc6578a47b8a99879cc4597" "checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" "checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" -"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09" -"checksum bumpalo 2.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "84dca3afd8e01b9526818b7963e5b4916063b3cdf9f10cf6b73ef0bd0ec37aa5" +"checksum bumpalo 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2cd43d82f27d68911e6ee11ee791fb248f138f5d69424dc02e098d4f152b0b05" "checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" -"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" +"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -"checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e" -"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" +"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" +"checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d" +"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" "checksum clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "73abfd4c73d003a674ce5d2933fca6ce6c42480ea84a5ffe0a2dc39ed56300f9" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum console 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8ca57c2c14b8a2bf3105bc9d15574aad80babf6a9c44b1058034cdf8bd169628" "checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" "checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" +"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" "checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" +"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" "checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" "checksum encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90b2c9496c001e8cb61827acdefad780795c42264c137744cae6f7d9e3450abd" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" -"checksum futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4cd523712fc272e9b714669165a2832debee5a5b7e409bfccdc7c0d5cd0cf07a" -"checksum futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "719770f328642b657b849856bb5a607db9538dd5bb3000122e5ead55d0a58c36" +"checksum futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "45dc39533a6cae6da2b56da48edae506bb767ec07370f86f70fc062e9d435869" +"checksum futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "21c71ed547606de08e9ae744bb3c6d80f5627527ef31ecf2a7210d0e67bc8fae" +"checksum futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4b141ccf9b7601ef987f36f1c0d9522f76df3bba1cf2e63bfacccc044c4558f5" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -"checksum futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "315dc58c908535d059576a329b86cd185933433382cfcd394fb2fa353330de03" -"checksum futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "cca0bf7a1f39c9d32b797b0def93d5932aa71796236aad6b549bac6f7df159a3" -"checksum futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfeac5f016a4b5835bb93eb7961f50a64f0e001207562703d9ddf4109d7b263" -"checksum futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "49dcfdacd6b5974ca0b9b78bc38ffd1071da0206179735c3df82e279f5b784e4" +"checksum futures-executor-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "87ba260fe51080ba37f063ad5b0732c4ff1f737ea18dcb67833d282cdc2c6f14" +"checksum futures-io-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "082e402605fcb8b1ae1e5ba7d7fdfd3e31ef510e2a8367dd92927bb41ae41b3a" +"checksum futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "bf25f91c8a9a1f64c451e91b43ba269ed359b9f52d35ed4b3ce3f9c842435867" +"checksum futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4309a25a1069a1f3c10647b227b9afe6722b67a030d3f00a9cbdc171fc038de4" "checksum futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eb4a32e84935678650944c6ebd0d912db46405d37bf94f1a058435c5080abcb1" -"checksum futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "f7a0451b9c5047c2b9ab93425ffd0793165511e93c04b977cd45fbd41c6e34b2" +"checksum futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "af8198c48b222f02326940ce2b3aa9e6e91a32886eeaad7ca3b8e4c70daa3f4e" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +"checksum getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e65cce4e5084b14874c4e7097f38cab54f47ee554f9194673456ea379dcc4c55" "checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -"checksum h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ddb2b25a33e231484694267af28fec74ac63b5ccf51ee2065a5e313b834d836e" +"checksum h2 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "a539b63339fbbb00e081e84b6e11bd1d9634a82d91da2984a18ac74a8823f392" "checksum headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6e2e51d356081258ef05ff4c648138b5d3fe64b7300aaad3b820554a2b7fb6" "checksum headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "967131279aaa9f7c20c7205b45a391638a83ab118e6509b2d0ccbe08de044237" "checksum headers-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97c462e8066bca4f0968ddf8d12de64c40f2c2187b3b9a2fa994d06e8ad444a9" "checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" -"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" -"checksum hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)" = "fdfa9b401ef6c4229745bb6e9b2529192d07b920eed624cdee2a82348cd550af" +"checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" +"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +"checksum hyper 0.12.31 (registry+https://github.com/rust-lang/crates.io-index)" = "6481fff8269772d4463253ca83c788104a7305cb3fb9136bc651a6211e46e03f" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" -"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" +"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" "checksum js-sys 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "eac16f41aa9b9388230b1d6617d7ed897a1af5416b8fe1c8734dcef79c7aae10" "checksum juliex 0.3.0-alpha.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1c917bb13450f9999a24980cc13ac76e45d9af0f69e0228b503f68a3e1db4466" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" -"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "e962c7641008ac010fa60a7dfdc1712449f29c44ef2d4702394aea943ee75047" +"checksum libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "6281b86796ba5e4366000be6e9e18bf35580adf9e63fbe2294aadb587613a319" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" +"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" "checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" -"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" +"checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" -"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" +"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" +"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" "checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" "checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" +"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" +"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" +"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +"checksum rand_chacha 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e193067942ef6f485a349a113329140d0ab9e2168ce92274499bb0e9a4190d9d" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" "checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" +"checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832" -"checksum rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b7c690732391ae0abafced5015ffb53656abfaec61b342290e5eb56b286a679d" -"checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" +"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" +"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" +"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0b2f0808e7d7e4fb1cb07feb6ff2f4bc827938f24f8c2e6a3beb7370af544bdd" +"checksum regex 1.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1325e8a57b7da4cbcb38b3957112f729990bad0a18420e7e250ef6b1d9a15763" "checksum regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d76410686f9e3a17f06128962e0ecc5755870bb890c34820c7af7f1db2e1d48" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" "checksum romio 0.3.0-alpha.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5793a53bf62de2d49fc38552afa2f1422feb8cfd5bb9fdd9b1536f0c03dbeac1" @@ -1573,36 +1729,40 @@ dependencies = [ "checksum runtime-attributes 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ecbf89dcd4241edd7e82abc386201e20bd2a7b5057aeabaffe357430da5bcb51" "checksum runtime-native 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "cd600395f69c5a7b80089020c66bea5947e62e0cb288ba9ac10b9a72ff3a6cf4" "checksum runtime-raw 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7551354d1bc6a66c1d671000ea14dd360d23367ff803bd37bf91938c9a91fa0f" -"checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" +"checksum rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f4dccf6f4891ebcc0c39f9b6eb1a83b9bf5d747cb439ec6fba4f3b977038af" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae" "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" +"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "076a696fdea89c19d3baed462576b8f6d663064414b5c793642da8dfeb99475b" -"checksum serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "633e97856567e518b59ffb2ad7c7a4fd4c5d91d9c7f32dd38a27b2bf7e8114ea" +"checksum serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "ef45eb79d6463b22f5f9e16d283798b7c0175ba6050bc25c1a946c122727fe7b" "checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" "checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "88aea073965ab29f6edb5493faf96ad662fb18aa9eeb186a3b7057951605ed15" +"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" +"checksum spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44363f6f51401c34e7be73db0db371c04705d35efbe9f7d6082e03a921a32c55" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b639411d0b9c738748b5397d5ceba08e648f4f1992231aa859af1a017f31f60b" +"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" "checksum syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d960b829a55e56db167e861ddb43602c003c7be0bee1d345021703fac2fb7c" -"checksum tempfile 3.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "99372620708c1ccc26166a6491c4d836e5dd00cd65335505e02410ff6c6f6282" +"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" "checksum termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a8fb22f7cde82c8220e5aeacb3258ed7ce996142c77cba193f203515e26c330" "checksum termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e0500b88064f08bebddd0c0bed39e19f5c567a5f30975bee52b0c0d3e2eeb38c" -"checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6" -"checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" -"checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f" -"checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f" +"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" +"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" +"checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" +"checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" +"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" +"checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" +"checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c3fd86cb15547d02daa2b21aadaf4e37dee3368df38a526178a5afa3c034d2fb" -"checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" +"checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19" +"checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" "checksum toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8c96d7873fa7ef8bdeb3a9cda3ac48389b4154f32b9803b4bc26220b677b039" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" "checksum trybuild 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b7592bfd3449da952920cb55618d55f34779293127f76d946c4a54f258ca87b8" @@ -1611,12 +1771,10 @@ dependencies = [ "checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9d50aa7650df78abf942826607c62468ce18d9019673d4a2ebe1865dbb96ffde" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" +"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" "checksum wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "22029998cc650473cb05f10f19c06a1536b9e1f1572e4f5dacd45ab4d3f85877" "checksum wasm-bindgen-backend 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "6f858ff3cb4196c702e8c24b75fba1d3ab46958de4f7c253627f0507aae1507c" "checksum wasm-bindgen-futures 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "cc16facd42fc3d0fa0cae78b39516bac04496cf80518fd09bbfa33e9b0e9c92d" @@ -1624,7 +1782,7 @@ dependencies = [ "checksum wasm-bindgen-macro-support 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "92b1356b623816248dfe0e2c4b7e113618d647808907ff6a3d9838ebee8e82ee" "checksum wasm-bindgen-shared 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "15de16ddb30cfd424a87598b30021491bae1607d32e52056979865c98b7913b4" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" +"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" diff --git a/lambda-attributes/Cargo.toml b/lambda-attributes/Cargo.toml index edec67a1..5fc93a7a 100644 --- a/lambda-attributes/Cargo.toml +++ b/lambda-attributes/Cargo.toml @@ -15,4 +15,4 @@ bytes = "0.4.12" proptest = "0.9.3" [dev-dependencies] -runtime = "0.3.0-alpha.5" +runtime = "0.3.0-alpha.6" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 43ebbaa0..f546e2a2 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -6,11 +6,11 @@ edition = "2018" [dependencies] futures-preview = "0.3.0-alpha.16" -runtime = "0.3.0-alpha.5" +runtime = { version = "0.3.0-alpha.6" } http = "0.1.17" serde = { version = "1.0.91", features = ["derive"] } serde_json = "1.0.39" -hyper = "0.12" +hyper = { version = "0.12.31" } proptest = "0.9.3" headers = "0.2.1" lazy_static = "1.3.0" diff --git a/rust-toolchain b/rust-toolchain new file mode 100644 index 00000000..9c2347a4 --- /dev/null +++ b/rust-toolchain @@ -0,0 +1 @@ +nightly-2019-07-05 From ae003fde468d9625c6111aabb0bbc796a482e072 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Fri, 5 Jul 2019 12:05:31 -0400 Subject: [PATCH 04/34] Fix failing ui tests --- lambda/tests/ui/arg-plus-ctx.rs | 7 ++++++- lambda/tests/ui/arg.rs | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lambda/tests/ui/arg-plus-ctx.rs b/lambda/tests/ui/arg-plus-ctx.rs index b1108d08..415d5b1a 100644 --- a/lambda/tests/ui/arg-plus-ctx.rs +++ b/lambda/tests/ui/arg-plus-ctx.rs @@ -1,4 +1,4 @@ -#![feature(async_await)] +#![feature(async_await, start)] use lambda::{lambda, LambdaCtx, Error}; @@ -8,3 +8,8 @@ async fn main(s: String, ctx: LambdaCtx) -> Result { let _ = ctx; Ok(s) } + +#[start] +fn start(_argc: isize, _argv: *const *const u8) -> isize { + 0 +} \ No newline at end of file diff --git a/lambda/tests/ui/arg.rs b/lambda/tests/ui/arg.rs index e6cf2c8f..d0c90f24 100644 --- a/lambda/tests/ui/arg.rs +++ b/lambda/tests/ui/arg.rs @@ -1,4 +1,4 @@ -#![feature(async_await)] +#![feature(async_await, start)] use lambda::{lambda, Error}; @@ -7,3 +7,8 @@ use lambda::{lambda, Error}; async fn main(s: String) -> Result { Ok(s) } + +#[start] +fn start(_argc: isize, _argv: *const *const u8) -> isize { + 0 +} \ No newline at end of file From 5869b524eb63cbf7a84fa6b6afb52e3d1b415c3b Mon Sep 17 00:00:00 2001 From: David Barsky Date: Fri, 5 Jul 2019 12:05:55 -0400 Subject: [PATCH 05/34] remove better-panic dev dependency --- Cargo.lock | 213 ---------------------------------------------- lambda/Cargo.toml | 1 - 2 files changed, 214 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4b6636f9..ccb328af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,13 +1,5 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -[[package]] -name = "aho-corasick" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "arrayvec" version = "0.4.10" @@ -31,41 +23,11 @@ name = "async-ready" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "atty" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "autocfg" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "backtrace" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace-sys 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "backtrace-sys" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "base64" version = "0.10.1" @@ -74,15 +36,6 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "better-panic" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)", - "console 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "bit-set" version = "0.5.1" @@ -154,27 +107,11 @@ dependencies = [ "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "cc" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "cfg-if" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "clicolors-control" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "cloudabi" version = "0.0.3" @@ -183,23 +120,6 @@ dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "console" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "crossbeam" version = "0.6.0" @@ -285,11 +205,6 @@ name = "either" version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "encode_unicode" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "fake-simd" version = "0.1.2" @@ -588,7 +503,6 @@ dependencies = [ name = "lambda" version = "0.1.0" dependencies = [ - "better-panic 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -638,14 +552,6 @@ dependencies = [ "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "lock_api" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "log" version = "0.4.6" @@ -741,11 +647,6 @@ dependencies = [ "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "numtoa" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "opaque-debug" version = "0.2.2" @@ -768,16 +669,6 @@ dependencies = [ "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot_core" version = "0.4.0" @@ -790,21 +681,6 @@ dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot_core" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "pin-utils" version = "0.1.0-alpha.4" @@ -1002,26 +878,6 @@ name = "redox_syscall" version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "redox_termios" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "regex-syntax" version = "0.6.7" @@ -1103,11 +959,6 @@ dependencies = [ "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rustc-demangle" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "rustc_version" version = "0.2.3" @@ -1137,11 +988,6 @@ name = "scopeguard" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "scopeguard" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "semver" version = "0.9.0" @@ -1253,33 +1099,6 @@ dependencies = [ "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "termion" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "termios" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thread_local" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "time" version = "0.1.42" @@ -1456,21 +1275,11 @@ dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "unicode-width" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "utf8-ranges" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "version_check" version = "0.1.5" @@ -1608,17 +1417,12 @@ dependencies = [ ] [metadata] -"checksum aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "36b7aa1ccb7d7ea3f437cf025a2ab1c47cc6c1bc9fc84918ff449def12f5e282" "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" "checksum async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43d8594c35b0f8c540f322ac40fcf32536fa9fe41872ccf60b445a06a87fd1ae" "checksum async-datagram 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ec4e1e7c4c16c964d7040b676d2eeb0ce4f94bed2e57e28f28a88768c8f934c" "checksum async-ready 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9470c79dd71fcd6090676d2ef90f45e9d357831234e8a1f70a1991093019bc27" -"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" "checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" -"checksum backtrace 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)" = "18b50f5258d1a9ad8396d2d345827875de4261b158124d4c819d9b351454fae5" -"checksum backtrace-sys 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)" = "5b3a000b9c543553af61bc01cbfc403b04b5caa9e421033866f2e98061eb3e61" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" -"checksum better-panic 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "734e15aeecdaead081b4b07364648ba6eb6ef94eedc6578a47b8a99879cc4597" "checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" "checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" @@ -1629,11 +1433,8 @@ dependencies = [ "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" -"checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d" "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" -"checksum clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "73abfd4c73d003a674ce5d2933fca6ce6c42480ea84a5ffe0a2dc39ed56300f9" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum console 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8ca57c2c14b8a2bf3105bc9d15574aad80babf6a9c44b1058034cdf8bd169628" "checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" "checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" @@ -1643,7 +1444,6 @@ dependencies = [ "checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" "checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" -"checksum encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90b2c9496c001e8cb61827acdefad780795c42264c137744cae6f7d9e3450abd" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" @@ -1679,7 +1479,6 @@ dependencies = [ "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" "checksum libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "6281b86796ba5e4366000be6e9e18bf35580adf9e63fbe2294aadb587613a319" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" -"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" @@ -1691,13 +1490,10 @@ dependencies = [ "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" -"checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" "checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" @@ -1720,8 +1516,6 @@ dependencies = [ "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 1.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1325e8a57b7da4cbcb38b3957112f729990bad0a18420e7e250ef6b1d9a15763" "checksum regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d76410686f9e3a17f06128962e0ecc5755870bb890c34820c7af7f1db2e1d48" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" "checksum romio 0.3.0-alpha.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5793a53bf62de2d49fc38552afa2f1422feb8cfd5bb9fdd9b1536f0c03dbeac1" @@ -1729,12 +1523,10 @@ dependencies = [ "checksum runtime-attributes 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ecbf89dcd4241edd7e82abc386201e20bd2a7b5057aeabaffe357430da5bcb51" "checksum runtime-native 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "cd600395f69c5a7b80089020c66bea5947e62e0cb288ba9ac10b9a72ff3a6cf4" "checksum runtime-raw 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7551354d1bc6a66c1d671000ea14dd360d23367ff803bd37bf91938c9a91fa0f" -"checksum rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f4dccf6f4891ebcc0c39f9b6eb1a83b9bf5d747cb439ec6fba4f3b977038af" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae" "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "076a696fdea89c19d3baed462576b8f6d663064414b5c793642da8dfeb99475b" @@ -1749,9 +1541,6 @@ dependencies = [ "checksum syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d960b829a55e56db167e861ddb43602c003c7be0bee1d345021703fac2fb7c" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" -"checksum termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a8fb22f7cde82c8220e5aeacb3258ed7ce996142c77cba193f203515e26c330" -"checksum termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625" -"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" "checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" "checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" @@ -1769,9 +1558,7 @@ dependencies = [ "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" "checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" -"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9d50aa7650df78abf942826607c62468ce18d9019673d4a2ebe1865dbb96ffde" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" "checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index f546e2a2..1f3ce92c 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -20,4 +20,3 @@ pin-utils = "0.1.0-alpha.4" [dev-dependencies] trybuild = "1" -better-panic = "0.1.1" From 2d5b168ec6532fab38f2b7edb5946452ac7e2876 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Fri, 5 Jul 2019 12:06:18 -0400 Subject: [PATCH 06/34] remove publicly exported `Error` type alias. --- lambda/examples/hello-with-ctx.rs | 3 ++- lambda/examples/hello-without-macro.rs | 4 +++- lambda/examples/hello.rs | 4 +++- lambda/src/lib.rs | 2 +- lambda/tests/ui/arg-plus-ctx.rs | 4 +++- lambda/tests/ui/arg.rs | 6 ++++-- 6 files changed, 16 insertions(+), 7 deletions(-) diff --git a/lambda/examples/hello-with-ctx.rs b/lambda/examples/hello-with-ctx.rs index cf57fa1a..b3966d62 100644 --- a/lambda/examples/hello-with-ctx.rs +++ b/lambda/examples/hello-with-ctx.rs @@ -1,6 +1,7 @@ #![feature(async_await)] -use lambda::{lambda, LambdaCtx, Error}; +use lambda::{lambda, LambdaCtx}; +type Error = Box; #[lambda] #[runtime::main] diff --git a/lambda/examples/hello-without-macro.rs b/lambda/examples/hello-without-macro.rs index 2f6dbca5..77f9a541 100644 --- a/lambda/examples/hello-without-macro.rs +++ b/lambda/examples/hello-without-macro.rs @@ -1,6 +1,8 @@ #![feature(async_await)] -use lambda::{handler_fn, LambdaCtx, Error}; +use lambda::{handler_fn, LambdaCtx}; + +type Error = Box; #[runtime::main] async fn main() -> Result<(), Error> { diff --git a/lambda/examples/hello.rs b/lambda/examples/hello.rs index 9b03b008..8c1d6d11 100644 --- a/lambda/examples/hello.rs +++ b/lambda/examples/hello.rs @@ -1,6 +1,8 @@ #![feature(async_await)] -use lambda::{lambda, Error}; +use lambda::lambda; + +type Error = Box; #[lambda] #[runtime::main] diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index c4326f58..d14c1fbb 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -48,7 +48,7 @@ pub mod error_hook; /// Types availible to a Lambda function. mod types; -pub type Error = Box; +type Error = Box; #[derive(Debug)] /// A string error, which can be display diff --git a/lambda/tests/ui/arg-plus-ctx.rs b/lambda/tests/ui/arg-plus-ctx.rs index 415d5b1a..c0441b73 100644 --- a/lambda/tests/ui/arg-plus-ctx.rs +++ b/lambda/tests/ui/arg-plus-ctx.rs @@ -1,6 +1,8 @@ #![feature(async_await, start)] -use lambda::{lambda, LambdaCtx, Error}; +use lambda::{lambda, LambdaCtx}; + +type Error = Box; #[lambda] #[runtime::main] diff --git a/lambda/tests/ui/arg.rs b/lambda/tests/ui/arg.rs index d0c90f24..8717f6aa 100644 --- a/lambda/tests/ui/arg.rs +++ b/lambda/tests/ui/arg.rs @@ -1,10 +1,12 @@ #![feature(async_await, start)] -use lambda::{lambda, Error}; +use lambda::lambda; + +type Error = Box; #[lambda] #[runtime::main] -async fn main(s: String) -> Result { +async fn main(s: String) -> Result { Ok(s) } From abdf54a4abb2b3789946c27a09413cf529934572 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Mon, 8 Jul 2019 13:07:29 -0700 Subject: [PATCH 07/34] fix silly type error --- lambda-attributes/src/lib.rs | 4 +++- lambda/tests/ui/arg.rs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lambda-attributes/src/lib.rs b/lambda-attributes/src/lib.rs index 1e977bb0..b29121af 100644 --- a/lambda-attributes/src/lib.rs +++ b/lambda-attributes/src/lib.rs @@ -45,9 +45,11 @@ pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { let arg_type = &event.ty; quote_spanned! { input.span() => + use lambda::LambdaCtx; + #(#attrs)* #asyncness fn main() { - async fn actual(#arg_name: #arg_type, ctx: Option) #ret { + async fn actual(#arg_name: #arg_type, ctx: Option) #ret { #body } let f = lambda::handler_fn(actual); diff --git a/lambda/tests/ui/arg.rs b/lambda/tests/ui/arg.rs index 8717f6aa..5134aca0 100644 --- a/lambda/tests/ui/arg.rs +++ b/lambda/tests/ui/arg.rs @@ -6,7 +6,7 @@ type Error = Box; #[lambda] #[runtime::main] -async fn main(s: String) -> Result { +async fn main(s: String) -> Result { Ok(s) } From a564dacd08dc1b0a93c7069506acaad125656cdc Mon Sep 17 00:00:00 2001 From: David Barsky Date: Wed, 14 Aug 2019 18:05:58 -0400 Subject: [PATCH 08/34] Language/ecosystem updates. - Switch to alpha tokio/hyper releases, as runtime is not working with recent releases of futures. - Remove error hook; rely on stabilized std::any::type_name instead. - update UI tests for tokio --- Cargo.lock | 550 +++---- lambda-attributes/Cargo.lock | 948 ------------ lambda-attributes/Cargo.toml | 4 - lambda/Cargo.lock | 1275 ----------------- lambda/Cargo.toml | 7 +- lambda/examples/hello-with-ctx.rs | 2 +- lambda/examples/hello-without-macro.rs | 2 +- lambda/examples/hello.rs | 2 +- lambda/src/client.rs | 24 +- lambda/src/error_hook.rs | 97 -- lambda/src/lib.rs | 54 +- lambda/tests/compile-fail/no-args.rs | 5 +- lambda/tests/compile-fail/no-args.stderr | 7 +- lambda/tests/compile-fail/non-async-main.rs | 5 +- .../tests/compile-fail/non-async-main.stderr | 7 +- lambda/tests/ui/arg-plus-ctx.rs | 2 +- lambda/tests/ui/arg.rs | 2 +- rust-toolchain | 1 - 18 files changed, 290 insertions(+), 2704 deletions(-) delete mode 100644 lambda-attributes/Cargo.lock delete mode 100644 lambda/Cargo.lock delete mode 100644 lambda/src/error_hook.rs delete mode 100644 rust-toolchain diff --git a/Cargo.lock b/Cargo.lock index ccb328af..57d87e93 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,21 +8,6 @@ dependencies = [ "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "async-datagram" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "async-datagram" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "async-ready" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "autocfg" version = "0.1.4" @@ -73,11 +58,6 @@ dependencies = [ "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "bumpalo" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "byte-tools" version = "0.3.1" @@ -94,7 +74,6 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -120,37 +99,12 @@ dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "crossbeam" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "crossbeam-channel" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-deque" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -200,11 +154,6 @@ dependencies = [ "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "either" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "fake-simd" version = "0.1.2" @@ -253,15 +202,6 @@ name = "futures-core-preview" version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "futures-cpupool" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "futures-executor-preview" version = "0.3.0-alpha.17" @@ -292,20 +232,22 @@ dependencies = [ ] [[package]] -name = "futures-sink-preview" +name = "futures-select-macro-preview" version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "futures-timer" -version = "0.2.1" +name = "futures-sink-preview" +version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -313,13 +255,16 @@ name = "futures-util-preview" version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-io-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-select-macro-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -425,12 +370,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hyper" -version = "0.12.31" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.13.0-a.0" +source = "git+https://github.com/hyperium/hyper#7f1b5f52ba3a5fd88582fe813a3a90006c2333b8" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -439,17 +385,18 @@ dependencies = [ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-buf 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.2.0 (git+https://github.com/seanmonstar/want?branch=std-future)", ] [[package]] @@ -471,25 +418,6 @@ name = "itoa" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "js-sys" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "juliex" -version = "0.3.0-alpha.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "kernel32-sys" version = "0.2.2" @@ -507,14 +435,13 @@ dependencies = [ "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.31 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.13.0-a.0 (git+https://github.com/hyperium/hyper)", "lambda-attributes 0.1.0", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", "trybuild 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -522,11 +449,9 @@ dependencies = [ name = "lambda-attributes" version = "0.1.0" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -545,11 +470,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lock_api" -version = "0.1.5" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -652,30 +576,25 @@ name = "opaque-debug" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "owning_ref" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parking_lot_core" -version = "0.4.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -691,6 +610,21 @@ name = "ppv-lite86" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "proc-macro-hack" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-nested" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "proc-macro2" version = "0.4.30" @@ -894,71 +828,6 @@ dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "romio" -version = "0.3.0-alpha.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-datagram 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "async-ready 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime" -version = "0.3.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-attributes 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-native 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-raw 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime-attributes" -version = "0.3.0-alpha.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime-native" -version = "0.3.0-alpha.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "juliex 0.3.0-alpha.7 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "romio 0.3.0-alpha.9 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-raw 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime-raw" -version = "0.3.0-alpha.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rustc_version" version = "0.2.3" @@ -988,6 +857,11 @@ name = "scopeguard" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "scopeguard" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "semver" version = "0.9.0" @@ -1055,11 +929,6 @@ name = "spin" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "stable_deref_trait" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "string" version = "0.2.1" @@ -1111,19 +980,28 @@ dependencies = [ [[package]] name = "tokio" -version = "0.1.22" +version = "0.2.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-macros 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1132,26 +1010,52 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-buf" +version = "0.2.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-codec" +version = "0.2.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-current-thread" -version = "0.1.6" +version = "0.2.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.1.8" +version = "0.2.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "tokio-fs" +version = "0.2.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1164,71 +1068,129 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-io" +version = "0.2.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-macros" +version = "0.2.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-reactor" -version = "0.1.9" +version = "0.2.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-sync" -version = "0.1.6" +version = "0.2.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-tcp" -version = "0.1.3" +version = "0.2.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-threadpool" -version = "0.1.15" +version = "0.2.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-timer" -version = "0.2.11" +version = "0.3.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-udp" +version = "0.2.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-uds" +version = "0.3.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1239,6 +1201,15 @@ dependencies = [ "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tracing-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "try-lock" version = "0.2.2" @@ -1296,71 +1267,12 @@ dependencies = [ [[package]] name = "want" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/seanmonstar/want?branch=std-future#23cd872e702704ff86d0936093b49a7c77c7de82" dependencies = [ - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "wasm-bindgen" -version = "0.2.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "wasm-bindgen-macro 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bumpalo 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.47" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi" version = "0.2.8" @@ -1418,9 +1330,6 @@ dependencies = [ [metadata] "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43d8594c35b0f8c540f322ac40fcf32536fa9fe41872ccf60b445a06a87fd1ae" -"checksum async-datagram 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ec4e1e7c4c16c964d7040b676d2eeb0ce4f94bed2e57e28f28a88768c8f934c" -"checksum async-ready 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9470c79dd71fcd6090676d2ef90f45e9d357831234e8a1f70a1991093019bc27" "checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" @@ -1428,22 +1337,18 @@ dependencies = [ "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09" -"checksum bumpalo 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2cd43d82f27d68911e6ee11ee791fb248f138f5d69424dc02e098d4f152b0b05" "checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" -"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" -"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" +"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" "checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" "checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" @@ -1452,12 +1357,11 @@ dependencies = [ "checksum futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "45dc39533a6cae6da2b56da48edae506bb767ec07370f86f70fc062e9d435869" "checksum futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "21c71ed547606de08e9ae744bb3c6d80f5627527ef31ecf2a7210d0e67bc8fae" "checksum futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4b141ccf9b7601ef987f36f1c0d9522f76df3bba1cf2e63bfacccc044c4558f5" -"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" "checksum futures-executor-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "87ba260fe51080ba37f063ad5b0732c4ff1f737ea18dcb67833d282cdc2c6f14" "checksum futures-io-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "082e402605fcb8b1ae1e5ba7d7fdfd3e31ef510e2a8367dd92927bb41ae41b3a" "checksum futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "bf25f91c8a9a1f64c451e91b43ba269ed359b9f52d35ed4b3ce3f9c842435867" +"checksum futures-select-macro-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "469d86239defe297ebcaf385ac5e999a77147f2f20eaf2a3aee7bff9e58e20a9" "checksum futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4309a25a1069a1f3c10647b227b9afe6722b67a030d3f00a9cbdc171fc038de4" -"checksum futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eb4a32e84935678650944c6ebd0d912db46405d37bf94f1a058435c5080abcb1" "checksum futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "af8198c48b222f02326940ce2b3aa9e6e91a32886eeaad7ca3b8e4c70daa3f4e" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" "checksum getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e65cce4e5084b14874c4e7097f38cab54f47ee554f9194673456ea379dcc4c55" @@ -1469,16 +1373,14 @@ dependencies = [ "checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" -"checksum hyper 0.12.31 (registry+https://github.com/rust-lang/crates.io-index)" = "6481fff8269772d4463253ca83c788104a7305cb3fb9136bc651a6211e46e03f" +"checksum hyper 0.13.0-a.0 (git+https://github.com/hyperium/hyper)" = "" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" -"checksum js-sys 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "eac16f41aa9b9388230b1d6617d7ed897a1af5416b8fe1c8734dcef79c7aae10" -"checksum juliex 0.3.0-alpha.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1c917bb13450f9999a24980cc13ac76e45d9af0f69e0228b503f68a3e1db4466" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" "checksum libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "6281b86796ba5e4366000be6e9e18bf35580adf9e63fbe2294aadb587613a319" -"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" +"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" @@ -1491,11 +1393,12 @@ dependencies = [ "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" "checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" -"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" -"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" +"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" +"checksum proc-macro-hack 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "982a35d1194084ba319d65c4a68d24ca28f5fdb5b8bc20899e4eef8641ea5178" +"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" @@ -1518,15 +1421,11 @@ dependencies = [ "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d76410686f9e3a17f06128962e0ecc5755870bb890c34820c7af7f1db2e1d48" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" -"checksum romio 0.3.0-alpha.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5793a53bf62de2d49fc38552afa2f1422feb8cfd5bb9fdd9b1536f0c03dbeac1" -"checksum runtime 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b3d96c8eb594e86b955056fbbfa337c02382e45f7ec80f78259ac133d3088508" -"checksum runtime-attributes 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ecbf89dcd4241edd7e82abc386201e20bd2a7b5057aeabaffe357430da5bcb51" -"checksum runtime-native 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "cd600395f69c5a7b80089020c66bea5947e62e0cb288ba9ac10b9a72ff3a6cf4" -"checksum runtime-raw 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7551354d1bc6a66c1d671000ea14dd360d23367ff803bd37bf91938c9a91fa0f" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae" "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" +"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "076a696fdea89c19d3baed462576b8f6d663064414b5c793642da8dfeb99475b" @@ -1536,23 +1435,30 @@ dependencies = [ "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" "checksum spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44363f6f51401c34e7be73db0db371c04705d35efbe9f7d6082e03a921a32c55" -"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" "checksum syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d960b829a55e56db167e861ddb43602c003c7be0bee1d345021703fac2fb7c" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" +"checksum tokio 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6320d5796f0e08444252f37de1e23dab529e6f7e662447a0e10e183d1cbda371" "checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" -"checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" -"checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" +"checksum tokio-buf 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f5c458f07a7f924b90782b70a188837084b029d4d32230d0004f779cef2e2af" +"checksum tokio-codec 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "60505acba66c2b46c475b682355967e270db2c0a200392ca2079d214f514935e" +"checksum tokio-current-thread 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ed30983efe64aa01758777622d70f45054802d959f02b7895b7245883699487" +"checksum tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e0937fcedb52baa1424b7483977ec1e387a75413c12abc232c3c092ed35f68d" +"checksum tokio-fs 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e96beb64c2b41f4a04b9a6f6834684b9582b3a75534279e6f93b6f91b163eac" "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" -"checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" -"checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7" -"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19" -"checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" +"checksum tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab1e0e025bd8193899c064a0b03d68bf7d599aaf6c4c2a62aa394bb0e476c1f7" +"checksum tokio-macros 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04da794609e1785ae8541a596891641897ae4693bb451cd1c91cd8ce965b36e6" +"checksum tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aea2939bfb43f47226624d08486855f022c015016f599bf541d85c28557efccc" +"checksum tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce3e512e9a367074a2a73fc2b48641e672eb572880b4e9c1eb01e7d1539f9694" +"checksum tokio-tcp 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e309cd85bf33849dd29cb4dbdcfaf087bc6ae69a58ba37a9c39d8457ee706a6" +"checksum tokio-threadpool 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2c3bb6766294ff0348ace4542ff49a4e2e951ffb54a3f90dcf060826fee499" +"checksum tokio-timer 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "45d6916b534f98c7a8a91bb4ecb6cc5f8d883d4025f67c856ef7fd21d78dc7b2" +"checksum tokio-udp 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e5e75ef9cddcc615b2499be3d3c223a3c426c2d7eaa6969c55ac3f63e1fd10" +"checksum tokio-uds 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "92a2aae41c36e1b2f8ff3fb3e518118ad2910214d97d706fc6c950b2da9430da" "checksum toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8c96d7873fa7ef8bdeb3a9cda3ac48389b4154f32b9803b4bc26220b677b039" +"checksum tracing-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a092e91612f25f6571c7bff934e1157b708f2b09e229fdc7760e791e1d2fd74f" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" "checksum trybuild 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b7592bfd3449da952920cb55618d55f34779293127f76d946c4a54f258ca87b8" "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" @@ -1561,13 +1467,7 @@ dependencies = [ "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" -"checksum wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "22029998cc650473cb05f10f19c06a1536b9e1f1572e4f5dacd45ab4d3f85877" -"checksum wasm-bindgen-backend 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "6f858ff3cb4196c702e8c24b75fba1d3ab46958de4f7c253627f0507aae1507c" -"checksum wasm-bindgen-futures 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "cc16facd42fc3d0fa0cae78b39516bac04496cf80518fd09bbfa33e9b0e9c92d" -"checksum wasm-bindgen-macro 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "15c29f04eb117312931e7b02878453ee63d67a6f291797651890128bf5ee71db" -"checksum wasm-bindgen-macro-support 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "92b1356b623816248dfe0e2c4b7e113618d647808907ff6a3d9838ebee8e82ee" -"checksum wasm-bindgen-shared 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "15de16ddb30cfd424a87598b30021491bae1607d32e52056979865c98b7913b4" +"checksum want 0.2.0 (git+https://github.com/seanmonstar/want?branch=std-future)" = "" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/lambda-attributes/Cargo.lock b/lambda-attributes/Cargo.lock deleted file mode 100644 index 329df9ac..00000000 --- a/lambda-attributes/Cargo.lock +++ /dev/null @@ -1,948 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "arrayvec" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "async-datagram" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "async-ready" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "autocfg" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "bitflags" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "bumpalo" -version = "2.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byteorder" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "bytes" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "cfg-if" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-channel" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-deque" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-utils" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures-channel-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-core-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures-executor-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-io-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-select-macro-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-sink-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-util-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-select-macro-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "glob" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "iovec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "itoa" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "js-sys" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "wasm-bindgen 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "juliex" -version = "0.3.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lambda-attributes" -version = "0.1.0" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", - "trybuild 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lazy_static" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "libc" -version = "0.2.55" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "lock_api" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "log" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "memchr" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "memoffset" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "mio" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "mio-uds" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "miow" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "net2" -version = "0.2.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "nodrop" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "num_cpus" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "owning_ref" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parking_lot" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parking_lot_core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "pin-utils" -version = "0.1.0-alpha.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "proc-macro-hack" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro-nested" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "quote" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "romio" -version = "0.3.0-alpha.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "async-ready 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime" -version = "0.3.0-alpha.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-attributes 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-native 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime-attributes" -version = "0.3.0-alpha.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime-native" -version = "0.3.0-alpha.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "juliex 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "romio 0.3.0-alpha.8 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime-raw" -version = "0.3.0-alpha.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ryu" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "scopeguard" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "serde" -version = "1.0.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_derive" -version = "1.0.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_json" -version = "1.0.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "smallvec" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "stable_deref_trait" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "syn" -version = "0.15.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "termcolor" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "toml" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "trybuild" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wasm-bindgen" -version = "0.2.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "wasm-bindgen-macro 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bumpalo 2.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.45" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wincolor" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[metadata] -"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43d8594c35b0f8c540f322ac40fcf32536fa9fe41872ccf60b445a06a87fd1ae" -"checksum async-ready 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb690f88f674eed5c82591f5bc74e97f0fe29393e39e3c3b18b451c92ab0e753" -"checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" -"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" -"checksum bumpalo 2.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "84dca3afd8e01b9526818b7963e5b4916063b3cdf9f10cf6b73ef0bd0ec37aa5" -"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" -"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" -"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" -"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" -"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" -"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" -"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "a2037ec1c6c1c4f79557762eab1f7eae1f64f6cb418ace90fae88f0942b60139" -"checksum futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4cd523712fc272e9b714669165a2832debee5a5b7e409bfccdc7c0d5cd0cf07a" -"checksum futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "719770f328642b657b849856bb5a607db9538dd5bb3000122e5ead55d0a58c36" -"checksum futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "315dc58c908535d059576a329b86cd185933433382cfcd394fb2fa353330de03" -"checksum futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "cca0bf7a1f39c9d32b797b0def93d5932aa71796236aad6b549bac6f7df159a3" -"checksum futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfeac5f016a4b5835bb93eb7961f50a64f0e001207562703d9ddf4109d7b263" -"checksum futures-select-macro-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "afee2644abc7c8a6529530bb20e044ace4b7dfc4df1c114614d1b458fc29f0b0" -"checksum futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "49dcfdacd6b5974ca0b9b78bc38ffd1071da0206179735c3df82e279f5b784e4" -"checksum futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "f7a0451b9c5047c2b9ab93425ffd0793165511e93c04b977cd45fbd41c6e34b2" -"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" -"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" -"checksum js-sys 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "9987e7c13a91d9cf0efe59cca48a3a7a70e2b11695d5a4640f85ae71e28f5e73" -"checksum juliex 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7ba5bc8e8d05cc0980ea90e146d2ffc0ad9634281ebb48e4edee411251184663" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" -"checksum libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)" = "42914d39aad277d9e176efbdad68acb1d5443ab65afe0e0e4f0d49352a950880" -"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" -"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" -"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" -"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" -"checksum mio 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)" = "9fbe95ae9216d99c944a1afa429fef2a2ed012b65b0840de5047a86a82969502" -"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" -"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" -"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" -"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" -"checksum proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0c1dd4172a1e1f96f709341418f49b11ea6c2d95d53dca08c0f74cbd332d9cf3" -"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" -"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum romio 0.3.0-alpha.8 (registry+https://github.com/rust-lang/crates.io-index)" = "e45fc890683557502157efb9479163ad7af2ea4bce850cbd1218926d89c13018" -"checksum runtime 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0a5bc0b95e096ced67025933b8cf3cffc0b6283d5c5591b5e8f2bcbdd2d69186" -"checksum runtime-attributes 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6da2562eb0f314b0494a81fcb4a741357683ba538b9f769167925a3953df2c2b" -"checksum runtime-native 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "acf5520e4f3d366498a968d746c276eee06d9c5fd6c553bd858437e052454976" -"checksum runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "134702e4a37a0b4386c07f97ca309cdefa213b4dfb3eeeee51aa28d3dbfa718d" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "b96a9549dc8d48f2c283938303c4b5a77aa29bfbc5b54b084fb1630408899a8f" -"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "a72e9b96fa45ce22a4bc23da3858dfccfd60acd28a25bcd328a98fdd6bea43fd" -"checksum serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "101b495b109a3e3ca8c4cbe44cf62391527cdfb6ba15821c5ce80bcd5ea23f9f" -"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" -"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" -"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)" = "a1393e4a97a19c01e900df2aec855a29f71cf02c402e2f443b8d2747c25c5dbe" -"checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" -"checksum toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8c96d7873fa7ef8bdeb3a9cda3ac48389b4154f32b9803b4bc26220b677b039" -"checksum trybuild 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0b0df728de48978b759da185ed7ef76676ef0c878ae4800c9e90024c998dc75b" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum wasm-bindgen 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "b7ccc7b93cfd13e26700a9e2e41e6305f1951b87e166599069f77d10358100e6" -"checksum wasm-bindgen-backend 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "1953f91b1608eb1522513623c7739f047bb0fed4128ce51a93f08e12cc314645" -"checksum wasm-bindgen-futures 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "fa1af11c73eca3dc8c51c76ea475a4416e912da6402064a49fc6c0214701866d" -"checksum wasm-bindgen-macro 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "0f69da5696545d7ca6607a2e4b1a0edf5a6b36b2c49dbb0f1df6ad1d92884047" -"checksum wasm-bindgen-macro-support 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "2d4246f3bc73223bbb846f4f2430a60725826a96c9389adf715ed1d5af46dec6" -"checksum wasm-bindgen-shared 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "c08381e07e7a79e5e229ad7c60d15833d19033542cc5dd91d085df59d235f4a6" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" -"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" diff --git a/lambda-attributes/Cargo.toml b/lambda-attributes/Cargo.toml index 5fc93a7a..cede1ad1 100644 --- a/lambda-attributes/Cargo.toml +++ b/lambda-attributes/Cargo.toml @@ -11,8 +11,4 @@ proc-macro = true syn = { version = "0.15.39", features = ["full"] } proc-macro2 = { version = "0.4.30", features = ["nightly"] } quote = "0.6.12" -bytes = "0.4.12" proptest = "0.9.3" - -[dev-dependencies] -runtime = "0.3.0-alpha.6" diff --git a/lambda/Cargo.lock b/lambda/Cargo.lock deleted file mode 100644 index 3013b93e..00000000 --- a/lambda/Cargo.lock +++ /dev/null @@ -1,1275 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "arrayvec" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "async-datagram" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "async-ready" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "autocfg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "backtrace" -version = "0.3.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "backtrace-sys" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "base64" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "bit-set" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "bit-vec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "bitflags" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "block-padding" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "bumpalo" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byteorder" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "bytes" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "cc" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "cfg-if" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-channel" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-deque" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-utils" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "digest" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "envy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "failure" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "failure_derive" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "fnv" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures-channel-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-core-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures-executor-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-io-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-select-macro-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-sink-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-util-preview" -version = "0.3.0-alpha.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-select-macro-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "generic-array" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "headers" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "headers-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "headers-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "headers-core" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "headers-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "http" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "iovec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "itoa" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "js-sys" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "wasm-bindgen 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "juliex" -version = "0.3.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lambda-attributes" -version = "0.1.0" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lambda-proto" -version = "0.1.0" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "envy 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "lambda-attributes 0.1.0", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proptest 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lazy_static" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "libc" -version = "0.2.54" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "lock_api" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "log" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "memchr" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "memoffset" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "mime" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "mio" -version = "0.6.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "mio-uds" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "miow" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "net2" -version = "0.2.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "nodrop" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "num-traits" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "num_cpus" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "opaque-debug" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "owning_ref" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parking_lot" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parking_lot_core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "pin-utils" -version = "0.1.0-alpha.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "proc-macro-hack" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro-nested" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proptest" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "quick-error" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "quote" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "redox_syscall" -version = "0.1.54" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "regex-syntax" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "remove_dir_all" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "romio" -version = "0.3.0-alpha.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "async-ready 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime" -version = "0.3.0-alpha.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-attributes 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-native 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime-attributes" -version = "0.3.0-alpha.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime-native" -version = "0.3.0-alpha.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", - "juliex 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "romio 0.3.0-alpha.8 (registry+https://github.com/rust-lang/crates.io-index)", - "runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "runtime-raw" -version = "0.3.0-alpha.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rusty-fork" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ryu" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "scopeguard" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "serde" -version = "1.0.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_derive" -version = "1.0.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_json" -version = "1.0.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "sha-1" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "smallvec" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "stable_deref_trait" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "syn" -version = "0.15.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "synstructure" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tempfile" -version = "3.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", - "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "time" -version = "0.1.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "typenum" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "ucd-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unicase" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "version_check" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wait-timeout" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "wasm-bindgen-macro 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bumpalo 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.44" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[metadata] -"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum async-datagram 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43d8594c35b0f8c540f322ac40fcf32536fa9fe41872ccf60b445a06a87fd1ae" -"checksum async-ready 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb690f88f674eed5c82591f5bc74e97f0fe29393e39e3c3b18b451c92ab0e753" -"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" -"checksum backtrace 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)" = "45934a579eff9fd0ff637ac376a4bd134f47f8fc603f0b211d696b54d61e35f1" -"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" -"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" -"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" -"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" -"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" -"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -"checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09" -"checksum bumpalo 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4639720be048090544634e0402490838995ccdc9d2fe648f528f30d3c33ae71f" -"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" -"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" -"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -"checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d" -"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" -"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" -"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" -"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" -"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" -"checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c" -"checksum envy 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "261b836bcf13f42a01c70351f56bd7b66db6e6fb58352bd214cb77e9269a34b4" -"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" -"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" -"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" -"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "a2037ec1c6c1c4f79557762eab1f7eae1f64f6cb418ace90fae88f0942b60139" -"checksum futures-channel-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4cd523712fc272e9b714669165a2832debee5a5b7e409bfccdc7c0d5cd0cf07a" -"checksum futures-core-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "719770f328642b657b849856bb5a607db9538dd5bb3000122e5ead55d0a58c36" -"checksum futures-executor-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "315dc58c908535d059576a329b86cd185933433382cfcd394fb2fa353330de03" -"checksum futures-io-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "cca0bf7a1f39c9d32b797b0def93d5932aa71796236aad6b549bac6f7df159a3" -"checksum futures-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfeac5f016a4b5835bb93eb7961f50a64f0e001207562703d9ddf4109d7b263" -"checksum futures-select-macro-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "afee2644abc7c8a6529530bb20e044ace4b7dfc4df1c114614d1b458fc29f0b0" -"checksum futures-sink-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "49dcfdacd6b5974ca0b9b78bc38ffd1071da0206179735c3df82e279f5b784e4" -"checksum futures-util-preview 0.3.0-alpha.16 (registry+https://github.com/rust-lang/crates.io-index)" = "f7a0451b9c5047c2b9ab93425ffd0793165511e93c04b977cd45fbd41c6e34b2" -"checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592" -"checksum headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6e2e51d356081258ef05ff4c648138b5d3fe64b7300aaad3b820554a2b7fb6" -"checksum headers-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51ae5b0b5417559ee1d2733b21d33b0868ae9e406bd32eb1a51d613f66ed472a" -"checksum headers-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97c462e8066bca4f0968ddf8d12de64c40f2c2187b3b9a2fa994d06e8ad444a9" -"checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" -"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" -"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" -"checksum js-sys 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)" = "825bc8ab4bd6a1f5c119f01400a6bcb8176e553c53f5be03ec5c5b874b8a6ca4" -"checksum juliex 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7ba5bc8e8d05cc0980ea90e146d2ffc0ad9634281ebb48e4edee411251184663" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" -"checksum libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "c6785aa7dd976f5fbf3b71cfd9cd49d7f783c1ff565a858d71031c6c313aa5c6" -"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" -"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" -"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" -"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" -"checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" -"checksum mio 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)" = "049ba5ca2b63e837adeee724aa9e36b408ed593529dcc802aa96ca14bd329bdf" -"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" -"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum num-traits 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d9c79c952a4a139f44a0fe205c4ee66ce239c0e6ce72cd935f5f7e2f717549dd" -"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" -"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" -"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" -"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" -"checksum proc-macro-hack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0c1dd4172a1e1f96f709341418f49b11ea6c2d95d53dca08c0f74cbd332d9cf3" -"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" -"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proptest 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2afed8cbdc8a64b58a5c021757a782351ec1afee85be374872721c84d5da5d80" -"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252" -"checksum regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dcfd8681eebe297b81d98498869d4aae052137651ad7b96822f09ceb690d0a96" -"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum romio 0.3.0-alpha.8 (registry+https://github.com/rust-lang/crates.io-index)" = "e45fc890683557502157efb9479163ad7af2ea4bce850cbd1218926d89c13018" -"checksum runtime 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0a5bc0b95e096ced67025933b8cf3cffc0b6283d5c5591b5e8f2bcbdd2d69186" -"checksum runtime-attributes 0.3.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6da2562eb0f314b0494a81fcb4a741357683ba538b9f769167925a3953df2c2b" -"checksum runtime-native 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "acf5520e4f3d366498a968d746c276eee06d9c5fd6c553bd858437e052454976" -"checksum runtime-raw 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "134702e4a37a0b4386c07f97ca309cdefa213b4dfb3eeeee51aa28d3dbfa718d" -"checksum rustc-demangle 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "ccc78bfd5acd7bf3e89cffcf899e5cb1a52d6fafa8dec2739ad70c9577a57288" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae" -"checksum ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "b96a9549dc8d48f2c283938303c4b5a77aa29bfbc5b54b084fb1630408899a8f" -"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "a72e9b96fa45ce22a4bc23da3858dfccfd60acd28a25bcd328a98fdd6bea43fd" -"checksum serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "101b495b109a3e3ca8c4cbe44cf62391527cdfb6ba15821c5ce80bcd5ea23f9f" -"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" -"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" -"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" -"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)" = "a1393e4a97a19c01e900df2aec855a29f71cf02c402e2f443b8d2747c25c5dbe" -"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" -"checksum tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7dc4738f2e68ed2855de5ac9cdbe05c9216773ecde4739b2f095002ab03a13ef" -"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" -"checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" -"checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -"checksum wasm-bindgen 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "df659e080ba2ee410d3651a84e33cc09f5bd355b0c6f014876502231f2f91659" -"checksum wasm-bindgen-backend 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "b7adec71077d40b84d771e5155aa3ca1985e1f5bcefb36cdae4157e670509ea4" -"checksum wasm-bindgen-futures 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)" = "9b1f125b44e5cfe2d0bdaed2c7db67c5060a0138e51f82409a750eea9c07b8e2" -"checksum wasm-bindgen-macro 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "d2182038ee8ee22c5f5653ab081d4970c054b435b4b513d587beaa7f95c9c277" -"checksum wasm-bindgen-macro-support 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "cc4b5cb4ac8bf9c516016f7f12b0b8fbcaf16c6a983bf438738ba165055c2b7b" -"checksum wasm-bindgen-shared 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "5617f78ef6ffc25f1e34130a9581cdd0d54b90000a9e8ac1e28a1cdc16ca65b3" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 1f3ce92c..3c2b397e 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -5,18 +5,17 @@ authors = ["David Barsky "] edition = "2018" [dependencies] -futures-preview = "0.3.0-alpha.16" -runtime = { version = "0.3.0-alpha.6" } +futures-preview = { version = "0.3.0-alpha.17", features = ["async-await", "nightly"] } +tokio = "0.2.0-alpha.1" http = "0.1.17" serde = { version = "1.0.91", features = ["derive"] } serde_json = "1.0.39" -hyper = { version = "0.12.31" } +hyper = { git = "https://github.com/hyperium/hyper" } proptest = "0.9.3" headers = "0.2.1" lazy_static = "1.3.0" bytes = "0.4.12" lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } -pin-utils = "0.1.0-alpha.4" [dev-dependencies] trybuild = "1" diff --git a/lambda/examples/hello-with-ctx.rs b/lambda/examples/hello-with-ctx.rs index b3966d62..72ab596d 100644 --- a/lambda/examples/hello-with-ctx.rs +++ b/lambda/examples/hello-with-ctx.rs @@ -4,7 +4,7 @@ use lambda::{lambda, LambdaCtx}; type Error = Box; #[lambda] -#[runtime::main] +#[tokio::main] async fn main(event: String, ctx: LambdaCtx) -> Result { let _ = ctx; Ok(event) diff --git a/lambda/examples/hello-without-macro.rs b/lambda/examples/hello-without-macro.rs index 77f9a541..4eee88af 100644 --- a/lambda/examples/hello-without-macro.rs +++ b/lambda/examples/hello-without-macro.rs @@ -4,7 +4,7 @@ use lambda::{handler_fn, LambdaCtx}; type Error = Box; -#[runtime::main] +#[tokio::main] async fn main() -> Result<(), Error> { let func = handler_fn(func); lambda::run(func).await?; diff --git a/lambda/examples/hello.rs b/lambda/examples/hello.rs index 8c1d6d11..f7243963 100644 --- a/lambda/examples/hello.rs +++ b/lambda/examples/hello.rs @@ -5,7 +5,7 @@ use lambda::lambda; type Error = Box; #[lambda] -#[runtime::main] +#[tokio::main] async fn main(event: String) -> Result { Ok(event) } diff --git a/lambda/src/client.rs b/lambda/src/client.rs index b838eaff..8f64d512 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -26,20 +26,11 @@ impl Client { fn set_origin(&self, req: Request) -> Result, Error> { let (mut parts, body) = req.into_parts(); let (scheme, authority) = { - let scheme = self - .base - .scheme_part() - .ok_or(err_fmt!("PathAndQuery not found"))?; - let authority = self - .base - .authority_part() - .ok_or(err_fmt!("PathAndQuery not found"))?; + let scheme = self.base.scheme_part().ok_or(err_fmt!("PathAndQuery not found"))?; + let authority = self.base.authority_part().ok_or(err_fmt!("PathAndQuery not found"))?; (scheme, authority) }; - let path = parts - .uri - .path_and_query() - .ok_or(err_fmt!("PathAndQuery not found"))?; + let path = parts.uri.path_and_query().ok_or(err_fmt!("PathAndQuery not found"))?; let uri = Uri::builder() .scheme(scheme.clone()) @@ -63,21 +54,16 @@ impl<'a> EventClient<'a> for Client { type Fut = BoxFuture<'a, Result, Error>>; fn call(&self, req: Request) -> Self::Fut { - use futures::compat::{Future01CompatExt, Stream01CompatExt}; - use pin_utils::pin_mut; - let req = { let (parts, body) = req.into_parts(); let body = Body::from(body); Request::from_parts(parts, body) }; let req = self.set_origin(req).unwrap(); - let res = self.client.request(req).compat(); + let res = self.client.request(req); let fut = async { let res = res.await?; - let (parts, body) = res.into_parts(); - let body = body.compat(); - pin_mut!(body); + let (parts, mut body) = res.into_parts(); let mut buf: Vec = vec![]; while let Some(Ok(chunk)) = body.next().await { diff --git a/lambda/src/error_hook.rs b/lambda/src/error_hook.rs deleted file mode 100644 index 79df3cbe..00000000 --- a/lambda/src/error_hook.rs +++ /dev/null @@ -1,97 +0,0 @@ -use std::{ - mem, ptr, - sync::atomic::{AtomicPtr, Ordering}, -}; - -use serde::{Deserialize, Serialize}; - -use crate::Error; - -static HOOK: AtomicPtr<()> = AtomicPtr::new(ptr::null_mut()); - -/// A computer-readable report of an unhandled error. -#[derive(Serialize, Deserialize, Debug, PartialEq)] -pub struct ErrorReport { - /// The type of the error passed to the Lambda APIs. - pub name: String, - /// The [std::fmt::Display] output of the error. - pub err: String, -} - -fn default_error_hook(err: Error) -> ErrorReport { - ErrorReport { - name: String::from("UnknownError"), - err: format!("{}", err), - } -} - -/// Transforms -/// -/// This function is called by the Lambda Runtime if an error is returned from a Handler. -/// This implementation is a near-direct copy of [`std::alloc::set_alloc_error_hook`], down -/// to the `transmute`. -pub(crate) fn generate_report(err: Error) -> ErrorReport { - let hook = HOOK.load(Ordering::SeqCst); - let hook: fn(Error) -> ErrorReport = if hook.is_null() { - default_error_hook - } else { - unsafe { mem::transmute(hook) } - }; - hook(err) -} - -/// Registers a custom error hook, replacing any that was previously registered. -/// -/// The Lambda error hook is invoked when a [`Handler`] or [`HttpHandler`] returns an error, but prior -/// to the runtime reporting the error to the Lambda Runtime APIs. This hook is intended to be used -/// by those interested in programatialy -/// -/// This function, in terms of intended usage and implementation, mimics [`std::alloc::set_alloc_error_hook`]. -/// -/// # Example -/// ``` -/// #![feature(async_await)] -/// -/// use lambda::{handler_fn, error_hook, LambdaCtx, Error}; -/// -/// #[runtime::main] -/// async fn main() -> Result<(), Error> { -/// let func = handler_fn(func); -/// error_hook::set_error_hook(error_hook); -/// lambda::run(func).await?; -/// Ok(()) -/// } -/// -/// async fn func(event: String, _ctx: LambdaCtx) -> Result { -/// Ok(event) -/// } -/// -/// fn error_hook(e: Error) -> error_hook::ErrorReport { -/// error_hook::ErrorReport{ -/// name: String::from("CustomError"), -/// err: format!("{}", e), -/// } -/// } -/// ``` -pub fn set_error_hook>(hook: fn(err: E) -> ErrorReport) { - HOOK.store(hook as *mut (), Ordering::SeqCst); -} - -#[test] -fn set_err_hook() { - use crate::err_fmt; - set_error_hook(|err: Error| { - if let Some(e) = err.downcast_ref::() { - ErrorReport { - name: String::from("std::io::Error"), - err: format!("{}", e), - } - } else { - default_error_hook(err) - } - }); - - let e = err_fmt!("An error"); - let e = generate_report(e.into()); - assert_eq!(String::from("UnknownError"), e.name) -} diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index d14c1fbb..70fb69eb 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -28,7 +28,7 @@ //! type Error = Box; //! //! #[lambda] -//! #[runtime::main] +//! #[tokio::main] //! async fn main(event: String) -> Result { //! Ok(event) //! } @@ -40,18 +40,16 @@ use futures::prelude::*; use http::{Method, Request, Response, Uri}; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; -use std::{convert::TryFrom, env}; +use std::{convert::TryFrom, env, error, fmt}; mod client; -/// Mechanism to provide a custom error reporting hook. -pub mod error_hook; /// Types availible to a Lambda function. mod types; type Error = Box; +/// a string error #[derive(Debug)] -/// A string error, which can be display pub(crate) struct StringError(pub String); impl std::error::Error for StringError {} @@ -136,7 +134,7 @@ pub fn handler_fn(f: Function) -> HandlerFn { } /// A `Handler` or `HttpHandler` implemented by a closure. -#[derive(Copy, Clone, Debug)] +#[derive(Clone, Debug)] pub struct HandlerFn { f: Function, } @@ -169,7 +167,7 @@ where /// /// use lambda::{handler_fn, LambdaCtx, Error}; /// -/// #[runtime::main] +/// #[tokio::main] /// async fn main() -> Result<(), Err> { /// let func = handler_fn(func); /// lambda::run(func).await?; @@ -180,15 +178,13 @@ where /// Ok(event) /// } /// ``` -pub async fn run( - mut handler: Function, -) -> Result<(), Error> +pub async fn run(mut handler: Function) -> Result<(), Error> where Function: Handler, Event: for<'de> Deserialize<'de>, Output: Serialize, { - let uri: Bytes = env::var("AWS_LAMBDA_RUNTIME_API")?.into(); + let uri = env::var("AWS_LAMBDA_RUNTIME_API")?.into(); let uri = Uri::from_shared(uri)?; let client = Client::new(uri); let mut stream = EventStream::new(&client); @@ -211,8 +207,7 @@ where client.call(req).await?; } Err(err) => { - let err = error_hook::generate_report(err.into()); - let err = serde_json::to_vec(&err)?; + let err = type_name_of_val(err); let uri = format!("/runtime/invocation/{}/error", &ctx.id).parse::()?; let req = Request::builder() .uri(uri) @@ -227,14 +222,37 @@ where Ok(()) } -#[runtime::test] +fn type_name_of_val(_: T) -> &'static str { + std::any::type_name::() +} + +#[derive(Debug, Clone)] +struct MyError; + +impl fmt::Display for MyError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "invalid first item to double") + } +} + +// This is important for other errors to wrap this one. +impl error::Error for MyError { + fn source(&self) -> Option<&(dyn error::Error + 'static)> { + // Generic error, underlying cause isn't tracked. + None + } +} + +#[tokio::test] async fn get_next() -> Result<(), Error> { - async fn test_fn(req: String, _ctx: Option) -> Result { - Ok(req) + fn test_fn() -> Result { + Err(MyError) } - let test_fn = handler_fn(test_fn); - let _ = run(test_fn).await?; + let res = test_fn(); + if let Err(e) = res { + println!("{}", type_name_of_val(e)); + } Ok(()) } diff --git a/lambda/tests/compile-fail/no-args.rs b/lambda/tests/compile-fail/no-args.rs index c61df043..a5f1515d 100644 --- a/lambda/tests/compile-fail/no-args.rs +++ b/lambda/tests/compile-fail/no-args.rs @@ -1,4 +1,7 @@ #![feature(async_await)] -#[lambda_attributes::lambda] +use lambda::lambda; + +#[lambda] +#[tokio::main] async fn main() {} diff --git a/lambda/tests/compile-fail/no-args.stderr b/lambda/tests/compile-fail/no-args.stderr index c49c4894..55fc18ba 100644 --- a/lambda/tests/compile-fail/no-args.stderr +++ b/lambda/tests/compile-fail/no-args.stderr @@ -1,11 +1,12 @@ error: The #[lambda] macro can accept one or two arguments. - --> $DIR/no-args.rs:3:1 + --> $DIR/no-args.rs:5:1 | -3 | #[lambda_attributes::lambda] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 | #[lambda] + | ^^^^^^^^^ error[E0601]: `main` function not found in crate `$CRATE` | = note: consider adding a `main` function to `$DIR/tests/compile-fail/no-args.rs` For more information about this error, try `rustc --explain E0601`. +error: Could not compile `lambda-tests`. diff --git a/lambda/tests/compile-fail/non-async-main.rs b/lambda/tests/compile-fail/non-async-main.rs index 83a1a0a2..7c90d241 100644 --- a/lambda/tests/compile-fail/non-async-main.rs +++ b/lambda/tests/compile-fail/non-async-main.rs @@ -1,2 +1,5 @@ -#[lambda_attributes::lambda] +use lambda::lambda; + +#[lambda] +#[tokio::main] fn main() {} diff --git a/lambda/tests/compile-fail/non-async-main.stderr b/lambda/tests/compile-fail/non-async-main.stderr index 5a6ad063..febbeddd 100644 --- a/lambda/tests/compile-fail/non-async-main.stderr +++ b/lambda/tests/compile-fail/non-async-main.stderr @@ -1,11 +1,12 @@ error: the async keyword is missing from the function declaration - --> $DIR/non-async-main.rs:2:1 + --> $DIR/non-async-main.rs:3:1 | -2 | fn main() {} - | ^^ +3 | #[lambda] + | ^^^^^^^^^ error[E0601]: `main` function not found in crate `$CRATE` | = note: consider adding a `main` function to `$DIR/tests/compile-fail/non-async-main.rs` For more information about this error, try `rustc --explain E0601`. +error: Could not compile `lambda-tests`. diff --git a/lambda/tests/ui/arg-plus-ctx.rs b/lambda/tests/ui/arg-plus-ctx.rs index c0441b73..4a1e3268 100644 --- a/lambda/tests/ui/arg-plus-ctx.rs +++ b/lambda/tests/ui/arg-plus-ctx.rs @@ -5,7 +5,7 @@ use lambda::{lambda, LambdaCtx}; type Error = Box; #[lambda] -#[runtime::main] +#[tokio::main] async fn main(s: String, ctx: LambdaCtx) -> Result { let _ = ctx; Ok(s) diff --git a/lambda/tests/ui/arg.rs b/lambda/tests/ui/arg.rs index 5134aca0..5557fefa 100644 --- a/lambda/tests/ui/arg.rs +++ b/lambda/tests/ui/arg.rs @@ -5,7 +5,7 @@ use lambda::lambda; type Error = Box; #[lambda] -#[runtime::main] +#[tokio::main] async fn main(s: String) -> Result { Ok(s) } diff --git a/rust-toolchain b/rust-toolchain deleted file mode 100644 index 9c2347a4..00000000 --- a/rust-toolchain +++ /dev/null @@ -1 +0,0 @@ -nightly-2019-07-05 From b7eb844e278e0cd74f611bb1397bcdc27f8c9f9a Mon Sep 17 00:00:00 2001 From: David Barsky Date: Thu, 22 Aug 2019 20:32:42 +0200 Subject: [PATCH 09/34] Remove #![feature(async_await)] --- Cargo.lock | 773 ++++++++++-------- lambda/Cargo.toml | 9 +- lambda/examples/hello-with-ctx.rs | 2 - lambda/examples/hello-without-macro.rs | 2 - lambda/examples/hello.rs | 2 - lambda/src/client.rs | 37 +- lambda/src/lib.rs | 26 +- lambda/src/types.rs | 5 +- lambda/tests/compile-fail/no-args.rs | 2 - lambda/tests/compile-fail/no-args.stderr | 5 +- lambda/tests/compile-fail/non-async-main.rs | 2 - .../tests/compile-fail/non-async-main.stderr | 11 +- lambda/tests/ui/arg-plus-ctx.rs | 2 +- lambda/tests/ui/arg.rs | 2 +- 14 files changed, 487 insertions(+), 393 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 57d87e93..5bf63dcb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,7 +2,7 @@ # It is not intended for manual editing. [[package]] name = "arrayvec" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -10,7 +10,7 @@ dependencies = [ [[package]] name = "autocfg" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -104,7 +104,7 @@ name = "crossbeam-channel" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -112,21 +112,21 @@ name = "crossbeam-deque" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-epoch" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -134,12 +134,12 @@ name = "crossbeam-queue" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-utils" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -190,79 +190,90 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-channel-preview" -version = "0.3.0-alpha.17" +version = "0.3.0-alpha.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-core-preview" -version = "0.3.0-alpha.17" +version = "0.3.0-alpha.18" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-executor-preview" -version = "0.3.0-alpha.17" +version = "0.3.0-alpha.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-io-preview" -version = "0.3.0-alpha.17" +version = "0.3.0-alpha.18" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures-join-macro-preview" +version = "0.3.0-alpha.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "futures-preview" -version = "0.3.0-alpha.17" +version = "0.3.0-alpha.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-select-macro-preview" -version = "0.3.0-alpha.17" +version = "0.3.0-alpha.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro-hack 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-sink-preview" -version = "0.3.0-alpha.17" +version = "0.3.0-alpha.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-util-preview" -version = "0.3.0-alpha.17" +version = "0.3.0-alpha.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-select-macro-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-join-macro-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-select-macro-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -278,11 +289,12 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -292,19 +304,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "h2" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.2.0-alpha.0" +source = "git+https://github.com/hyperium/h2#85b1f669c0f729f281f398e8a767cea69c1eefca" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -316,8 +328,8 @@ dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "headers-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "headers-derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", @@ -329,22 +341,22 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "headers-derive" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "http" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -359,7 +371,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -371,37 +383,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hyper" version = "0.13.0-a.0" -source = "git+https://github.com/hyperium/hyper#7f1b5f52ba3a5fd88582fe813a3a90006c2333b8" +source = "git+https://github.com/hyperium/hyper#7b1d6d71b7e15dfab47010a56a6ca295697dfe10" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.2.0-alpha.0 (git+https://github.com/hyperium/h2)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-buf 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.2.0 (git+https://github.com/seanmonstar/want?branch=std-future)", + "tokio 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-net 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tower-service 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "indexmap" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -409,7 +419,7 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -431,18 +441,17 @@ dependencies = [ name = "lambda" version = "0.1.0" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.13.0-a.0 (git+https://github.com/hyperium/hyper)", "lambda-attributes 0.1.0", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "trybuild 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "trybuild 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -451,8 +460,8 @@ version = "0.1.0" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -460,12 +469,12 @@ name = "lazy_static" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libc" -version = "0.2.58" +version = "0.2.62" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -478,7 +487,7 @@ dependencies = [ [[package]] name = "log" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -486,13 +495,16 @@ dependencies = [ [[package]] name = "memchr" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memoffset" -version = "0.2.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "mime" @@ -511,8 +523,8 @@ dependencies = [ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -525,7 +537,7 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -546,7 +558,7 @@ version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -560,7 +572,7 @@ name = "num-traits" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -568,12 +580,12 @@ name = "num_cpus" version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "opaque-debug" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -593,7 +605,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -612,12 +624,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro-hack" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -633,6 +645,14 @@ dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "proc-macro2" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "proptest" version = "0.9.4" @@ -647,7 +667,7 @@ dependencies = [ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -659,21 +679,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "quote" -version = "0.6.12" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "quote" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -688,9 +716,9 @@ name = "rand" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -700,16 +728,15 @@ name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_chacha" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -719,12 +746,12 @@ name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -732,7 +759,7 @@ name = "rand_core" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -764,8 +791,8 @@ name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -776,8 +803,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -787,8 +814,8 @@ name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -814,11 +841,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "regex-syntax" -version = "0.6.7" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "remove_dir_all" @@ -852,11 +876,6 @@ name = "ryu" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "scopeguard" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "scopeguard" version = "1.0.0" @@ -877,20 +896,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.94" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" -version = "1.0.94" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -900,7 +919,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -911,7 +930,7 @@ dependencies = [ "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -926,7 +945,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "spin" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -939,21 +958,31 @@ dependencies = [ [[package]] name = "syn" -version = "0.15.39" +version = "0.15.44" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "syn" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tempfile" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -965,7 +994,7 @@ name = "termcolor" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -973,35 +1002,48 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" -version = "0.2.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.2.0-alpha.2" +source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-executor 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-fs 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-io 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-macros 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-net 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-sync 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-timer 0.3.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio" +version = "0.2.0-alpha.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-macros 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-macros 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-net 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1014,200 +1056,256 @@ dependencies = [ ] [[package]] -name = "tokio-buf" -version = "0.2.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "tokio-codec" +version = "0.2.0-alpha.2" +source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", ] [[package]] name = "tokio-codec" -version = "0.2.0-alpha.1" +version = "0.2.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "tokio-current-thread" -version = "0.2.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "tokio-executor" +version = "0.2.0-alpha.2" +source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" dependencies = [ "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.2.0-alpha.1" +version = "0.2.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "tokio-fs" -version = "0.2.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.2.0-alpha.2" +source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" dependencies = [ - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-io 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", ] [[package]] name = "tokio-io" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.2.0-alpha.2" +source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" -version = "0.2.0-alpha.1" +version = "0.2.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-macros" +version = "0.2.0-alpha.2" +source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" +dependencies = [ + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-macros" -version = "0.2.0-alpha.1" +version = "0.2.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-net" +version = "0.2.0-alpha.2" +source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-executor 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-io 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-sync 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", ] [[package]] -name = "tokio-reactor" -version = "0.2.0-alpha.1" +name = "tokio-net" +version = "0.2.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-sync" -version = "0.2.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.2.0-alpha.2" +source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "tokio-tcp" -version = "0.2.0-alpha.1" +name = "tokio-sync" +version = "0.2.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "tokio-threadpool" -version = "0.2.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "tokio-timer" +version = "0.3.0-alpha.2" +source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" dependencies = [ - "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-sync 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", ] [[package]] name = "tokio-timer" -version = "0.3.0-alpha.1" +version = "0.3.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "tokio-udp" -version = "0.2.0-alpha.1" +name = "toml" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "tokio-uds" +name = "tower-service" version = "0.3.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "tracing" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing-attributes 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "toml" -version = "0.5.1" +name = "tracing-attributes" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tracing-core" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1217,15 +1315,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "trybuild" -version = "1.0.6" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1233,11 +1331,6 @@ name = "typenum" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ucd-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "unicase" version = "2.4.0" @@ -1251,6 +1344,11 @@ name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "unicode-xid" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "version_check" version = "0.1.5" @@ -1261,18 +1359,23 @@ name = "wait-timeout" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "want" -version = "0.2.0" -source = "git+https://github.com/seanmonstar/want?branch=std-future#23cd872e702704ff86d0936093b49a7c77c7de82" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "wasi" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "winapi" version = "0.2.8" @@ -1312,7 +1415,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wincolor" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1329,8 +1432,8 @@ dependencies = [ ] [metadata] -"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" +"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" +"checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" "checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" @@ -1345,9 +1448,9 @@ dependencies = [ "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" -"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" +"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" -"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" +"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" @@ -1355,35 +1458,36 @@ dependencies = [ "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "45dc39533a6cae6da2b56da48edae506bb767ec07370f86f70fc062e9d435869" -"checksum futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "21c71ed547606de08e9ae744bb3c6d80f5627527ef31ecf2a7210d0e67bc8fae" -"checksum futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4b141ccf9b7601ef987f36f1c0d9522f76df3bba1cf2e63bfacccc044c4558f5" -"checksum futures-executor-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "87ba260fe51080ba37f063ad5b0732c4ff1f737ea18dcb67833d282cdc2c6f14" -"checksum futures-io-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "082e402605fcb8b1ae1e5ba7d7fdfd3e31ef510e2a8367dd92927bb41ae41b3a" -"checksum futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "bf25f91c8a9a1f64c451e91b43ba269ed359b9f52d35ed4b3ce3f9c842435867" -"checksum futures-select-macro-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "469d86239defe297ebcaf385ac5e999a77147f2f20eaf2a3aee7bff9e58e20a9" -"checksum futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4309a25a1069a1f3c10647b227b9afe6722b67a030d3f00a9cbdc171fc038de4" -"checksum futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "af8198c48b222f02326940ce2b3aa9e6e91a32886eeaad7ca3b8e4c70daa3f4e" +"checksum futures-channel-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "f477fd0292c4a4ae77044454e7f2b413207942ad405f759bb0b4698b7ace5b12" +"checksum futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "4a2f26f774b81b3847dcda0c81bd4b6313acfb4f69e5a0390c7cb12c058953e9" +"checksum futures-executor-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "80705612926df8a1bc05f0057e77460e29318801f988bf7d803a734cf54e7528" +"checksum futures-io-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "ee7de0c1c9ed23f9457b0437fec7663ce64d9cc3c906597e714e529377b5ddd1" +"checksum futures-join-macro-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "1b151e04c412159cfe4ac5cd0d0bc037addda57f48c4d46d00152cfdae7e52d9" +"checksum futures-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "efa8f90c4fb2328e381f8adfd4255b4a2b696f77d1c63a3dee6700b564c4e4b5" +"checksum futures-select-macro-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "767dbbb9accba815dc1f327b20cbe932e42ef11668fe35764ed52f74c66a54c3" +"checksum futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "e9b65a2481863d1b78e094a07e9c0eed458cc7dc6e72b22b7138b8a67d924859" +"checksum futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "7df53daff1e98cc024bf2720f3ceb0414d96fbb0a94f3cad3a5c3bf3be1d261c" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -"checksum getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e65cce4e5084b14874c4e7097f38cab54f47ee554f9194673456ea379dcc4c55" +"checksum getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6171a6cc63fbabbe27c2b5ee268e8b7fe5dc1eb0dd2dfad537c1dfed6f69117e" "checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -"checksum h2 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "a539b63339fbbb00e081e84b6e11bd1d9634a82d91da2984a18ac74a8823f392" +"checksum h2 0.2.0-alpha.0 (git+https://github.com/hyperium/h2)" = "" "checksum headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6e2e51d356081258ef05ff4c648138b5d3fe64b7300aaad3b820554a2b7fb6" "checksum headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "967131279aaa9f7c20c7205b45a391638a83ab118e6509b2d0ccbe08de044237" -"checksum headers-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97c462e8066bca4f0968ddf8d12de64c40f2c2187b3b9a2fa994d06e8ad444a9" -"checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" +"checksum headers-derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f33cf300c485e3cbcba0235013fcc768723451c9b84d1b31aa7fec0491ac9a11" +"checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4" "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" "checksum hyper 0.13.0-a.0 (git+https://github.com/hyperium/hyper)" = "" -"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" +"checksum indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4d6d89e0948bf10c08b9ecc8ac5b83f07f857ebe2c0cbe38de15b4e4f510356" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" -"checksum libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "6281b86796ba5e4366000be6e9e18bf35580adf9e63fbe2294aadb587613a319" +"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" "checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" -"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" -"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" -"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" +"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" "checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" @@ -1392,23 +1496,25 @@ dependencies = [ "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" -"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" +"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" "checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" -"checksum proc-macro-hack 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "982a35d1194084ba319d65c4a68d24ca28f5fdb5b8bc20899e4eef8641ea5178" +"checksum proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e688f31d92ffd7c1ddc57a1b4e6d773c0f2a14ee437a4b0a4f5a69c80eb221c8" "checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +"checksum proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c5c2380ae88876faae57698be9e9775e3544decad214599c3a6266cca6ac802" "checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" +"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" "checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_chacha 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e193067942ef6f485a349a113329140d0ab9e2168ce92274499bb0e9a4190d9d" +"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" +"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" "checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" @@ -1419,60 +1525,65 @@ dependencies = [ "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" -"checksum regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d76410686f9e3a17f06128962e0ecc5755870bb890c34820c7af7f1db2e1d48" +"checksum regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b143cceb2ca5e56d5671988ef8b15615733e7ee16cd348e064333b251b89343f" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae" "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" -"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "076a696fdea89c19d3baed462576b8f6d663064414b5c793642da8dfeb99475b" -"checksum serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "ef45eb79d6463b22f5f9e16d283798b7c0175ba6050bc25c1a946c122727fe7b" +"checksum serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "fec2851eb56d010dc9a21b89ca53ee75e6528bab60c11e89d38390904982da9f" +"checksum serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "cb4dc18c61206b08dc98216c98faa0232f4337e1e1b8574551d5bad29ea1b425" "checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" "checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" -"checksum spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44363f6f51401c34e7be73db0db371c04705d35efbe9f7d6082e03a921a32c55" +"checksum spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbdb51a221842709c2dd65b62ad4b78289fc3e706a02c17a26104528b6aa7837" "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" -"checksum syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d960b829a55e56db167e861ddb43602c003c7be0bee1d345021703fac2fb7c" +"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +"checksum syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "158521e6f544e7e3dcfc370ac180794aa38cb34a1b1e07609376d4adcf429b93" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6320d5796f0e08444252f37de1e23dab529e6f7e662447a0e10e183d1cbda371" +"checksum tokio 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" +"checksum tokio 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc38954f527bff6150016d9d464bd624f89cb999a423e4e19cc4652bb503e8b" "checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" -"checksum tokio-buf 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f5c458f07a7f924b90782b70a188837084b029d4d32230d0004f779cef2e2af" -"checksum tokio-codec 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "60505acba66c2b46c475b682355967e270db2c0a200392ca2079d214f514935e" -"checksum tokio-current-thread 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ed30983efe64aa01758777622d70f45054802d959f02b7895b7245883699487" -"checksum tokio-executor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e0937fcedb52baa1424b7483977ec1e387a75413c12abc232c3c092ed35f68d" -"checksum tokio-fs 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e96beb64c2b41f4a04b9a6f6834684b9582b3a75534279e6f93b6f91b163eac" -"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" -"checksum tokio-io 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab1e0e025bd8193899c064a0b03d68bf7d599aaf6c4c2a62aa394bb0e476c1f7" -"checksum tokio-macros 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04da794609e1785ae8541a596891641897ae4693bb451cd1c91cd8ce965b36e6" -"checksum tokio-reactor 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aea2939bfb43f47226624d08486855f022c015016f599bf541d85c28557efccc" -"checksum tokio-sync 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce3e512e9a367074a2a73fc2b48641e672eb572880b4e9c1eb01e7d1539f9694" -"checksum tokio-tcp 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e309cd85bf33849dd29cb4dbdcfaf087bc6ae69a58ba37a9c39d8457ee706a6" -"checksum tokio-threadpool 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2c3bb6766294ff0348ace4542ff49a4e2e951ffb54a3f90dcf060826fee499" -"checksum tokio-timer 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "45d6916b534f98c7a8a91bb4ecb6cc5f8d883d4025f67c856ef7fd21d78dc7b2" -"checksum tokio-udp 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e5e75ef9cddcc615b2499be3d3c223a3c426c2d7eaa6969c55ac3f63e1fd10" -"checksum tokio-uds 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "92a2aae41c36e1b2f8ff3fb3e518118ad2910214d97d706fc6c950b2da9430da" -"checksum toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8c96d7873fa7ef8bdeb3a9cda3ac48389b4154f32b9803b4bc26220b677b039" -"checksum tracing-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a092e91612f25f6571c7bff934e1157b708f2b09e229fdc7760e791e1d2fd74f" +"checksum tokio-codec 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" +"checksum tokio-codec 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6ae83cd6b34943a67d563b8ecde8c8e74719db520c7d955f3c5ee5154e17dee" +"checksum tokio-executor 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" +"checksum tokio-executor 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b51b35d58733fff12d18a10f8541eb050e5d02149c91fe23a67ed36788754166" +"checksum tokio-fs 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" +"checksum tokio-io 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" +"checksum tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2372d5b0be0a5ca8e8c9be30abaccb91a712c0545f740a6e63c4c90ad1530ed3" +"checksum tokio-macros 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" +"checksum tokio-macros 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "72cb7202008f759bb78b96532cad9b3be20ae76ef45e13da42148fd12706cd12" +"checksum tokio-net 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" +"checksum tokio-net 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b20f29622c17152567f9b3ffeafda1148940491d4cdb916d3923e6fb2e586b0b" +"checksum tokio-sync 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" +"checksum tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "49924b9f0710d5e682feb252f664be7058c92d627c3f61873d90aa11ee393f7d" +"checksum tokio-timer 0.3.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" +"checksum tokio-timer 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f9c7a4d6ce2485cea52eba32cdd07603d797caefd12f8b6803ff929a9f2ce354" +"checksum toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7aabe75941d914b72bf3e5d3932ed92ce0664d49d8432305a8b547c37227724" +"checksum tower-service 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7bb202f83c619c74a3f9b5d6d508e9b703be59e86ab49a89adc7eafb1e822b83" +"checksum tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c42f6ea7b45c17427e628509f5fac99debf2869760c6248aa3f95fc035313ade" +"checksum tracing-attributes 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5b43a1835d0cb99f4a36fcdd0f777f72e4d4ff2eb6e78a0e105ac25e41309efa" +"checksum tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e94af5e2a5f1700cc58127f93d4b7e46c2b925856592066b9880aabce633b6d8" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" -"checksum trybuild 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b7592bfd3449da952920cb55618d55f34779293127f76d946c4a54f258ca87b8" +"checksum trybuild 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c718030bb5c88b65994c4200d929d10628d653c7798a35012f8ff4c4211624a8" "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" "checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -"checksum want 0.2.0 (git+https://github.com/seanmonstar/want?branch=std-future)" = "" +"checksum want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +"checksum wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd5442abcac6525a045cc8c795aedb60da7a2e5e89c7bf18a0d5357849bb23c7" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" +"checksum wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 3c2b397e..d7011752 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -5,16 +5,15 @@ authors = ["David Barsky "] edition = "2018" [dependencies] -futures-preview = { version = "0.3.0-alpha.17", features = ["async-await", "nightly"] } -tokio = "0.2.0-alpha.1" -http = "0.1.17" +futures-preview = { version = "0.3.0-alpha.18", features = ["async-await", "nightly"] } +tokio = { git = "https://github.com/tokio-rs/tokio" } +hyper = { git = "https://github.com/hyperium/hyper" } serde = { version = "1.0.91", features = ["derive"] } serde_json = "1.0.39" -hyper = { git = "https://github.com/hyperium/hyper" } proptest = "0.9.3" +http = "0.1.17" headers = "0.2.1" lazy_static = "1.3.0" -bytes = "0.4.12" lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } [dev-dependencies] diff --git a/lambda/examples/hello-with-ctx.rs b/lambda/examples/hello-with-ctx.rs index 72ab596d..f0eec312 100644 --- a/lambda/examples/hello-with-ctx.rs +++ b/lambda/examples/hello-with-ctx.rs @@ -1,5 +1,3 @@ -#![feature(async_await)] - use lambda::{lambda, LambdaCtx}; type Error = Box; diff --git a/lambda/examples/hello-without-macro.rs b/lambda/examples/hello-without-macro.rs index 4eee88af..fde295d2 100644 --- a/lambda/examples/hello-without-macro.rs +++ b/lambda/examples/hello-without-macro.rs @@ -1,5 +1,3 @@ -#![feature(async_await)] - use lambda::{handler_fn, LambdaCtx}; type Error = Box; diff --git a/lambda/examples/hello.rs b/lambda/examples/hello.rs index f7243963..58549494 100644 --- a/lambda/examples/hello.rs +++ b/lambda/examples/hello.rs @@ -1,5 +1,3 @@ -#![feature(async_await)] - use lambda::lambda; type Error = Box; diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 8f64d512..d798742d 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -1,5 +1,4 @@ use crate::{err_fmt, Error}; -use bytes::Bytes; use futures::{ future::BoxFuture, prelude::*, @@ -27,7 +26,7 @@ impl Client { let (mut parts, body) = req.into_parts(); let (scheme, authority) = { let scheme = self.base.scheme_part().ok_or(err_fmt!("PathAndQuery not found"))?; - let authority = self.base.authority_part().ok_or(err_fmt!("PathAndQuery not found"))?; + let authority = self.base.authority_part().ok_or(err_fmt!("Authority not found"))?; (scheme, authority) }; let path = parts.uri.path_and_query().ok_or(err_fmt!("PathAndQuery not found"))?; @@ -46,14 +45,14 @@ impl Client { /// A trait modeling interactions with the [Lambda Runtime API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html). pub(crate) trait EventClient<'a>: Send + Sync { /// A future containing the next event from the Lambda Runtime API. - type Fut: Future, Error>> + Send + 'a; - fn call(&self, req: Request) -> Self::Fut; + type Fut: Future>, Error>> + Send + 'a; + fn call(&self, req: Request>) -> Self::Fut; } impl<'a> EventClient<'a> for Client { - type Fut = BoxFuture<'a, Result, Error>>; + type Fut = BoxFuture<'a, Result>, Error>>; - fn call(&self, req: Request) -> Self::Fut { + fn call(&self, req: Request>) -> Self::Fut { let req = { let (parts, body) = req.into_parts(); let body = Body::from(body); @@ -63,15 +62,9 @@ impl<'a> EventClient<'a> for Client { let res = self.client.request(req); let fut = async { let res = res.await?; - let (parts, mut body) = res.into_parts(); - - let mut buf: Vec = vec![]; - while let Some(Ok(chunk)) = body.next().await { - let mut chunk: Vec = chunk.into_bytes().to_vec(); - buf.append(&mut chunk) - } - let buf = Bytes::from(buf); - let res = Response::from_parts(parts, buf); + let (parts, body) = res.into_parts(); + let body: Vec = body.try_concat().await?.to_vec(); + let res = Response::from_parts(parts, body); Ok(res) }; @@ -87,15 +80,15 @@ impl<'a> EventClient<'a> for Client { /// For Lambda functions that receive a “warm wakeup”—i.e., the function is /// readily available in the Lambda service's cache—this runtime is able /// to immediately fetch the next event. -pub(crate) struct EventStream<'a, T> +pub(crate) struct EventListener<'a, T> where T: EventClient<'a>, { - current: Option, Error>>>, + current: Option>, Error>>>, client: &'a T, } -impl<'a, T> EventStream<'a, T> +impl<'a, T> EventListener<'a, T> where T: EventClient<'a>, { @@ -106,22 +99,22 @@ where } } - pub(crate) fn next_event(&self) -> BoxFuture<'a, Result, Error>> { + pub(crate) fn next_event(&self) -> BoxFuture<'a, Result>, Error>> { let req = Request::builder() .method(Method::GET) .uri(Uri::from_static("/runtime/invocation/next")) - .body(Bytes::new()) + .body(Vec::new()) .unwrap(); Box::pin(self.client.call(req)) } } #[must_use = "streams do nothing unless you `.await` or poll them"] -impl<'a, T> Stream for EventStream<'a, T> +impl<'a, T> Stream for EventListener<'a, T> where T: EventClient<'a>, { - type Item = Result, Error>; + type Item = Result>, Error>; fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { // The `loop` is used to drive the inner future (`current`) to completion, advancing diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 70fb69eb..e658e9d5 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -1,4 +1,3 @@ -#![feature(async_await)] #![deny(clippy::all, clippy::pedantic, clippy::nursery, clippy::cargo)] #![warn(missing_docs, nonstandard_style, rust_2018_idioms)] @@ -23,8 +22,8 @@ //! of [`lambda::LambdaCtx`]. //! //! ```rust -//! #![feature(async_await)] -//! +//! use lambda::lambda; +//! //! type Error = Box; //! //! #[lambda] @@ -34,8 +33,7 @@ //! } //! ``` pub use crate::types::LambdaCtx; -use bytes::Bytes; -use client::{Client, EventClient, EventStream}; +use client::{Client, EventClient, EventListener}; use futures::prelude::*; use http::{Method, Request, Response, Uri}; pub use lambda_attributes::lambda; @@ -107,7 +105,7 @@ where Output: Serialize, { /// Errors returned by this handler. - type Err: Into; + type Err; /// The future response value of this handler. type Fut: Future>; /// Process the incoming event and return the response asynchronously. @@ -144,7 +142,6 @@ where Function: Fn(Event, Option) -> Fut, Event: for<'de> Deserialize<'de>, Output: Serialize, - Err: Into, Fut: Future> + Send, { type Err = Err; @@ -163,18 +160,19 @@ where /// /// # Example /// ```rust -/// #![feature(async_await)] /// -/// use lambda::{handler_fn, LambdaCtx, Error}; +/// use lambda::{handler_fn, LambdaCtx}; +/// +/// type Error = Box; /// /// #[tokio::main] -/// async fn main() -> Result<(), Err> { +/// async fn main() -> Result<(), Error> { /// let func = handler_fn(func); /// lambda::run(func).await?; /// Ok(()) /// } /// -/// async fn func(event: String, _ctx: LambdaCtx) -> Result { +/// async fn func(event: String, _ctx: Option) -> Result { /// Ok(event) /// } /// ``` @@ -187,7 +185,7 @@ where let uri = env::var("AWS_LAMBDA_RUNTIME_API")?.into(); let uri = Uri::from_shared(uri)?; let client = Client::new(uri); - let mut stream = EventStream::new(&client); + let mut stream = EventListener::new(&client); while let Some(event) = stream.next().await { let (parts, body) = event?.into_parts(); @@ -202,7 +200,7 @@ where let req = Request::builder() .uri(uri) .method(Method::POST) - .body(Bytes::from(res))?; + .body(res)?; client.call(req).await?; } @@ -212,7 +210,7 @@ where let req = Request::builder() .uri(uri) .method(Method::POST) - .body(Bytes::from(err))?; + .body(Vec::from(err))?; client.call(req).await?; } diff --git a/lambda/src/types.rs b/lambda/src/types.rs index 98eaa641..3dfda665 100644 --- a/lambda/src/types.rs +++ b/lambda/src/types.rs @@ -209,7 +209,6 @@ pub mod tests { ClientApplication, ClientContext, CognitoIdentity, FunctionArn, InvocationDeadline, MobileClientContext, MobileClientIdentity, RequestId, XRayTraceId, }; - use bytes::Bytes; use headers::{HeaderMap, HeaderMapExt}; use http::Response; use lambda_attributes::proptest; @@ -300,9 +299,9 @@ pub mod tests { }) } - fn gen_next_event() -> impl Strategy> { + fn gen_next_event() -> impl Strategy>> { gen_headers().prop_map(|headers| { - let mut resp = Response::new(Bytes::default()); + let mut resp = Response::new(Vec::default()); *resp.headers_mut() = headers; *resp.status_mut() = http::StatusCode::OK; resp diff --git a/lambda/tests/compile-fail/no-args.rs b/lambda/tests/compile-fail/no-args.rs index a5f1515d..ab690ad4 100644 --- a/lambda/tests/compile-fail/no-args.rs +++ b/lambda/tests/compile-fail/no-args.rs @@ -1,5 +1,3 @@ -#![feature(async_await)] - use lambda::lambda; #[lambda] diff --git a/lambda/tests/compile-fail/no-args.stderr b/lambda/tests/compile-fail/no-args.stderr index 55fc18ba..5dc2885d 100644 --- a/lambda/tests/compile-fail/no-args.stderr +++ b/lambda/tests/compile-fail/no-args.stderr @@ -1,7 +1,7 @@ error: The #[lambda] macro can accept one or two arguments. - --> $DIR/no-args.rs:5:1 + --> $DIR/no-args.rs:3:1 | -5 | #[lambda] +3 | #[lambda] | ^^^^^^^^^ error[E0601]: `main` function not found in crate `$CRATE` @@ -9,4 +9,3 @@ error[E0601]: `main` function not found in crate `$CRATE` = note: consider adding a `main` function to `$DIR/tests/compile-fail/no-args.rs` For more information about this error, try `rustc --explain E0601`. -error: Could not compile `lambda-tests`. diff --git a/lambda/tests/compile-fail/non-async-main.rs b/lambda/tests/compile-fail/non-async-main.rs index 7c90d241..16dfa77f 100644 --- a/lambda/tests/compile-fail/non-async-main.rs +++ b/lambda/tests/compile-fail/non-async-main.rs @@ -1,5 +1,3 @@ -use lambda::lambda; - #[lambda] #[tokio::main] fn main() {} diff --git a/lambda/tests/compile-fail/non-async-main.stderr b/lambda/tests/compile-fail/non-async-main.stderr index febbeddd..bb2b7503 100644 --- a/lambda/tests/compile-fail/non-async-main.stderr +++ b/lambda/tests/compile-fail/non-async-main.stderr @@ -1,12 +1,17 @@ error: the async keyword is missing from the function declaration --> $DIR/non-async-main.rs:3:1 | -3 | #[lambda] - | ^^^^^^^^^ +3 | fn main() {} + | ^^ + +error: cannot find attribute macro `lambda` in this scope + --> $DIR/non-async-main.rs:1:3 + | +1 | #[lambda] + | ^^^^^^ error[E0601]: `main` function not found in crate `$CRATE` | = note: consider adding a `main` function to `$DIR/tests/compile-fail/non-async-main.rs` For more information about this error, try `rustc --explain E0601`. -error: Could not compile `lambda-tests`. diff --git a/lambda/tests/ui/arg-plus-ctx.rs b/lambda/tests/ui/arg-plus-ctx.rs index 4a1e3268..4967c19e 100644 --- a/lambda/tests/ui/arg-plus-ctx.rs +++ b/lambda/tests/ui/arg-plus-ctx.rs @@ -1,4 +1,4 @@ -#![feature(async_await, start)] +#![feature(start)] use lambda::{lambda, LambdaCtx}; diff --git a/lambda/tests/ui/arg.rs b/lambda/tests/ui/arg.rs index 5557fefa..7b868996 100644 --- a/lambda/tests/ui/arg.rs +++ b/lambda/tests/ui/arg.rs @@ -1,4 +1,4 @@ -#![feature(async_await, start)] +#![feature(start)] use lambda::lambda; From 024730f2ceec45541612b6da5ca1851161881eb0 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Mon, 30 Sep 2019 20:29:08 -0400 Subject: [PATCH 10/34] update to latest syn + remove proptest dependency --- Cargo.lock | 376 +++++++++++++++-------------------- lambda-attributes/Cargo.toml | 4 +- lambda-attributes/src/lib.rs | 66 ++---- lambda/Cargo.toml | 10 +- lambda/src/types.rs | 2 +- 5 files changed, 184 insertions(+), 274 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5bf63dcb..a1f912e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,25 @@ dependencies = [ "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "async-stream" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "async-stream-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "async-stream-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "autocfg" version = "0.1.6" @@ -183,11 +202,6 @@ name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "futures" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "futures-channel-preview" version = "0.3.0-alpha.18" @@ -304,19 +318,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "h2" -version = "0.2.0-alpha.0" -source = "git+https://github.com/hyperium/h2#85b1f669c0f729f281f398e8a767cea69c1eefca" +version = "0.2.0-alpha.2" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -351,7 +368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -366,13 +383,11 @@ dependencies = [ [[package]] name = "http-body" -version = "0.1.0" +version = "0.2.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -382,29 +397,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hyper" -version = "0.13.0-a.0" -source = "git+https://github.com/hyperium/hyper#7b1d6d71b7e15dfab47010a56a6ca295697dfe10" +version = "0.13.0-alpha.2" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures-channel-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.2.0-alpha.0 (git+https://github.com/hyperium/h2)", + "h2 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "http-body 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.0-alpha.11 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-net 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-net 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tower-make 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", "tower-service 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -441,16 +457,18 @@ dependencies = [ name = "lambda" version = "0.1.0" dependencies = [ + "async-stream 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.13.0-a.0 (git+https://github.com/hyperium/hyper)", + "hyper 0.13.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", "lambda-attributes 0.1.0", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest 0.9.4 (git+https://github.com/davidbarsky/proptest)", + "proptest-attributes 0.1.0 (git+https://github.com/davidbarsky/proptest)", "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "trybuild 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -460,8 +478,8 @@ version = "0.1.0" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -612,6 +630,24 @@ dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "pin-project" +version = "0.4.0-alpha.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "pin-project-internal 0.4.0-alpha.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pin-project-internal" +version = "0.4.0-alpha.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "pin-utils" version = "0.1.0-alpha.4" @@ -629,7 +665,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -653,6 +689,25 @@ dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "proptest" +version = "0.9.4" +source = "git+https://github.com/davidbarsky/proptest#bf83ad19b2b4bf0be3ddcc360819ae2d8273f0bd" +dependencies = [ + "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "proptest" version = "0.9.4" @@ -672,6 +727,16 @@ dependencies = [ "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "proptest-attributes" +version = "0.1.0" +source = "git+https://github.com/davidbarsky/proptest#bf83ad19b2b4bf0be3ddcc360819ae2d8273f0bd" +dependencies = [ + "proptest 0.9.4 (git+https://github.com/davidbarsky/proptest)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "quick-error" version = "1.2.2" @@ -909,7 +974,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -968,7 +1033,7 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1009,80 +1074,41 @@ dependencies = [ [[package]] name = "tokio" -version = "0.2.0-alpha.2" -source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-executor 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-fs 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-io 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-macros 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-net 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-sync 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-timer 0.3.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio" -version = "0.2.0-alpha.2" +version = "0.2.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-macros 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-net 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-macros 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-net 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "tokio-buf" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "tokio-codec" -version = "0.2.0-alpha.2" -source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", -] - -[[package]] -name = "tokio-codec" -version = "0.2.0-alpha.2" +version = "0.2.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.2.0-alpha.2" -source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" +version = "0.2.0-alpha.5" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1093,109 +1119,48 @@ dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "tokio-executor" -version = "0.2.0-alpha.2" +name = "tokio-fs" +version = "0.2.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-fs" -version = "0.2.0-alpha.2" -source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" -dependencies = [ - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-io 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" -version = "0.2.0-alpha.2" -source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-io" -version = "0.2.0-alpha.2" +version = "0.2.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.0-alpha.11 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-macros" -version = "0.2.0-alpha.2" -source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" -dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-macros" -version = "0.2.0-alpha.2" +version = "0.2.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-net" -version = "0.2.0-alpha.2" -source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-executor 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-io 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-sync 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", -] - -[[package]] -name = "tokio-net" -version = "0.2.0-alpha.2" +version = "0.2.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1206,32 +1171,21 @@ dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-sync" -version = "0.2.0-alpha.2" -source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" -dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-sync" -version = "0.2.0-alpha.2" +version = "0.2.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1242,36 +1196,32 @@ dependencies = [ [[package]] name = "tokio-timer" -version = "0.3.0-alpha.2" -source = "git+https://github.com/tokio-rs/tokio#654f9d703f8ad55e6d5651ba1c47ca23fa641fd3" +version = "0.3.0-alpha.5" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", - "tokio-sync 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)", + "tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "tokio-timer" -version = "0.3.0-alpha.2" +name = "toml" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "toml" -version = "0.5.3" +name = "tower-make" +version = "0.3.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tower-service 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1285,6 +1235,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "tracing-attributes 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1296,7 +1247,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1433,6 +1384,8 @@ dependencies = [ [metadata] "checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" +"checksum async-stream 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "650be9b667e47506c42ee53034fb1935443cb2447a3a5c0a75e303d2e756fa73" +"checksum async-stream-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f0d8c5b411e36dcfb04388bacfec54795726b1f0148adcb0f377a96d6747e0e" "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" @@ -1457,7 +1410,6 @@ dependencies = [ "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "45dc39533a6cae6da2b56da48edae506bb767ec07370f86f70fc062e9d435869" "checksum futures-channel-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "f477fd0292c4a4ae77044454e7f2b413207942ad405f759bb0b4698b7ace5b12" "checksum futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "4a2f26f774b81b3847dcda0c81bd4b6313acfb4f69e5a0390c7cb12c058953e9" "checksum futures-executor-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "80705612926df8a1bc05f0057e77460e29318801f988bf7d803a734cf54e7528" @@ -1470,14 +1422,14 @@ dependencies = [ "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" "checksum getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6171a6cc63fbabbe27c2b5ee268e8b7fe5dc1eb0dd2dfad537c1dfed6f69117e" "checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -"checksum h2 0.2.0-alpha.0 (git+https://github.com/hyperium/h2)" = "" +"checksum h2 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "862ef1cfbdec4f06e660525baa695758028c7e4b56e271b95e72c8b652449fe8" "checksum headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6e2e51d356081258ef05ff4c648138b5d3fe64b7300aaad3b820554a2b7fb6" "checksum headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "967131279aaa9f7c20c7205b45a391638a83ab118e6509b2d0ccbe08de044237" "checksum headers-derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f33cf300c485e3cbcba0235013fcc768723451c9b84d1b31aa7fec0491ac9a11" "checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4" -"checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" +"checksum http-body 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1bc8dfa1f6155eadd665d39458a6c1a2c37bbd372a053383a4245775a0d9d98a" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" -"checksum hyper 0.13.0-a.0 (git+https://github.com/hyperium/hyper)" = "" +"checksum hyper 0.13.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0808cc9f4342dc1389de9bc3b75c43cc030ccd2ebc5accc630d8acc1f0d25ae6" "checksum indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4d6d89e0948bf10c08b9ecc8ac5b83f07f857ebe2c0cbe38de15b4e4f510356" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" @@ -1499,13 +1451,17 @@ dependencies = [ "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" "checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" +"checksum pin-project 0.4.0-alpha.11 (registry+https://github.com/rust-lang/crates.io-index)" = "a3ce8c130b2e0afb654677f8cfda5e943a6f757143e8fa3a5157a62018bf9ba3" +"checksum pin-project-internal 0.4.0-alpha.11 (registry+https://github.com/rust-lang/crates.io-index)" = "fe620a84170595be8c1554f05068c42c8858b1cd031f5175040c5171cf97e944" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e688f31d92ffd7c1ddc57a1b4e6d773c0f2a14ee437a4b0a4f5a69c80eb221c8" "checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c5c2380ae88876faae57698be9e9775e3544decad214599c3a6266cca6ac802" +"checksum proptest 0.9.4 (git+https://github.com/davidbarsky/proptest)" = "" "checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" +"checksum proptest-attributes 0.1.0 (git+https://github.com/davidbarsky/proptest)" = "" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" @@ -1542,29 +1498,21 @@ dependencies = [ "checksum spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbdb51a221842709c2dd65b62ad4b78289fc3e706a02c17a26104528b6aa7837" "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -"checksum syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "158521e6f544e7e3dcfc370ac180794aa38cb34a1b1e07609376d4adcf429b93" +"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" -"checksum tokio 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc38954f527bff6150016d9d464bd624f89cb999a423e4e19cc4652bb503e8b" -"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" -"checksum tokio-codec 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" -"checksum tokio-codec 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6ae83cd6b34943a67d563b8ecde8c8e74719db520c7d955f3c5ee5154e17dee" -"checksum tokio-executor 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" -"checksum tokio-executor 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b51b35d58733fff12d18a10f8541eb050e5d02149c91fe23a67ed36788754166" -"checksum tokio-fs 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" -"checksum tokio-io 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" -"checksum tokio-io 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2372d5b0be0a5ca8e8c9be30abaccb91a712c0545f740a6e63c4c90ad1530ed3" -"checksum tokio-macros 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" -"checksum tokio-macros 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "72cb7202008f759bb78b96532cad9b3be20ae76ef45e13da42148fd12706cd12" -"checksum tokio-net 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" -"checksum tokio-net 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b20f29622c17152567f9b3ffeafda1148940491d4cdb916d3923e6fb2e586b0b" -"checksum tokio-sync 0.2.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" -"checksum tokio-sync 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "49924b9f0710d5e682feb252f664be7058c92d627c3f61873d90aa11ee393f7d" -"checksum tokio-timer 0.3.0-alpha.2 (git+https://github.com/tokio-rs/tokio)" = "" -"checksum tokio-timer 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f9c7a4d6ce2485cea52eba32cdd07603d797caefd12f8b6803ff929a9f2ce354" +"checksum tokio 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "556fe6824daa18951835d467ecdc7110a204decfa219483c853d3dbb0014d177" +"checksum tokio-codec 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7ec28841e343a014165411c3b8a70125d8f9cc871b063b9ef1982da09eb88c4d" +"checksum tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b7c590b4dc15f97437e5711a355ef3273f43db0e564dfdee5d3f4dc688e827d0" +"checksum tokio-fs 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d35b519737eb8a363b6daf1b907d7c0bd27c6c7b6b0422f18c006b203adfb523" +"checksum tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0aeaf26040975e7073240933f6048ea845fc0d2f814f89544a8d68a9c487b882" +"checksum tokio-macros 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b02b0260e8187159159c191c8de31725274b2d37ddb7a7efed4b22988b35ac45" +"checksum tokio-net 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "812d4903f9b6e91ca1d3fb9e2acb30f5c0881502f5410b9c947136aa8f3d9a6b" +"checksum tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8acfd5281a590399968771fb03ee104be3df2519fbca609c0a38c467458e1467" +"checksum tokio-timer 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6dfc753b6771a6aff4de8ea6a704044488d2c2918e161a0266a8eb7ad53a1a2e" "checksum toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7aabe75941d914b72bf3e5d3932ed92ce0664d49d8432305a8b547c37227724" +"checksum tower-make 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ffa9f6bc2a4e4541c0f53aa3a27d571602ebba500b77613ec3bf7753e5a8e036" "checksum tower-service 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7bb202f83c619c74a3f9b5d6d508e9b703be59e86ab49a89adc7eafb1e822b83" "checksum tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c42f6ea7b45c17427e628509f5fac99debf2869760c6248aa3f95fc035313ade" "checksum tracing-attributes 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5b43a1835d0cb99f4a36fcdd0f777f72e4d4ff2eb6e78a0e105ac25e41309efa" diff --git a/lambda-attributes/Cargo.toml b/lambda-attributes/Cargo.toml index cede1ad1..955aeb07 100644 --- a/lambda-attributes/Cargo.toml +++ b/lambda-attributes/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" proc-macro = true [dependencies] -syn = { version = "0.15.39", features = ["full"] } proc-macro2 = { version = "0.4.30", features = ["nightly"] } -quote = "0.6.12" +syn = { version = "1.0.5", features = ["full"] } +quote = "1" proptest = "0.9.3" diff --git a/lambda-attributes/src/lib.rs b/lambda-attributes/src/lib.rs index b29121af..f4f7ac19 100644 --- a/lambda-attributes/src/lib.rs +++ b/lambda-attributes/src/lib.rs @@ -1,20 +1,20 @@ extern crate proc_macro; use proc_macro::TokenStream; -use quote::{quote, quote_spanned}; -use syn::{spanned::Spanned, Expr, FnArg, ItemFn}; +use quote::{quote_spanned}; +use syn::{spanned::Spanned, FnArg, ItemFn}; #[cfg(not(test))] #[proc_macro_attribute] pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { let input = syn::parse_macro_input!(item as ItemFn); - let ret = &input.decl.output; - let name = &input.ident; + let ret = &input.sig.output; + let name = &input.sig.ident; let body = &input.block; let attrs = &input.attrs; - let asyncness = &input.asyncness; - let inputs = &input.decl.inputs; + let asyncness = &input.sig.asyncness; + let inputs = &input.sig.inputs; if name != "main" { let tokens = quote_spanned! { name.span() => @@ -32,11 +32,11 @@ pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { let result = match inputs.len() { 1 => { - let event = match inputs.first().unwrap().into_value() { - FnArg::Captured(arg) => arg, + let event = match inputs.first().unwrap() { + FnArg::Typed(arg) => arg, _ => { let tokens = quote_spanned! { inputs.span() => - compile_error!("fn main should take a fully formed argument"); + compile_error!("fn main must take a fully formed argument"); }; return TokenStream::from(tokens); } @@ -59,8 +59,8 @@ pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { } } 2 => { - let event = match inputs.first().unwrap().into_value() { - FnArg::Captured(arg) => arg, + let event = match inputs.first().unwrap() { + FnArg::Typed(arg) => arg, _ => { let tokens = quote_spanned! { inputs.span() => compile_error!("fn main should take a fully formed argument"); @@ -69,7 +69,7 @@ pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { } }; let ctx = match &inputs[1] { - FnArg::Captured(arg) => arg, + FnArg::Typed(arg) => arg, _ => { let tokens = quote_spanned! { inputs.span() => compile_error!("fn main should take a fully formed argument"); @@ -103,44 +103,4 @@ pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { }; result.into() -} - -#[proc_macro_attribute] -pub fn proptest(attr: TokenStream, item: TokenStream) -> TokenStream { - let input = syn::parse_macro_input!(item as ItemFn); - let call = syn::parse_macro_input!(attr as Expr); - - let ret = &input.decl.output; - let name = &input.ident; - let body = &input.block; - let attrs = &input.attrs; - let inputs = &input.decl.inputs; - - match inputs.len() { - 1 => { - let arg = match inputs.first().unwrap().into_value() { - FnArg::Captured(arg) => arg, - _ => { - let tokens = quote_spanned! { inputs.span() => - compile_error!("fn main should take a fully formed argument"); - }; - return TokenStream::from(tokens); - } - }; - let arg_name = &arg.pat; - quote! { - #[test] - #(#attrs)* - fn #name() #ret { - proptest::proptest!(|(#arg_name in #call)| { - #body - }) - } - } - } - _ => { - unimplemented!(); - } - } - .into() -} +} \ No newline at end of file diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index d7011752..205489a9 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -6,14 +6,16 @@ edition = "2018" [dependencies] futures-preview = { version = "0.3.0-alpha.18", features = ["async-await", "nightly"] } -tokio = { git = "https://github.com/tokio-rs/tokio" } -hyper = { git = "https://github.com/hyperium/hyper" } -serde = { version = "1.0.91", features = ["derive"] } +tokio = { version = "0.2.0-alpha.5" } +hyper = { version = "0.13.0-alpha.2", features = ["unstable-stream"] } +async-stream = "0.1" +serde = { version = "1", features = ["derive"] } serde_json = "1.0.39" -proptest = "0.9.3" http = "0.1.17" headers = "0.2.1" lazy_static = "1.3.0" +proptest = { git = "https://github.com/davidbarsky/proptest" } +proptest-attributes = { git = "https://github.com/davidbarsky/proptest" } lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } [dev-dependencies] diff --git a/lambda/src/types.rs b/lambda/src/types.rs index 3dfda665..8bef24d4 100644 --- a/lambda/src/types.rs +++ b/lambda/src/types.rs @@ -211,7 +211,7 @@ pub mod tests { }; use headers::{HeaderMap, HeaderMapExt}; use http::Response; - use lambda_attributes::proptest; + use proptest_attributes::proptest; use proptest::{collection, option, prelude::*, strategy::Strategy, string::string_regex}; fn gen_request_id() -> impl Strategy { From 12a105034c6bee2c52970625c236ceb6242b29fb Mon Sep 17 00:00:00 2001 From: David Barsky Date: Mon, 30 Sep 2019 20:32:19 -0400 Subject: [PATCH 11/34] rename generics --- lambda/src/lib.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index e658e9d5..a15ca3e0 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -98,22 +98,22 @@ impl Config { } } -/// A trait describing an asynchronous function from `Event` to `Output`. `Event` and `Output` must implement [`Deserialize`](serde::Deserialize) and [`Serialize`](serde::Serialize). -pub trait Handler +/// A trait describing an asynchronous function from `A` to `R`. `A` and `R` must implement [`Deserialize`](serde::Deserialize) and [`Serialize`](serde::Serialize). +pub trait Handler where - Event: for<'de> Deserialize<'de>, - Output: Serialize, + A: for<'de> Deserialize<'de>, + R: Serialize, { /// Errors returned by this handler. type Err; /// The future response value of this handler. - type Fut: Future>; + type Fut: Future>; /// Process the incoming event and return the response asynchronously. /// /// # Arguments /// * `event` - The data received in the invocation request /// * `ctx` - The context for the current invocation - fn call(&mut self, event: Event, ctx: Option) -> Self::Fut; + fn call(&mut self, event: A, ctx: Option) -> Self::Fut; } /// A trait describing an asynchronous function from `Request` to `Response`. `A` and `B` must implement [`Deserialize`](serde::Deserialize) and [`Serialize`](serde::Serialize). From 8233a68077569188619275232a599bb6e9457fe4 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Fri, 11 Oct 2019 14:28:25 -0400 Subject: [PATCH 12/34] errors + external proptest dep --- Cargo.lock | 35 ++++++ lambda-attributes/src/lib.rs | 5 +- lambda/Cargo.toml | 2 + lambda/src/client.rs | 207 +++++++++++++++++------------------ lambda/src/lib.rs | 49 +++++---- lambda/src/types.rs | 5 +- 6 files changed, 168 insertions(+), 135 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a1f912e5..e20f7e36 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -178,6 +178,25 @@ name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "fehler" +version = "1.0.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fehler-macros 1.0.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fehler-macros" +version = "1.0.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "fnv" version = "1.0.6" @@ -458,6 +477,8 @@ name = "lambda" version = "0.1.0" dependencies = [ "async-stream 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "fehler 1.0.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1041,6 +1062,17 @@ dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "synstructure" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tempfile" version = "3.1.0" @@ -1406,6 +1438,8 @@ dependencies = [ "checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +"checksum fehler 1.0.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e9a0a1815ba9017feca740d3da9674406542239e4247ba2cc150065b8ed4c3f5" +"checksum fehler-macros 1.0.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5bbf037357d996f10d5a43105a66150da8e4ef3bd494c67a84c42d7d5af8a7f4" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" @@ -1499,6 +1533,7 @@ dependencies = [ "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" "checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" +"checksum synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f085a5855930c0441ca1288cf044ea4aecf4f43a91668abdb870b4ba546a203" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" diff --git a/lambda-attributes/src/lib.rs b/lambda-attributes/src/lib.rs index f4f7ac19..f1dac268 100644 --- a/lambda-attributes/src/lib.rs +++ b/lambda-attributes/src/lib.rs @@ -1,7 +1,7 @@ extern crate proc_macro; use proc_macro::TokenStream; -use quote::{quote_spanned}; +use quote::quote_spanned; use syn::{spanned::Spanned, FnArg, ItemFn}; #[cfg(not(test))] @@ -53,7 +53,6 @@ pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { #body } let f = lambda::handler_fn(actual); - lambda::run(f).await.unwrap(); } } @@ -103,4 +102,4 @@ pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { }; result.into() -} \ No newline at end of file +} diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 205489a9..93192cca 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -11,6 +11,8 @@ hyper = { version = "0.13.0-alpha.2", features = ["unstable-stream"] } async-stream = "0.1" serde = { version = "1", features = ["derive"] } serde_json = "1.0.39" +fehler = "1.0.0-alpha.1" +bytes = "0.4" http = "0.1.17" headers = "0.2.1" lazy_static = "1.3.0" diff --git a/lambda/src/client.rs b/lambda/src/client.rs index d798742d..5e004f9d 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -1,28 +1,97 @@ -use crate::{err_fmt, Error}; -use futures::{ - future::BoxFuture, - prelude::*, - task::{Context, Poll}, -}; -use http::{Method, Request, Response, Uri}; +use crate::err_fmt; +use async_stream::try_stream; +use fehler::Exception; +use futures::prelude::*; +use http::{Method, Request, Response, Uri, uri::PathAndQuery}; use hyper::Body; -use std::pin::Pin; +use serde::{Serialize, Deserialize}; +use bytes::Bytes; -#[derive(Debug)] -pub(crate) struct Client { +#[derive(Debug, Clone)] +pub struct Client { base: Uri, client: hyper::Client, } +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +struct LambdaError { + error_type: String, + error_message: String, +} + +#[derive(Debug, PartialEq)] +struct InitializationErrorRequest { + path: PathAndQuery, + error: LambdaError +} + +impl InitializationErrorRequest { + fn new(error: LambdaError) -> Self { + Self { + path: PathAndQuery::from_static("/runtime/init/error"), + error, + } + } +} + +#[derive(Debug, PartialEq)] +struct InvocationOkRequest { + path: PathAndQuery, + body: Vec, +} + +impl InvocationOkRequest { + fn new(request_id: String, body: Vec) -> Self { + let path = format!("/runtime/invocation/{}/response", request_id); + let path = PathAndQuery::from_shared(Bytes::from(path)).expect("Unable to construct PathAndQuery"); + Self { + path, + body + } + } +} +#[derive(Debug, PartialEq)] +struct InvocationErrorRequest { + path: PathAndQuery, + error: LambdaError +} + +impl InvocationErrorRequest { + fn new(request_id: String, error: LambdaError) -> Self { + let path = format!("/runtime/invocation/{}/error", request_id); + let path = PathAndQuery::from_shared(Bytes::from(path)).expect("Unable to construct PathAndQuery"); + Self { + path, + error + } + } +} + +#[test] +fn round_trip_lambda_error() -> Result<(), Exception> { + use serde_json::{json, from_value, to_value, Value}; + let expected = json!({ + "errorMessage" : "Error parsing event data.", + "errorType" : "InvalidEventDataException" + }); + + let actual: LambdaError = from_value(expected.clone())?; + let actual: Value = to_value(actual)?; + assert_eq!(expected, actual); + + Ok(()) +} + impl Client { - pub(crate) fn new(uri: Uri) -> Self { + pub fn new(base: Uri) -> Self { Self { - base: uri, + base, client: hyper::Client::new(), } } - fn set_origin(&self, req: Request) -> Result, Error> { + fn set_origin(&self, req: Request>) -> Result>, Exception> { let (mut parts, body) = req.into_parts(); let (scheme, authority) = { let scheme = self.base.scheme_part().ok_or(err_fmt!("PathAndQuery not found"))?; @@ -40,107 +109,27 @@ impl Client { parts.uri = uri; Ok(Request::from_parts(parts, body)) } -} - -/// A trait modeling interactions with the [Lambda Runtime API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html). -pub(crate) trait EventClient<'a>: Send + Sync { - /// A future containing the next event from the Lambda Runtime API. - type Fut: Future>, Error>> + Send + 'a; - fn call(&self, req: Request>) -> Self::Fut; -} - -impl<'a> EventClient<'a> for Client { - type Fut = BoxFuture<'a, Result>, Error>>; - - fn call(&self, req: Request>) -> Self::Fut { - let req = { - let (parts, body) = req.into_parts(); - let body = Body::from(body); - Request::from_parts(parts, body) - }; - let req = self.set_origin(req).unwrap(); - let res = self.client.request(req); - let fut = async { - let res = res.await?; - let (parts, body) = res.into_parts(); - let body: Vec = body.try_concat().await?.to_vec(); - let res = Response::from_parts(parts, body); - Ok(res) - }; - fut.boxed() + pub async fn call(&mut self, req: Request>) -> Result, Exception> { + let req = self.set_origin(req)?; + let (parts, body) = req.into_parts(); + let body = Body::from(body); + let req = Request::from_parts(parts, body); + self.client.request(req).await.map_err(Into::into) } } -/// The `Stream` implementation for `EventStream` converts a `Future` -/// containing the next event from the Lambda Runtime into a continuous -/// stream of events. While _this_ stream will continue to produce -/// events indefinitely, AWS Lambda will only run the Lambda function attached -/// to this runtime *if and only if* there is an event available for it to process. -/// For Lambda functions that receive a “warm wakeup”—i.e., the function is -/// readily available in the Lambda service's cache—this runtime is able -/// to immediately fetch the next event. -pub(crate) struct EventListener<'a, T> -where - T: EventClient<'a>, -{ - current: Option>, Error>>>, - client: &'a T, -} - -impl<'a, T> EventListener<'a, T> -where - T: EventClient<'a>, -{ - pub(crate) fn new(inner: &'a T) -> Self { - Self { - current: None, - client: inner, - } - } - - pub(crate) fn next_event(&self) -> BoxFuture<'a, Result>, Error>> { - let req = Request::builder() - .method(Method::GET) - .uri(Uri::from_static("/runtime/invocation/next")) - .body(Vec::new()) - .unwrap(); - Box::pin(self.client.call(req)) - } -} - -#[must_use = "streams do nothing unless you `.await` or poll them"] -impl<'a, T> Stream for EventListener<'a, T> -where - T: EventClient<'a>, -{ - type Item = Result>, Error>; - - fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - // The `loop` is used to drive the inner future (`current`) to completion, advancing - // the state of this stream to yield a new `Item`. Loops like the one below are - // common in many hand-implemented `Futures` and `Streams`. +pub fn events(client: Client) -> impl Stream, Exception>> { + try_stream! { + let mut client = client; loop { - // The stream first checks an inner future is set. If the future is present, - // a runtime polls the inner future to completion. - if let Some(current) = &mut self.current { - match current.as_mut().poll(cx) { - // If the inner future signals readiness, we: - // 1. Create a new Future that represents the _next_ event which will be polled - // by subsequent iterations of this loop. - // 2. Return the current future, yielding the resolved future. - Poll::Ready(res) => { - let next = self.next_event(); - self.current = Some(Box::pin(next)); - return Poll::Ready(Some(res)); - } - // Otherwise, the future signals that it's not ready, so we propagate the - // Poll::Pending signal to the caller. - Poll::Pending => return Poll::Pending, - } - } else { - self.current = Some(self.next_event()); - } + let req = Request::builder() + .method(Method::GET) + .uri(Uri::from_static("/runtime/invocation/next")) + .body(Vec::new()) + .expect("Unable to construct request."); + let event = client.call(req).await?; + yield event; } } } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index a15ca3e0..b0aa7dfc 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -15,7 +15,7 @@ //! //! An asynchronous function annotated with the `#[lambda]` attribute must //! accept an argument of type `A` which implements [`serde::Deserialize`] and -//! return a `Result`, where `B` implements [serde::Serializable]. `E` is +//! return a `Result`, where `B` implements [`serde::Serializable`]. `E` is //! any type that implements `Into>`. //! //! Optionally, the `#[lambda]` annotated function can accept an argument @@ -23,7 +23,7 @@ //! //! ```rust //! use lambda::lambda; -//! +//! //! type Error = Box; //! //! #[lambda] @@ -33,8 +33,9 @@ //! } //! ``` pub use crate::types::LambdaCtx; -use client::{Client, EventClient, EventListener}; -use futures::prelude::*; +use client::{events, Client}; +use fehler::{Error, Exception}; +use futures::{pin_mut, prelude::*}; use http::{Method, Request, Response, Uri}; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; @@ -44,8 +45,6 @@ mod client; /// Types availible to a Lambda function. mod types; -type Error = Box; - /// a string error #[derive(Debug)] pub(crate) struct StringError(pub String); @@ -58,6 +57,18 @@ impl std::fmt::Display for StringError { } } +macro_rules! null_display { + ($t:ty) => { impl fmt::Display for $t { + fn fmt(&self, _: &mut fmt::Formatter) -> fmt::Result { Ok(()) } + } }; +} + +#[derive(PartialEq, Debug, Error)] +pub(crate) enum RuntimeError { + +} +null_display!(RuntimeError); + #[doc(hidden)] #[macro_export] macro_rules! err_fmt { @@ -85,7 +96,7 @@ pub struct Config { impl Config { /// Attempts to read configuration from environment variables. - pub fn from_env() -> Result { + pub fn from_env() -> Result { let conf = Config { endpoint: env::var("AWS_LAMBDA_RUNTIME_API")?, function_name: env::var("AWS_LAMBDA_FUNCTION_NAME")?, @@ -162,7 +173,7 @@ where /// ```rust /// /// use lambda::{handler_fn, LambdaCtx}; -/// +/// /// type Error = Box; /// /// #[tokio::main] @@ -176,7 +187,7 @@ where /// Ok(event) /// } /// ``` -pub async fn run(mut handler: Function) -> Result<(), Error> +pub async fn run(mut handler: Function) -> Result<(), Exception> where Function: Handler, Event: for<'de> Deserialize<'de>, @@ -184,33 +195,29 @@ where { let uri = env::var("AWS_LAMBDA_RUNTIME_API")?.into(); let uri = Uri::from_shared(uri)?; - let client = Client::new(uri); - let mut stream = EventListener::new(&client); + let mut client = Client::new(uri); + let stream = events(client.clone()); + pin_mut!(stream); while let Some(event) = stream.next().await { let (parts, body) = event?.into_parts(); let mut ctx: LambdaCtx = LambdaCtx::try_from(parts.headers)?; ctx.env_config = Config::from_env()?; + let body = body.try_concat().await?; let body = serde_json::from_slice(&body)?; match handler.call(body, Some(ctx.clone())).await { Ok(res) => { - let res = serde_json::to_vec(&res)?; + let body = serde_json::to_vec(&res)?; let uri = format!("/runtime/invocation/{}/response", &ctx.id).parse::()?; - let req = Request::builder() - .uri(uri) - .method(Method::POST) - .body(res)?; + let req = Request::builder().uri(uri).method(Method::POST).body(body)?; client.call(req).await?; } Err(err) => { let err = type_name_of_val(err); let uri = format!("/runtime/invocation/{}/error", &ctx.id).parse::()?; - let req = Request::builder() - .uri(uri) - .method(Method::POST) - .body(Vec::from(err))?; + let req = Request::builder().uri(uri).method(Method::POST).body(Vec::from(err))?; client.call(req).await?; } @@ -242,7 +249,7 @@ impl error::Error for MyError { } #[tokio::test] -async fn get_next() -> Result<(), Error> { +async fn get_next() -> Result<(), Exception> { fn test_fn() -> Result { Err(MyError) } diff --git a/lambda/src/types.rs b/lambda/src/types.rs index 8bef24d4..96e3ceff 100644 --- a/lambda/src/types.rs +++ b/lambda/src/types.rs @@ -1,4 +1,5 @@ use crate::{err_fmt, Config}; +use fehler::Exception; use headers::{Header, HeaderMap, HeaderMapExt, HeaderName, HeaderValue}; use lazy_static::lazy_static; use serde::{Deserialize, Serialize}; @@ -180,7 +181,7 @@ pub struct LambdaCtx { } impl TryFrom> for LambdaCtx { - type Error = crate::Error; + type Error = Exception; fn try_from(value: HeaderMap) -> Result { let request_id = value.typed_get::().ok_or(err_fmt!("RequestId not found"))?; @@ -211,8 +212,8 @@ pub mod tests { }; use headers::{HeaderMap, HeaderMapExt}; use http::Response; - use proptest_attributes::proptest; use proptest::{collection, option, prelude::*, strategy::Strategy, string::string_regex}; + use proptest_attributes::proptest; fn gen_request_id() -> impl Strategy { let expr = "[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}"; From d31200d0da34b0de9d29113b68ae0b22fb9c8b50 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Tue, 26 Nov 2019 10:35:26 -0500 Subject: [PATCH 13/34] dedicated request types --- .rustfmt.toml | 5 +- Cargo.lock | 388 +++++++++++++++-------------------- lambda-attributes/Cargo.toml | 3 +- lambda/Cargo.toml | 9 +- lambda/src/client.rs | 70 ++++--- lambda/src/lib.rs | 88 ++++++-- lambda/src/requests.rs | 127 ++++++++++++ lambda/src/types.rs | 37 ++-- 8 files changed, 434 insertions(+), 293 deletions(-) create mode 100644 lambda/src/requests.rs diff --git a/.rustfmt.toml b/.rustfmt.toml index 4df947e3..15813b06 100644 --- a/.rustfmt.toml +++ b/.rustfmt.toml @@ -1,4 +1,5 @@ +edition = "2018" # https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#merge_imports -merge_imports = true +# merge_imports = true # https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#max_width -max_width = 120 \ No newline at end of file +# max_width = 120 \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index e20f7e36..25d76787 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,10 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +[[package]] +name = "anyhow" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "arrayvec" version = "0.4.11" @@ -10,11 +15,11 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "async-stream-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -178,25 +183,6 @@ name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "fehler" -version = "1.0.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "fehler-macros 1.0.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fehler-macros" -version = "1.0.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "fnv" version = "1.0.6" @@ -223,92 +209,88 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-channel-preview" -version = "0.3.0-alpha.18" +version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-core-preview" -version = "0.3.0-alpha.18" +version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-executor-preview" -version = "0.3.0-alpha.18" +version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-io-preview" -version = "0.3.0-alpha.18" +version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-join-macro-preview" -version = "0.3.0-alpha.18" +version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-preview" -version = "0.3.0-alpha.18" +version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-channel-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-select-macro-preview" -version = "0.3.0-alpha.18" +version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-sink-preview" -version = "0.3.0-alpha.18" +version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "futures-util-preview" -version = "0.3.0-alpha.18" +version = "0.3.0-alpha.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-channel-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-join-macro-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-select-macro-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-join-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-select-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -337,22 +319,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "h2" -version = "0.2.0-alpha.2" +version = "0.2.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -402,7 +384,7 @@ dependencies = [ [[package]] name = "http-body" -version = "0.2.0-alpha.1" +version = "0.2.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -416,31 +398,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hyper" -version = "0.13.0-alpha.2" +version = "0.13.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.2.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "http-body 0.2.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.0-alpha.11 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-net 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-make 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-service 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-net 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tower-make 0.3.0-alpha.2a (registry+https://github.com/rust-lang/crates.io-index)", + "tower-service 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -476,20 +458,21 @@ dependencies = [ name = "lambda" version = "0.1.0" dependencies = [ - "async-stream 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "async-stream 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "fehler 1.0.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.13.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.13.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "lambda-attributes 0.1.0", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.4 (git+https://github.com/davidbarsky/proptest)", "proptest-attributes 0.1.0 (git+https://github.com/davidbarsky/proptest)", "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "trybuild 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -498,7 +481,6 @@ name = "lambda-attributes" version = "0.1.0" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -653,15 +635,15 @@ dependencies = [ [[package]] name = "pin-project" -version = "0.4.0-alpha.11" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "pin-project-internal 0.4.0-alpha.11 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-internal 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pin-project-internal" -version = "0.4.0-alpha.11" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -729,25 +711,6 @@ dependencies = [ "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "proptest" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "proptest-attributes" version = "0.1.0" @@ -763,14 +726,6 @@ name = "quick-error" version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "quote" version = "1.0.2" @@ -1042,16 +997,6 @@ dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "syn" version = "1.0.5" @@ -1062,17 +1007,6 @@ dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "synstructure" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "tempfile" version = "3.1.0" @@ -1094,6 +1028,24 @@ dependencies = [ "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "thiserror" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "thiserror-impl 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "time" version = "0.1.42" @@ -1106,84 +1058,83 @@ dependencies = [ [[package]] name = "tokio" -version = "0.2.0-alpha.5" +version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-macros 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-net 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-macros 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-net 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-codec" -version = "0.2.0-alpha.5" +version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.2.0-alpha.5" +version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-fs" -version = "0.2.0-alpha.5" +version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" -version = "0.2.0-alpha.5" +version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.0-alpha.11 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-macros" -version = "0.2.0-alpha.5" +version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1192,14 +1143,14 @@ dependencies = [ [[package]] name = "tokio-net" -version = "0.2.0-alpha.5" +version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1208,35 +1159,35 @@ dependencies = [ "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-sync" -version = "0.2.0-alpha.5" +version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-timer" -version = "0.3.0-alpha.5" +version = "0.3.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1249,16 +1200,16 @@ dependencies = [ [[package]] name = "tower-make" -version = "0.3.0-alpha.2" +version = "0.3.0-alpha.2a" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-service 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tower-service 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tower-service" -version = "0.3.0-alpha.1" +version = "0.3.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1415,8 +1366,9 @@ dependencies = [ ] [metadata] +"checksum anyhow 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "e19f23ab207147bbdbcdfa7f7e4ca5e84963d79bae3937074682177ab9150968" "checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" -"checksum async-stream 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "650be9b667e47506c42ee53034fb1935443cb2447a3a5c0a75e303d2e756fa73" +"checksum async-stream 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fb6fa015ebe961e9908ca4c1854e7dc7aabd4417da77b6a0466e4dfb4c8f6f69" "checksum async-stream-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f0d8c5b411e36dcfb04388bacfec54795726b1f0148adcb0f377a96d6747e0e" "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" @@ -1438,32 +1390,30 @@ dependencies = [ "checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum fehler 1.0.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e9a0a1815ba9017feca740d3da9674406542239e4247ba2cc150065b8ed4c3f5" -"checksum fehler-macros 1.0.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5bbf037357d996f10d5a43105a66150da8e4ef3bd494c67a84c42d7d5af8a7f4" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures-channel-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "f477fd0292c4a4ae77044454e7f2b413207942ad405f759bb0b4698b7ace5b12" -"checksum futures-core-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "4a2f26f774b81b3847dcda0c81bd4b6313acfb4f69e5a0390c7cb12c058953e9" -"checksum futures-executor-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "80705612926df8a1bc05f0057e77460e29318801f988bf7d803a734cf54e7528" -"checksum futures-io-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "ee7de0c1c9ed23f9457b0437fec7663ce64d9cc3c906597e714e529377b5ddd1" -"checksum futures-join-macro-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "1b151e04c412159cfe4ac5cd0d0bc037addda57f48c4d46d00152cfdae7e52d9" -"checksum futures-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "efa8f90c4fb2328e381f8adfd4255b4a2b696f77d1c63a3dee6700b564c4e4b5" -"checksum futures-select-macro-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "767dbbb9accba815dc1f327b20cbe932e42ef11668fe35764ed52f74c66a54c3" -"checksum futures-sink-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "e9b65a2481863d1b78e094a07e9c0eed458cc7dc6e72b22b7138b8a67d924859" -"checksum futures-util-preview 0.3.0-alpha.18 (registry+https://github.com/rust-lang/crates.io-index)" = "7df53daff1e98cc024bf2720f3ceb0414d96fbb0a94f3cad3a5c3bf3be1d261c" +"checksum futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263a" +"checksum futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "b35b6263fb1ef523c3056565fa67b1d16f0a8604ff12b11b08c25f28a734c60a" +"checksum futures-executor-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "75236e88bd9fe88e5e8bfcd175b665d0528fe03ca4c5207fabc028c8f9d93e98" +"checksum futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f4914ae450db1921a56c91bde97a27846287d062087d4a652efc09bb3a01ebda" +"checksum futures-join-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "59e260e6b48ce7d99936c40a7088d782a499a67bef41da5481d21b439454bcea" +"checksum futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "3b1dce2a0267ada5c6ff75a8ba864b4e679a9e2aa44262af7a3b5516d530d76e" +"checksum futures-select-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "df2ae43560eb10b5e50604c53bead6c9c75eade7081390cd3cce66e1582958f7" +"checksum futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "86f148ef6b69f75bb610d4f9a2336d4fc88c4b5b67129d1a340dd0fd362efeec" +"checksum futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" "checksum getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6171a6cc63fbabbe27c2b5ee268e8b7fe5dc1eb0dd2dfad537c1dfed6f69117e" "checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -"checksum h2 0.2.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "862ef1cfbdec4f06e660525baa695758028c7e4b56e271b95e72c8b652449fe8" +"checksum h2 0.2.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0f107db1419ef8271686187b1a5d47c6431af4a7f4d98b495e7b7fc249bb0a78" "checksum headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6e2e51d356081258ef05ff4c648138b5d3fe64b7300aaad3b820554a2b7fb6" "checksum headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "967131279aaa9f7c20c7205b45a391638a83ab118e6509b2d0ccbe08de044237" "checksum headers-derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f33cf300c485e3cbcba0235013fcc768723451c9b84d1b31aa7fec0491ac9a11" "checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4" -"checksum http-body 0.2.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1bc8dfa1f6155eadd665d39458a6c1a2c37bbd372a053383a4245775a0d9d98a" +"checksum http-body 0.2.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1f3aef6f3de2bd8585f5b366f3f550b5774500b4764d00cf00f903c95749eec3" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" -"checksum hyper 0.13.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0808cc9f4342dc1389de9bc3b75c43cc030ccd2ebc5accc630d8acc1f0d25ae6" +"checksum hyper 0.13.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2d05aa523087ac0b9d8b93dd80d5d482a697308ed3b0dca7b0667511a7fa7cdc" "checksum indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4d6d89e0948bf10c08b9ecc8ac5b83f07f857ebe2c0cbe38de15b4e4f510356" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" @@ -1485,8 +1435,8 @@ dependencies = [ "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" "checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -"checksum pin-project 0.4.0-alpha.11 (registry+https://github.com/rust-lang/crates.io-index)" = "a3ce8c130b2e0afb654677f8cfda5e943a6f757143e8fa3a5157a62018bf9ba3" -"checksum pin-project-internal 0.4.0-alpha.11 (registry+https://github.com/rust-lang/crates.io-index)" = "fe620a84170595be8c1554f05068c42c8858b1cd031f5175040c5171cf97e944" +"checksum pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "94b90146c7216e4cb534069fb91366de4ea0ea353105ee45ed297e2d1619e469" +"checksum pin-project-internal 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "44ca92f893f0656d3cba8158dd0f2b99b94de256a4a54e870bd6922fcc6c8355" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e688f31d92ffd7c1ddc57a1b4e6d773c0f2a14ee437a4b0a4f5a69c80eb221c8" @@ -1494,10 +1444,8 @@ dependencies = [ "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c5c2380ae88876faae57698be9e9775e3544decad214599c3a6266cca6ac802" "checksum proptest 0.9.4 (git+https://github.com/davidbarsky/proptest)" = "" -"checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" "checksum proptest-attributes 0.1.0 (git+https://github.com/davidbarsky/proptest)" = "" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" "checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" @@ -1531,24 +1479,24 @@ dependencies = [ "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" "checksum spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbdb51a221842709c2dd65b62ad4b78289fc3e706a02c17a26104528b6aa7837" "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" -"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" "checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" -"checksum synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f085a5855930c0441ca1288cf044ea4aecf4f43a91668abdb870b4ba546a203" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" +"checksum thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "cc6b305ec0e323c7b6cfff6098a22516e0063d0bb7c3d88660a890217dca099a" +"checksum thiserror-impl 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45ba8d810d9c48fc456b7ad54574e8bfb7c7918a57ad7a6e6a0985d7959e8597" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "556fe6824daa18951835d467ecdc7110a204decfa219483c853d3dbb0014d177" -"checksum tokio-codec 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7ec28841e343a014165411c3b8a70125d8f9cc871b063b9ef1982da09eb88c4d" -"checksum tokio-executor 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b7c590b4dc15f97437e5711a355ef3273f43db0e564dfdee5d3f4dc688e827d0" -"checksum tokio-fs 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d35b519737eb8a363b6daf1b907d7c0bd27c6c7b6b0422f18c006b203adfb523" -"checksum tokio-io 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0aeaf26040975e7073240933f6048ea845fc0d2f814f89544a8d68a9c487b882" -"checksum tokio-macros 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b02b0260e8187159159c191c8de31725274b2d37ddb7a7efed4b22988b35ac45" -"checksum tokio-net 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "812d4903f9b6e91ca1d3fb9e2acb30f5c0881502f5410b9c947136aa8f3d9a6b" -"checksum tokio-sync 0.2.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8acfd5281a590399968771fb03ee104be3df2519fbca609c0a38c467458e1467" -"checksum tokio-timer 0.3.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6dfc753b6771a6aff4de8ea6a704044488d2c2918e161a0266a8eb7ad53a1a2e" +"checksum tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1f17f5d6ab0f35c1506678b28fb1798bdf74fcb737e9843c7b17b73e426eba38" +"checksum tokio-codec 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9f5d22fd1e84bd4045d28813491cb7d7caae34d45c80517c2213f09a85e8787a" +"checksum tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8" +"checksum tokio-fs 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bf85e16971e06e680c622e0c1b455be94b086275c5ddcd6d4a83a2bfbb83cda" +"checksum tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "112784d5543df30660b04a72ca423bfbd90e8bb32f94dcf610f15401218b22c5" +"checksum tokio-macros 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "86b616374bcdadd95974e1f0dfca07dc913f1163c53840c0d664aca35114964e" +"checksum tokio-net 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a441682cd32f3559383112c4a7f372f5c9fa1950c5cf8c8dd05274a2ce8c2654" +"checksum tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2" +"checksum tokio-timer 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b97c1587fe71018eb245a4a9daa13a5a3b681bbc1f7fdadfe24720e141472c13" "checksum toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7aabe75941d914b72bf3e5d3932ed92ce0664d49d8432305a8b547c37227724" -"checksum tower-make 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ffa9f6bc2a4e4541c0f53aa3a27d571602ebba500b77613ec3bf7753e5a8e036" -"checksum tower-service 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7bb202f83c619c74a3f9b5d6d508e9b703be59e86ab49a89adc7eafb1e822b83" +"checksum tower-make 0.3.0-alpha.2a (registry+https://github.com/rust-lang/crates.io-index)" = "316d47dd40cde4ac5d88110eaf9a10a4e2a68612d9c056cd2aa24e37dcb484cd" +"checksum tower-service 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "63ff37396cd966ce43bea418bfa339f802857495f797dafa00bea5b7221ebdfa" "checksum tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c42f6ea7b45c17427e628509f5fac99debf2869760c6248aa3f95fc035313ade" "checksum tracing-attributes 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5b43a1835d0cb99f4a36fcdd0f777f72e4d4ff2eb6e78a0e105ac25e41309efa" "checksum tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e94af5e2a5f1700cc58127f93d4b7e46c2b925856592066b9880aabce633b6d8" diff --git a/lambda-attributes/Cargo.toml b/lambda-attributes/Cargo.toml index 955aeb07..d0c0e6e7 100644 --- a/lambda-attributes/Cargo.toml +++ b/lambda-attributes/Cargo.toml @@ -8,7 +8,6 @@ edition = "2018" proc-macro = true [dependencies] -proc-macro2 = { version = "0.4.30", features = ["nightly"] } +proc-macro2 = { version = "0.4.30" } syn = { version = "1.0.5", features = ["full"] } quote = "1" -proptest = "0.9.3" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 93192cca..b5a226e0 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -5,13 +5,14 @@ authors = ["David Barsky "] edition = "2018" [dependencies] -futures-preview = { version = "0.3.0-alpha.18", features = ["async-await", "nightly"] } -tokio = { version = "0.2.0-alpha.5" } -hyper = { version = "0.13.0-alpha.2", features = ["unstable-stream"] } +futures-preview = { version = "0.3.0-alpha.19", features = ["async-await"] } +tokio = { version = "0.2.0-alpha.6" } +hyper = { version = "0.13.0-alpha.4", features = ["unstable-stream"] } async-stream = "0.1" serde = { version = "1", features = ["derive"] } +thiserror = "1.0" +anyhow = "1.0" serde_json = "1.0.39" -fehler = "1.0.0-alpha.1" bytes = "0.4" http = "0.1.17" headers = "0.2.1" diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 5e004f9d..53fea3b6 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -1,11 +1,11 @@ -use crate::err_fmt; +use crate::requests::{IntoRequest, NextEventRequest}; +use crate::{err_fmt, Error}; use async_stream::try_stream; -use fehler::Exception; +use bytes::Bytes; use futures::prelude::*; -use http::{Method, Request, Response, Uri, uri::PathAndQuery}; +use http::{uri::PathAndQuery, Method, Request, Response, Uri}; use hyper::Body; -use serde::{Serialize, Deserialize}; -use bytes::Bytes; +use serde::{Deserialize, Serialize}; #[derive(Debug, Clone)] pub struct Client { @@ -23,7 +23,7 @@ struct LambdaError { #[derive(Debug, PartialEq)] struct InitializationErrorRequest { path: PathAndQuery, - error: LambdaError + error: LambdaError, } impl InitializationErrorRequest { @@ -44,38 +44,34 @@ struct InvocationOkRequest { impl InvocationOkRequest { fn new(request_id: String, body: Vec) -> Self { let path = format!("/runtime/invocation/{}/response", request_id); - let path = PathAndQuery::from_shared(Bytes::from(path)).expect("Unable to construct PathAndQuery"); - Self { - path, - body - } + let path = + PathAndQuery::from_shared(Bytes::from(path)).expect("Unable to construct PathAndQuery"); + Self { path, body } } } #[derive(Debug, PartialEq)] struct InvocationErrorRequest { path: PathAndQuery, - error: LambdaError + error: LambdaError, } impl InvocationErrorRequest { fn new(request_id: String, error: LambdaError) -> Self { let path = format!("/runtime/invocation/{}/error", request_id); - let path = PathAndQuery::from_shared(Bytes::from(path)).expect("Unable to construct PathAndQuery"); - Self { - path, - error - } + let path = + PathAndQuery::from_shared(Bytes::from(path)).expect("Unable to construct PathAndQuery"); + Self { path, error } } } #[test] -fn round_trip_lambda_error() -> Result<(), Exception> { - use serde_json::{json, from_value, to_value, Value}; +fn round_trip_lambda_error() -> Result<(), anyhow::Error> { + use serde_json::{from_value, json, to_value, Value}; let expected = json!({ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException" }); - + let actual: LambdaError = from_value(expected.clone())?; let actual: Value = to_value(actual)?; assert_eq!(expected, actual); @@ -91,43 +87,51 @@ impl Client { } } - fn set_origin(&self, req: Request>) -> Result>, Exception> { + fn set_origin(&self, req: Request>) -> Result>, anyhow::Error> { let (mut parts, body) = req.into_parts(); let (scheme, authority) = { - let scheme = self.base.scheme_part().ok_or(err_fmt!("PathAndQuery not found"))?; - let authority = self.base.authority_part().ok_or(err_fmt!("Authority not found"))?; + let scheme = self + .base + .scheme_part() + .ok_or(err_fmt!("PathAndQuery not found"))?; + let authority = self + .base + .authority_part() + .ok_or(err_fmt!("Authority not found"))?; (scheme, authority) }; - let path = parts.uri.path_and_query().ok_or(err_fmt!("PathAndQuery not found"))?; + let path = parts + .uri + .path_and_query() + .ok_or(err_fmt!("PathAndQuery not found"))?; let uri = Uri::builder() .scheme(scheme.clone()) .authority(authority.clone()) .path_and_query(path.clone()) - .build()?; + .build() + .expect("Unable to build URI"); parts.uri = uri; Ok(Request::from_parts(parts, body)) } - pub async fn call(&mut self, req: Request>) -> Result, Exception> { + pub async fn call(&mut self, req: Request>) -> Result, anyhow::Error> { let req = self.set_origin(req)?; let (parts, body) = req.into_parts(); let body = Body::from(body); let req = Request::from_parts(parts, body); - self.client.request(req).await.map_err(Into::into) + let response = self.client.request(req).await.map_err(Error::Hyper)?; + Ok(response) } } -pub fn events(client: Client) -> impl Stream, Exception>> { +pub fn events(client: Client) -> impl Stream, anyhow::Error>> { try_stream! { let mut client = client; loop { - let req = Request::builder() - .method(Method::GET) - .uri(Uri::from_static("/runtime/invocation/next")) - .body(Vec::new()) - .expect("Unable to construct request."); + let req = NextEventRequest; + let req = req.into_req()?; let event = client.call(req).await?; yield event; } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index b0aa7dfc..9d1186d3 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -34,14 +34,16 @@ //! ``` pub use crate::types::LambdaCtx; use client::{events, Client}; -use fehler::{Error, Exception}; use futures::{pin_mut, prelude::*}; use http::{Method, Request, Response, Uri}; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; +use std::str::FromStr; use std::{convert::TryFrom, env, error, fmt}; +use thiserror::Error; mod client; +mod requests; /// Types availible to a Lambda function. mod types; @@ -57,16 +59,43 @@ impl std::fmt::Display for StringError { } } +#[derive(Error, Debug)] +pub enum Error { + #[error("error parsing environment variable: {var}")] + VarError { + var: &'static str, + #[source] + source: std::env::VarError, + }, + #[error("error making an http request")] + Hyper(#[source] hyper::error::Error), + #[error("invalid URI: {uri}")] + InvalidUri { + uri: String, + #[source] + source: http::uri::InvalidUri, + }, + #[error("invalid http request")] + InvalidRequest(#[source] http::Error), + #[error("serialization error")] + Json { + #[source] + source: serde_json::error::Error, + }, +} + macro_rules! null_display { - ($t:ty) => { impl fmt::Display for $t { - fn fmt(&self, _: &mut fmt::Formatter) -> fmt::Result { Ok(()) } - } }; + ($t:ty) => { + impl fmt::Display for $t { + fn fmt(&self, _: &mut fmt::Formatter<'_>) -> fmt::Result { + Ok(()) + } + } + }; } #[derive(PartialEq, Debug, Error)] -pub(crate) enum RuntimeError { - -} +pub(crate) enum RuntimeError {} null_display!(RuntimeError); #[doc(hidden)] @@ -96,7 +125,7 @@ pub struct Config { impl Config { /// Attempts to read configuration from environment variables. - pub fn from_env() -> Result { + pub fn from_env() -> Result { let conf = Config { endpoint: env::var("AWS_LAMBDA_RUNTIME_API")?, function_name: env::var("AWS_LAMBDA_FUNCTION_NAME")?, @@ -187,14 +216,17 @@ where /// Ok(event) /// } /// ``` -pub async fn run(mut handler: Function) -> Result<(), Exception> +pub async fn run(mut handler: Function) -> Result<(), anyhow::Error> where Function: Handler, Event: for<'de> Deserialize<'de>, Output: Serialize, { - let uri = env::var("AWS_LAMBDA_RUNTIME_API")?.into(); - let uri = Uri::from_shared(uri)?; + let uri = env::var("AWS_LAMBDA_RUNTIME_API").map_err(|e| Error::VarError { + var: "AWS_LAMBDA_RUNTIME_API", + source: e, + })?; + let uri = Uri::from_str(&uri).map_err(|e| Error::InvalidUri { uri, source: e })?; let mut client = Client::new(uri); let stream = events(client.clone()); pin_mut!(stream); @@ -203,21 +235,39 @@ where let (parts, body) = event?.into_parts(); let mut ctx: LambdaCtx = LambdaCtx::try_from(parts.headers)?; ctx.env_config = Config::from_env()?; - let body = body.try_concat().await?; - let body = serde_json::from_slice(&body)?; + let body = body.try_concat().await.map_err(Error::Hyper)?; + let body = serde_json::from_slice(&body).map_err(|e| Error::Json { source: e })?; match handler.call(body, Some(ctx.clone())).await { Ok(res) => { - let body = serde_json::to_vec(&res)?; - let uri = format!("/runtime/invocation/{}/response", &ctx.id).parse::()?; - let req = Request::builder().uri(uri).method(Method::POST).body(body)?; + let body = serde_json::to_vec(&res).map_err(|e| Error::Json { source: e })?; + let uri = format!("/runtime/invocation/{}/response", &ctx.id) + .parse::() + .map_err(|e| Error::InvalidUri { + uri: format!("/runtime/invocation/{}/response", &ctx.id), + source: e, + })?; + let req = Request::builder() + .uri(uri) + .method(Method::POST) + .body(body) + .expect("Invalid request"); client.call(req).await?; } Err(err) => { let err = type_name_of_val(err); - let uri = format!("/runtime/invocation/{}/error", &ctx.id).parse::()?; - let req = Request::builder().uri(uri).method(Method::POST).body(Vec::from(err))?; + let uri = format!("/runtime/invocation/{}/error", &ctx.id) + .parse::() + .map_err(|e| Error::InvalidUri { + uri: format!("/runtime/invocation/{}/error", &ctx.id), + source: e, + })?; + let req = Request::builder() + .uri(uri) + .method(Method::POST) + .body(Vec::from(err)) + .expect("Invalid request"); client.call(req).await?; } @@ -249,7 +299,7 @@ impl error::Error for MyError { } #[tokio::test] -async fn get_next() -> Result<(), Exception> { +async fn get_next() -> Result<(), Error> { fn test_fn() -> Result { Err(MyError) } diff --git a/lambda/src/requests.rs b/lambda/src/requests.rs new file mode 100644 index 00000000..18ec5473 --- /dev/null +++ b/lambda/src/requests.rs @@ -0,0 +1,127 @@ +use anyhow::Error; +use http::{Method, Request, Response, Uri}; +use serde::Serialize; +use std::str::FromStr; + +pub(crate) trait IntoRequest { + fn into_req(self) -> Result>, Error>; +} + +// /runtime/invocation/next +#[derive(Debug, PartialEq)] +pub(crate) struct NextEventRequest; + +impl IntoRequest for NextEventRequest { + fn into_req(self) -> Result>, Error> { + let req = Request::builder() + .method(Method::GET) + .uri(Uri::from_static("/runtime/invocation/next")) + .body(Vec::new())?; + Ok(req) + } +} + +#[test] +fn test_next_event_request() { + let req = NextEventRequest; + let req = req.into_req().unwrap(); + assert_eq!(req.method(), Method::GET); + assert_eq!(req.uri(), &Uri::from_static("/runtime/invocation/next")); +} + +// /runtime/invocation/{AwsRequestId}/response +struct EventCompletionRequest<'a, T> { + request_id: &'a str, + body: T, +} + +impl<'a, T> IntoRequest for EventCompletionRequest<'a, T> +where + T: for<'serialize> Serialize, +{ + fn into_req(self) -> Result>, Error> { + let uri = format!("/runtime/invocation/{}/response", self.request_id); + let uri = Uri::from_str(&uri)?; + let body = serde_json::to_vec(&self.body)?; + + let req = Request::builder() + .method(Method::POST) + .uri(uri) + .body(body)?; + Ok(req) + } +} + +#[test] +fn test_event_completion_request() { + let req = EventCompletionRequest { + request_id: "id", + body: "hello, world!", + }; + let req = req.into_req().unwrap(); + let expected = Uri::from_static("/runtime/invocation/id/response"); + assert_eq!(req.method(), Method::POST); + assert_eq!(req.uri(), &expected); +} + +// /runtime/invocation/{AwsRequestId}/error +struct EventErrorRequest<'a, T> { + request_id: &'a str, + body: T, +} + +impl<'a, T> IntoRequest for EventErrorRequest<'a, T> +where + T: for<'serialize> Serialize, +{ + fn into_req(self) -> Result>, Error> { + let uri = format!("/runtime/invocation/{}/error", self.request_id); + let uri = Uri::from_str(&uri)?; + let body = serde_json::to_vec(&self.body)?; + + let req = Request::builder() + .method(Method::POST) + .uri(uri) + .header("lambda-runtime-function-error-type", "unhandled") + .body(body)?; + Ok(req) + } +} + +#[test] +fn test_event_error_request() { + let req = EventErrorRequest { + request_id: "id", + body: "hello, world!", + }; + let req = req.into_req().unwrap(); + let expected = Uri::from_static("/runtime/invocation/id/error"); + assert_eq!(req.method(), Method::POST); + assert_eq!(req.uri(), &expected); +} + +// /runtime/init/error +struct InitErrorRequest; + +impl IntoRequest for InitErrorRequest { + fn into_req(self) -> Result>, Error> { + let uri = format!("/runtime/init/error"); + let uri = Uri::from_str(&uri)?; + + let req = Request::builder() + .method(Method::POST) + .uri(uri) + .header("lambda-runtime-function-error-type", "unhandled") + .body(Vec::new())?; + Ok(req) + } +} + +#[test] +fn test_init_error_request() { + let req = InitErrorRequest; + let req = req.into_req().unwrap(); + let expected = Uri::from_static("/runtime/init/error"); + assert_eq!(req.method(), Method::POST); + assert_eq!(req.uri(), &expected); +} diff --git a/lambda/src/types.rs b/lambda/src/types.rs index 96e3ceff..ae8983ac 100644 --- a/lambda/src/types.rs +++ b/lambda/src/types.rs @@ -1,17 +1,21 @@ -use crate::{err_fmt, Config}; -use fehler::Exception; +use crate::{err_fmt, Config, Error}; use headers::{Header, HeaderMap, HeaderMapExt, HeaderName, HeaderValue}; use lazy_static::lazy_static; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, convert::TryFrom}; lazy_static! { - static ref AWS_REQUEST_ID: HeaderName = HeaderName::from_static("lambda-runtime-aws-request-id"); - static ref AWS_INVOCATION_DEADLINE: HeaderName = HeaderName::from_static("lambda-runtime-deadline-ms"); - static ref AWS_FUNCTION_ARN: HeaderName = HeaderName::from_static("lambda-runtime-invoked-function-arn"); + static ref AWS_REQUEST_ID: HeaderName = + HeaderName::from_static("lambda-runtime-aws-request-id"); + static ref AWS_INVOCATION_DEADLINE: HeaderName = + HeaderName::from_static("lambda-runtime-deadline-ms"); + static ref AWS_FUNCTION_ARN: HeaderName = + HeaderName::from_static("lambda-runtime-invoked-function-arn"); static ref AWS_XRAY_TRACE_ID: HeaderName = HeaderName::from_static("lambda-runtime-trace-id"); - static ref AWS_MOBILE_CLIENT_CONTEXT: HeaderName = HeaderName::from_static("lambda-runtime-client-context"); - static ref AWS_MOBILE_CLIENT_IDENTITY: HeaderName = HeaderName::from_static("lambda-runtime-cognito-identity"); + static ref AWS_MOBILE_CLIENT_CONTEXT: HeaderName = + HeaderName::from_static("lambda-runtime-client-context"); + static ref AWS_MOBILE_CLIENT_IDENTITY: HeaderName = + HeaderName::from_static("lambda-runtime-cognito-identity"); } macro_rules! str_header { @@ -77,7 +81,8 @@ macro_rules! num_header { where E: Extend, { - let value = HeaderValue::from_str(&self.0.to_string()).expect("Should not panic on encoding"); + let value = HeaderValue::from_str(&self.0.to_string()) + .expect("Should not panic on encoding"); values.extend(std::iter::once(value)); } } @@ -181,10 +186,12 @@ pub struct LambdaCtx { } impl TryFrom> for LambdaCtx { - type Error = Exception; + type Error = anyhow::Error; fn try_from(value: HeaderMap) -> Result { - let request_id = value.typed_get::().ok_or(err_fmt!("RequestId not found"))?; + let request_id = value + .typed_get::() + .ok_or(err_fmt!("RequestId not found"))?; let function_arn = value .typed_get::() .ok_or(err_fmt!("FunctionArn not found"))?; @@ -207,8 +214,8 @@ impl TryFrom> for LambdaCtx { #[allow(dead_code)] pub mod tests { use crate::types::{ - ClientApplication, ClientContext, CognitoIdentity, FunctionArn, InvocationDeadline, MobileClientContext, - MobileClientIdentity, RequestId, XRayTraceId, + ClientApplication, ClientContext, CognitoIdentity, FunctionArn, InvocationDeadline, + MobileClientContext, MobileClientIdentity, RequestId, XRayTraceId, }; use headers::{HeaderMap, HeaderMapExt}; use http::Response; @@ -282,7 +289,11 @@ pub mod tests { } fn gen_headers() -> impl Strategy { - let mandatory = (gen_request_id(), gen_invocation_deadline(), gen_function_arn()); + let mandatory = ( + gen_request_id(), + gen_invocation_deadline(), + gen_function_arn(), + ); let xray = option::of(gen_xray_trace_id()); let mobile = option::of((gen_client_context(), gen_client_identity())); (mandatory, xray, mobile).prop_map(|headers| { From 044caf58165659e18efd8074d8557765481821e4 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Thu, 28 Nov 2019 15:29:21 -0500 Subject: [PATCH 14/34] simplify a bit --- lambda/src/client.rs | 84 ++---------- lambda/src/lib.rs | 129 ++++-------------- lambda/src/requests.rs | 14 +- lambda/src/types.rs | 42 ++++-- lambda/tests/compile-fail/no-args.stderr | 9 +- .../tests/compile-fail/non-async-main.stderr | 9 +- 6 files changed, 86 insertions(+), 201 deletions(-) diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 53fea3b6..ed0d35b6 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -1,84 +1,16 @@ use crate::requests::{IntoRequest, NextEventRequest}; -use crate::{err_fmt, Error}; +use crate::Error; use async_stream::try_stream; -use bytes::Bytes; use futures::prelude::*; -use http::{uri::PathAndQuery, Method, Request, Response, Uri}; +use http::{Request, Response, Uri}; use hyper::Body; -use serde::{Deserialize, Serialize}; #[derive(Debug, Clone)] -pub struct Client { +pub(crate) struct Client { base: Uri, client: hyper::Client, } -#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -struct LambdaError { - error_type: String, - error_message: String, -} - -#[derive(Debug, PartialEq)] -struct InitializationErrorRequest { - path: PathAndQuery, - error: LambdaError, -} - -impl InitializationErrorRequest { - fn new(error: LambdaError) -> Self { - Self { - path: PathAndQuery::from_static("/runtime/init/error"), - error, - } - } -} - -#[derive(Debug, PartialEq)] -struct InvocationOkRequest { - path: PathAndQuery, - body: Vec, -} - -impl InvocationOkRequest { - fn new(request_id: String, body: Vec) -> Self { - let path = format!("/runtime/invocation/{}/response", request_id); - let path = - PathAndQuery::from_shared(Bytes::from(path)).expect("Unable to construct PathAndQuery"); - Self { path, body } - } -} -#[derive(Debug, PartialEq)] -struct InvocationErrorRequest { - path: PathAndQuery, - error: LambdaError, -} - -impl InvocationErrorRequest { - fn new(request_id: String, error: LambdaError) -> Self { - let path = format!("/runtime/invocation/{}/error", request_id); - let path = - PathAndQuery::from_shared(Bytes::from(path)).expect("Unable to construct PathAndQuery"); - Self { path, error } - } -} - -#[test] -fn round_trip_lambda_error() -> Result<(), anyhow::Error> { - use serde_json::{from_value, json, to_value, Value}; - let expected = json!({ - "errorMessage" : "Error parsing event data.", - "errorType" : "InvalidEventDataException" - }); - - let actual: LambdaError = from_value(expected.clone())?; - let actual: Value = to_value(actual)?; - assert_eq!(expected, actual); - - Ok(()) -} - impl Client { pub fn new(base: Uri) -> Self { Self { @@ -93,17 +25,17 @@ impl Client { let scheme = self .base .scheme_part() - .ok_or(err_fmt!("PathAndQuery not found"))?; + .expect("Scheme not found"); let authority = self .base .authority_part() - .ok_or(err_fmt!("Authority not found"))?; + .expect("Authority not found"); (scheme, authority) }; let path = parts .uri .path_and_query() - .ok_or(err_fmt!("PathAndQuery not found"))?; + .expect("PathAndQuery not found"); let uri = Uri::builder() .scheme(scheme.clone()) @@ -116,7 +48,7 @@ impl Client { Ok(Request::from_parts(parts, body)) } - pub async fn call(&mut self, req: Request>) -> Result, anyhow::Error> { + pub(crate) async fn call(&mut self, req: Request>) -> Result, anyhow::Error> { let req = self.set_origin(req)?; let (parts, body) = req.into_parts(); let body = Body::from(body); @@ -126,7 +58,7 @@ impl Client { } } -pub fn events(client: Client) -> impl Stream, anyhow::Error>> { +pub(crate) fn events(client: Client) -> impl Stream, anyhow::Error>> { try_stream! { let mut client = client; loop { diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 9d1186d3..f9fa6e1d 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -35,11 +35,11 @@ pub use crate::types::LambdaCtx; use client::{events, Client}; use futures::{pin_mut, prelude::*}; -use http::{Method, Request, Response, Uri}; +use http::{Request, Response, Uri}; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; use std::str::FromStr; -use std::{convert::TryFrom, env, error, fmt}; +use std::{convert::TryFrom, env, fmt}; use thiserror::Error; mod client; @@ -47,26 +47,11 @@ mod requests; /// Types availible to a Lambda function. mod types; -/// a string error -#[derive(Debug)] -pub(crate) struct StringError(pub String); - -impl std::error::Error for StringError {} - -impl std::fmt::Display for StringError { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> { - self.0.fmt(f) - } -} +use requests::{EventCompletionRequest, EventErrorRequest, IntoRequest}; +use types::Diagnostic; #[derive(Error, Debug)] -pub enum Error { - #[error("error parsing environment variable: {var}")] - VarError { - var: &'static str, - #[source] - source: std::env::VarError, - }, +enum Error { #[error("error making an http request")] Hyper(#[source] hyper::error::Error), #[error("invalid URI: {uri}")] @@ -75,8 +60,6 @@ pub enum Error { #[source] source: http::uri::InvalidUri, }, - #[error("invalid http request")] - InvalidRequest(#[source] http::Error), #[error("serialization error")] Json { #[source] @@ -84,28 +67,6 @@ pub enum Error { }, } -macro_rules! null_display { - ($t:ty) => { - impl fmt::Display for $t { - fn fmt(&self, _: &mut fmt::Formatter<'_>) -> fmt::Result { - Ok(()) - } - } - }; -} - -#[derive(PartialEq, Debug, Error)] -pub(crate) enum RuntimeError {} -null_display!(RuntimeError); - -#[doc(hidden)] -#[macro_export] -macro_rules! err_fmt { - {$($t:tt)*} => { - $crate::StringError(format!($($t)*)) - } -} - /// A struct containing configuration values derived from environment variables. #[derive(Debug, Default, Clone, PartialEq)] pub struct Config { @@ -183,6 +144,7 @@ where Event: for<'de> Deserialize<'de>, Output: Serialize, Fut: Future> + Send, + Err: Into> + fmt::Debug, { type Err = Err; type Fut = Fut; @@ -221,11 +183,9 @@ where Function: Handler, Event: for<'de> Deserialize<'de>, Output: Serialize, + >::Err: std::fmt::Debug, { - let uri = env::var("AWS_LAMBDA_RUNTIME_API").map_err(|e| Error::VarError { - var: "AWS_LAMBDA_RUNTIME_API", - source: e, - })?; + let uri = env::var("AWS_LAMBDA_RUNTIME_API").expect("Unable to find environment variable `AWS_LAMBDA_RUNTIME_API`"); let uri = Uri::from_str(&uri).map_err(|e| Error::InvalidUri { uri, source: e })?; let mut client = Client::new(uri); let stream = events(client.clone()); @@ -241,34 +201,26 @@ where match handler.call(body, Some(ctx.clone())).await { Ok(res) => { let body = serde_json::to_vec(&res).map_err(|e| Error::Json { source: e })?; - let uri = format!("/runtime/invocation/{}/response", &ctx.id) - .parse::() - .map_err(|e| Error::InvalidUri { - uri: format!("/runtime/invocation/{}/response", &ctx.id), - source: e, - })?; - let req = Request::builder() - .uri(uri) - .method(Method::POST) - .body(body) - .expect("Invalid request"); + let req = EventCompletionRequest { + request_id: &ctx.id, + body, + }; + let req = req.into_req()?; client.call(req).await?; } Err(err) => { - let err = type_name_of_val(err); - let uri = format!("/runtime/invocation/{}/error", &ctx.id) - .parse::() - .map_err(|e| Error::InvalidUri { - uri: format!("/runtime/invocation/{}/error", &ctx.id), - source: e, - })?; - let req = Request::builder() - .uri(uri) - .method(Method::POST) - .body(Vec::from(err)) - .expect("Invalid request"); - + let diagnositic = Diagnostic { + error_message: format!("{:?}", err), + error_type: type_name_of_val(err).to_string() + }; + let body = serde_json::to_vec(&diagnositic).map_err(|e| Error::Json { source: e })?; + let req = EventErrorRequest { + request_id: &ctx.id, + body + }; + + let req = req.into_req()?; client.call(req).await?; } } @@ -279,35 +231,4 @@ where fn type_name_of_val(_: T) -> &'static str { std::any::type_name::() -} - -#[derive(Debug, Clone)] -struct MyError; - -impl fmt::Display for MyError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "invalid first item to double") - } -} - -// This is important for other errors to wrap this one. -impl error::Error for MyError { - fn source(&self) -> Option<&(dyn error::Error + 'static)> { - // Generic error, underlying cause isn't tracked. - None - } -} - -#[tokio::test] -async fn get_next() -> Result<(), Error> { - fn test_fn() -> Result { - Err(MyError) - } - - let res = test_fn(); - if let Err(e) = res { - println!("{}", type_name_of_val(e)); - } - - Ok(()) -} +} \ No newline at end of file diff --git a/lambda/src/requests.rs b/lambda/src/requests.rs index 18ec5473..90b46921 100644 --- a/lambda/src/requests.rs +++ b/lambda/src/requests.rs @@ -1,5 +1,5 @@ use anyhow::Error; -use http::{Method, Request, Response, Uri}; +use http::{Method, Request, Uri}; use serde::Serialize; use std::str::FromStr; @@ -30,9 +30,9 @@ fn test_next_event_request() { } // /runtime/invocation/{AwsRequestId}/response -struct EventCompletionRequest<'a, T> { - request_id: &'a str, - body: T, +pub(crate) struct EventCompletionRequest<'a, T> { + pub(crate) request_id: &'a str, + pub(crate) body: T, } impl<'a, T> IntoRequest for EventCompletionRequest<'a, T> @@ -65,9 +65,9 @@ fn test_event_completion_request() { } // /runtime/invocation/{AwsRequestId}/error -struct EventErrorRequest<'a, T> { - request_id: &'a str, - body: T, +pub(crate) struct EventErrorRequest<'a, T> { + pub(crate) request_id: &'a str, + pub(crate) body: T, } impl<'a, T> IntoRequest for EventErrorRequest<'a, T> diff --git a/lambda/src/types.rs b/lambda/src/types.rs index ae8983ac..232fe21c 100644 --- a/lambda/src/types.rs +++ b/lambda/src/types.rs @@ -1,8 +1,30 @@ -use crate::{err_fmt, Config, Error}; +use crate::Config; use headers::{Header, HeaderMap, HeaderMapExt, HeaderName, HeaderValue}; use lazy_static::lazy_static; use serde::{Deserialize, Serialize}; -use std::{collections::HashMap, convert::TryFrom}; +use std::collections::HashMap; + +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct Diagnostic { + pub(crate) error_type: String, + pub(crate) error_message: String, +} + +#[test] +fn round_trip_lambda_error() -> Result<(), anyhow::Error> { + use serde_json::{json, Value}; + let expected = json!({ + "errorMessage" : "Error parsing event data.", + "errorType" : "InvalidEventDataException" + }); + + let actual: Diagnostic = serde_json::from_value(expected.clone())?; + let actual: Value = serde_json::to_value(actual)?; + assert_eq!(expected, actual); + + Ok(()) +} lazy_static! { static ref AWS_REQUEST_ID: HeaderName = @@ -185,29 +207,27 @@ pub struct LambdaCtx { pub env_config: Config, } -impl TryFrom> for LambdaCtx { - type Error = anyhow::Error; +impl From> for LambdaCtx { - fn try_from(value: HeaderMap) -> Result { + fn from(value: HeaderMap) -> Self { let request_id = value .typed_get::() - .ok_or(err_fmt!("RequestId not found"))?; + .expect("RequestId not found"); let function_arn = value .typed_get::() - .ok_or(err_fmt!("FunctionArn not found"))?; + .expect("FunctionArn not found"); let deadline = value .typed_get::() - .ok_or(err_fmt!("FunctionArn not found"))?; + .expect("FunctionArn not found"); let xray = value.typed_get::(); - let ctx = LambdaCtx { + LambdaCtx { id: request_id.0, deadline: deadline.0, invoked_function_arn: function_arn.0, xray_trace_id: xray.map(|v| v.0), ..Default::default() - }; - Ok(ctx) + } } } diff --git a/lambda/tests/compile-fail/no-args.stderr b/lambda/tests/compile-fail/no-args.stderr index 5dc2885d..e7dedcb3 100644 --- a/lambda/tests/compile-fail/no-args.stderr +++ b/lambda/tests/compile-fail/no-args.stderr @@ -5,7 +5,14 @@ error: The #[lambda] macro can accept one or two arguments. | ^^^^^^^^^ error[E0601]: `main` function not found in crate `$CRATE` + --> $DIR/no-args.rs:1:1 | - = note: consider adding a `main` function to `$DIR/tests/compile-fail/no-args.rs` +1 | / use lambda::lambda; +2 | | +3 | | #[lambda] +4 | | #[tokio::main] +5 | | async fn main() {} + | |__________________^ consider adding a `main` function to `$DIR/tests/compile-fail/no-args.rs` For more information about this error, try `rustc --explain E0601`. +error: could not compile `lambda-tests`. \ No newline at end of file diff --git a/lambda/tests/compile-fail/non-async-main.stderr b/lambda/tests/compile-fail/non-async-main.stderr index bb2b7503..7b7b06bf 100644 --- a/lambda/tests/compile-fail/non-async-main.stderr +++ b/lambda/tests/compile-fail/non-async-main.stderr @@ -4,14 +4,19 @@ error: the async keyword is missing from the function declaration 3 | fn main() {} | ^^ -error: cannot find attribute macro `lambda` in this scope +error: cannot find attribute `lambda` in this scope --> $DIR/non-async-main.rs:1:3 | 1 | #[lambda] | ^^^^^^ error[E0601]: `main` function not found in crate `$CRATE` + --> $DIR/non-async-main.rs:1:1 | - = note: consider adding a `main` function to `$DIR/tests/compile-fail/non-async-main.rs` +1 | / #[lambda] +2 | | #[tokio::main] +3 | | fn main() {} + | |____________^ consider adding a `main` function to `$DIR/tests/compile-fail/non-async-main.rs` For more information about this error, try `rustc --explain E0601`. +error: could not compile `lambda-tests`. \ No newline at end of file From 4b507c9a188fb6be7ec9ceb946ace935fa21970a Mon Sep 17 00:00:00 2001 From: David Barsky Date: Mon, 9 Dec 2019 11:53:49 -0500 Subject: [PATCH 15/34] Update deps; remove flaky UI tests. --- Cargo.lock | 719 +++++------------- lambda/Cargo.toml | 17 +- lambda/src/client.rs | 20 +- lambda/src/lib.rs | 17 +- lambda/tests/compile-fail/no-args.rs | 5 - lambda/tests/compile-fail/no-args.stderr | 18 - lambda/tests/compile-fail/non-async-main.rs | 3 - .../tests/compile-fail/non-async-main.stderr | 22 - lambda/tests/tests.rs | 10 - lambda/tests/ui/arg-plus-ctx.rs | 17 - lambda/tests/ui/arg.rs | 16 - 11 files changed, 214 insertions(+), 650 deletions(-) delete mode 100644 lambda/tests/compile-fail/no-args.rs delete mode 100644 lambda/tests/compile-fail/no-args.stderr delete mode 100644 lambda/tests/compile-fail/non-async-main.rs delete mode 100644 lambda/tests/compile-fail/non-async-main.stderr delete mode 100644 lambda/tests/tests.rs delete mode 100644 lambda/tests/ui/arg-plus-ctx.rs delete mode 100644 lambda/tests/ui/arg.rs diff --git a/Cargo.lock b/Cargo.lock index 25d76787..4b4110d9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,25 +6,22 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "arrayvec" -version = "0.4.11" +name = "arc-swap" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "async-stream" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "async-stream-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "async-stream-impl 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "async-stream-impl" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -39,11 +36,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "base64" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "bit-set" @@ -94,12 +88,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytes" -version = "0.4.12" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "c2-chacha" @@ -123,53 +113,6 @@ dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "crossbeam-channel" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-queue" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-utils" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "digest" version = "0.8.1" @@ -208,61 +151,51 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "futures-channel-preview" -version = "0.3.0-alpha.19" +name = "futures" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "futures-core-preview" -version = "0.3.0-alpha.19" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures-executor-preview" -version = "0.3.0-alpha.19" +name = "futures-channel" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "futures-io-preview" -version = "0.3.0-alpha.19" +name = "futures-core" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "futures-join-macro-preview" -version = "0.3.0-alpha.19" +name = "futures-executor" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "futures-preview" -version = "0.3.0-alpha.19" +name = "futures-io" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "futures-select-macro-preview" -version = "0.3.0-alpha.19" +name = "futures-macro" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -272,21 +205,26 @@ dependencies = [ ] [[package]] -name = "futures-sink-preview" -version = "0.3.0-alpha.19" +name = "futures-sink" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-task" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "futures-util-preview" -version = "0.3.0-alpha.19" +name = "futures-util" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-join-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-select-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -312,42 +250,34 @@ dependencies = [ "wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "glob" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "h2" -version = "0.2.0-alpha.3" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "headers" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.2.3" +source = "git+https://github.com/hyperium/headers#c6be8bab9c9852581bccd03f89cdbe431195ca1c" dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "headers-derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "headers-core 0.1.1 (git+https://github.com/hyperium/headers)", + "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", @@ -356,39 +286,28 @@ dependencies = [ [[package]] name = "headers-core" version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "headers-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/hyperium/headers#c6be8bab9c9852581bccd03f89cdbe431195ca1c" dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "http" -version = "0.1.18" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "http-body" -version = "0.2.0-alpha.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -399,30 +318,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hyper" version = "0.13.0-alpha.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.2.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.2.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", +source = "git+https://github.com/hyperium/hyper#78e8da17cf8737720b452f3077a2de90184f9b95" +dependencies = [ + "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "http-body 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-net 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-make 0.3.0-alpha.2a (registry+https://github.com/rust-lang/crates.io-index)", - "tower-service 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -459,12 +371,12 @@ name = "lambda" version = "0.1.0" dependencies = [ "anyhow 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", - "async-stream 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.13.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "async-stream 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "headers 0.2.3 (git+https://github.com/hyperium/headers)", + "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.13.0-alpha.4 (git+https://github.com/hyperium/hyper)", "lambda-attributes 0.1.0", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.4 (git+https://github.com/davidbarsky/proptest)", @@ -472,8 +384,7 @@ dependencies = [ "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "trybuild 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -489,23 +400,12 @@ dependencies = [ name = "lazy_static" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "libc" version = "0.2.62" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "lock_api" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "log" version = "0.4.8" @@ -519,14 +419,6 @@ name = "memchr" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "memoffset" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "mime" version = "0.3.13" @@ -537,9 +429,10 @@ dependencies = [ [[package]] name = "mio" -version = "0.6.19" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -552,6 +445,17 @@ dependencies = [ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "mio-named-pipes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "mio-uds" version = "0.6.7" @@ -559,7 +463,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -573,6 +477,15 @@ dependencies = [ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "miow" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "net2" version = "0.2.33" @@ -580,14 +493,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "nodrop" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "num-traits" version = "0.2.8" @@ -609,30 +517,6 @@ name = "opaque-debug" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "parking_lot" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parking_lot_core" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "pin-project" version = "0.4.6" @@ -651,6 +535,11 @@ dependencies = [ "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "pin-project-lite" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "pin-utils" version = "0.1.0-alpha.4" @@ -749,7 +638,7 @@ dependencies = [ "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -834,7 +723,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -847,7 +736,7 @@ dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -890,15 +779,7 @@ name = "remove_dir_all" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -917,24 +798,6 @@ name = "ryu" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "scopeguard" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "serde" version = "1.0.99" @@ -975,26 +838,28 @@ dependencies = [ ] [[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "smallvec" -version = "0.6.10" +name = "signal-hook-registry" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] -name = "spin" -version = "0.5.1" +name = "slab" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "string" -version = "0.2.1" +name = "socket2" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1017,15 +882,7 @@ dependencies = [ "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "termcolor" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1053,88 +910,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-macros 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-net 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-codec" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-executor" -version = "0.2.0-alpha.6" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-fs" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-io" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-macros 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-macros" -version = "0.2.0-alpha.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1142,124 +945,28 @@ dependencies = [ ] [[package]] -name = "tokio-net" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-sync" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-timer" -version = "0.3.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "toml" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tower-make" -version = "0.3.0-alpha.2a" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-service 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tower-service" -version = "0.3.0-alpha.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "tracing" -version = "0.1.6" +name = "tokio-util" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-attributes 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "tracing-core" -version = "0.1.5" +name = "tower-service" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "try-lock" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "trybuild" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "typenum" version = "1.10.0" @@ -1317,7 +1024,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1334,28 +1041,11 @@ name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "winapi-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "wincolor" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "ws2_32-sys" version = "0.2.1" @@ -1367,11 +1057,11 @@ dependencies = [ [metadata] "checksum anyhow 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "e19f23ab207147bbdbcdfa7f7e4ca5e84963d79bae3937074682177ab9150968" -"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" -"checksum async-stream 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fb6fa015ebe961e9908ca4c1854e7dc7aabd4417da77b6a0466e4dfb4c8f6f69" -"checksum async-stream-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f0d8c5b411e36dcfb04388bacfec54795726b1f0148adcb0f377a96d6747e0e" +"checksum arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" +"checksum async-stream 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "58982858be7540a465c790b95aaea6710e5139bf8956b1d1344d014fa40100b0" +"checksum async-stream-impl 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "393356ed99aa7bff0ac486dde592633b83ab02bd254d8c209d5b9f1d0f533480" "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" -"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +"checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" "checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" "checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" @@ -1379,64 +1069,55 @@ dependencies = [ "checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09" "checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" -"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +"checksum bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c85319f157e4e26c703678e68e26ab71a46c0199286fa670b21cc9fec13d895" "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" -"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" -"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" -"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" -"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263a" -"checksum futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "b35b6263fb1ef523c3056565fa67b1d16f0a8604ff12b11b08c25f28a734c60a" -"checksum futures-executor-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "75236e88bd9fe88e5e8bfcd175b665d0528fe03ca4c5207fabc028c8f9d93e98" -"checksum futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f4914ae450db1921a56c91bde97a27846287d062087d4a652efc09bb3a01ebda" -"checksum futures-join-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "59e260e6b48ce7d99936c40a7088d782a499a67bef41da5481d21b439454bcea" -"checksum futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "3b1dce2a0267ada5c6ff75a8ba864b4e679a9e2aa44262af7a3b5516d530d76e" -"checksum futures-select-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "df2ae43560eb10b5e50604c53bead6c9c75eade7081390cd3cce66e1582958f7" -"checksum futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "86f148ef6b69f75bb610d4f9a2336d4fc88c4b5b67129d1a340dd0fd362efeec" -"checksum futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d" +"checksum futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b6f16056ecbb57525ff698bb955162d0cd03bee84e6241c27ff75c08d8ca5987" +"checksum futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fcae98ca17d102fd8a3603727b9259fcf7fa4239b603d2142926189bc8999b86" +"checksum futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "79564c427afefab1dfb3298535b21eda083ef7935b4f0ecbfcb121f0aec10866" +"checksum futures-executor 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e274736563f686a837a0568b478bdabfeaec2dca794b5649b04e2fe1627c231" +"checksum futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e676577d229e70952ab25f3945795ba5b16d63ca794ca9d2c860e5595d20b5ff" +"checksum futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "52e7c56c15537adb4f76d0b7a76ad131cb4d2f4f32d3b0bcabcbe1c7c5e87764" +"checksum futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "171be33efae63c2d59e6dbba34186fe0d6394fb378069a76dfd80fdcffd43c16" +"checksum futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0bae52d6b29cf440e298856fec3965ee6fa71b06aa7495178615953fd669e5f9" +"checksum futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d66274fb76985d3c62c886d1da7ac4c0903a8c9f754e8fe0f35a6a6cc39e76" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" "checksum getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6171a6cc63fbabbe27c2b5ee268e8b7fe5dc1eb0dd2dfad537c1dfed6f69117e" -"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -"checksum h2 0.2.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0f107db1419ef8271686187b1a5d47c6431af4a7f4d98b495e7b7fc249bb0a78" -"checksum headers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6e2e51d356081258ef05ff4c648138b5d3fe64b7300aaad3b820554a2b7fb6" -"checksum headers-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "967131279aaa9f7c20c7205b45a391638a83ab118e6509b2d0ccbe08de044237" -"checksum headers-derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f33cf300c485e3cbcba0235013fcc768723451c9b84d1b31aa7fec0491ac9a11" -"checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4" -"checksum http-body 0.2.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1f3aef6f3de2bd8585f5b366f3f550b5774500b4764d00cf00f903c95749eec3" +"checksum h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9433d71e471c1736fd5a61b671fc0b148d7a2992f666c958d03cd8feb3b88d1" +"checksum headers 0.2.3 (git+https://github.com/hyperium/headers)" = "" +"checksum headers-core 0.1.1 (git+https://github.com/hyperium/headers)" = "" +"checksum http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" +"checksum http-body 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "11f5aaac2428368dbf2a8b63f7f3ef30173ed4692777ae91f4e3bbf492aacdb6" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" -"checksum hyper 0.13.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2d05aa523087ac0b9d8b93dd80d5d482a697308ed3b0dca7b0667511a7fa7cdc" +"checksum hyper 0.13.0-alpha.4 (git+https://github.com/hyperium/hyper)" = "" "checksum indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4d6d89e0948bf10c08b9ecc8ac5b83f07f857ebe2c0cbe38de15b4e4f510356" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" "checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" -"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" -"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" "checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" -"checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" +"checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f" +"checksum mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e374eff525ce1c5b7687c4cef63943e7686524a387933ad27ca7ec43779cb3" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "396aa0f2003d7df8395cb93e09871561ccc3e785f0acb369170e8cc74ddf9226" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" "checksum pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "94b90146c7216e4cb534069fb91366de4ea0ea353105ee45ed297e2d1619e469" "checksum pin-project-internal 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "44ca92f893f0656d3cba8158dd0f2b99b94de256a4a54e870bd6922fcc6c8355" +"checksum pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f0af6cbca0e6e3ce8692ee19fb8d734b641899e07b68eb73e9bbbd32f1703991" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e688f31d92ffd7c1ddc57a1b4e6d773c0f2a14ee437a4b0a4f5a69c80eb221c8" @@ -1465,43 +1146,25 @@ dependencies = [ "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b143cceb2ca5e56d5671988ef8b15615733e7ee16cd348e064333b251b89343f" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae" "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" -"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "fec2851eb56d010dc9a21b89ca53ee75e6528bab60c11e89d38390904982da9f" "checksum serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "cb4dc18c61206b08dc98216c98faa0232f4337e1e1b8574551d5bad29ea1b425" "checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" "checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" +"checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" -"checksum spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbdb51a221842709c2dd65b62ad4b78289fc3e706a02c17a26104528b6aa7837" -"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" +"checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85" "checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" -"checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" "checksum thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "cc6b305ec0e323c7b6cfff6098a22516e0063d0bb7c3d88660a890217dca099a" "checksum thiserror-impl 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45ba8d810d9c48fc456b7ad54574e8bfb7c7918a57ad7a6e6a0985d7959e8597" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1f17f5d6ab0f35c1506678b28fb1798bdf74fcb737e9843c7b17b73e426eba38" -"checksum tokio-codec 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9f5d22fd1e84bd4045d28813491cb7d7caae34d45c80517c2213f09a85e8787a" -"checksum tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8" -"checksum tokio-fs 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bf85e16971e06e680c622e0c1b455be94b086275c5ddcd6d4a83a2bfbb83cda" -"checksum tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "112784d5543df30660b04a72ca423bfbd90e8bb32f94dcf610f15401218b22c5" -"checksum tokio-macros 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "86b616374bcdadd95974e1f0dfca07dc913f1163c53840c0d664aca35114964e" -"checksum tokio-net 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a441682cd32f3559383112c4a7f372f5c9fa1950c5cf8c8dd05274a2ce8c2654" -"checksum tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2" -"checksum tokio-timer 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b97c1587fe71018eb245a4a9daa13a5a3b681bbc1f7fdadfe24720e141472c13" -"checksum toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7aabe75941d914b72bf3e5d3932ed92ce0664d49d8432305a8b547c37227724" -"checksum tower-make 0.3.0-alpha.2a (registry+https://github.com/rust-lang/crates.io-index)" = "316d47dd40cde4ac5d88110eaf9a10a4e2a68612d9c056cd2aa24e37dcb484cd" -"checksum tower-service 0.3.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "63ff37396cd966ce43bea418bfa339f802857495f797dafa00bea5b7221ebdfa" -"checksum tracing 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c42f6ea7b45c17427e628509f5fac99debf2869760c6248aa3f95fc035313ade" -"checksum tracing-attributes 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5b43a1835d0cb99f4a36fcdd0f777f72e4d4ff2eb6e78a0e105ac25e41309efa" -"checksum tracing-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e94af5e2a5f1700cc58127f93d4b7e46c2b925856592066b9880aabce633b6d8" +"checksum tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bcced6bb623d4bff3739c176c415f13c418f426395c169c9c3cd9a492c715b16" +"checksum tokio-macros 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5795a71419535c6dcecc9b6ca95bdd3c2d6142f7e8343d7beb9923f129aa87e" +"checksum tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930" +"checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" -"checksum trybuild 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c718030bb5c88b65994c4200d929d10628d653c7798a35012f8ff4c4211624a8" "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" "checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" @@ -1511,10 +1174,8 @@ dependencies = [ "checksum want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" "checksum wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd5442abcac6525a045cc8c795aedb60da7a2e5e89c7bf18a0d5357849bb23c7" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" +"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index b5a226e0..59b31889 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -5,21 +5,18 @@ authors = ["David Barsky "] edition = "2018" [dependencies] -futures-preview = { version = "0.3.0-alpha.19", features = ["async-await"] } -tokio = { version = "0.2.0-alpha.6" } -hyper = { version = "0.13.0-alpha.4", features = ["unstable-stream"] } -async-stream = "0.1" +futures = "0.3.1" +tokio = { version = "0.2.4", features = ["full"] } +hyper = { git = "https://github.com/hyperium/hyper" } +async-stream = "0.2" serde = { version = "1", features = ["derive"] } thiserror = "1.0" anyhow = "1.0" serde_json = "1.0.39" -bytes = "0.4" -http = "0.1.17" -headers = "0.2.1" +bytes = "0.5" +http = "0.2" +headers = { git = "https://github.com/hyperium/headers" } lazy_static = "1.3.0" proptest = { git = "https://github.com/davidbarsky/proptest" } proptest-attributes = { git = "https://github.com/davidbarsky/proptest" } lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } - -[dev-dependencies] -trybuild = "1" diff --git a/lambda/src/client.rs b/lambda/src/client.rs index ed0d35b6..91810250 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -22,20 +22,11 @@ impl Client { fn set_origin(&self, req: Request>) -> Result>, anyhow::Error> { let (mut parts, body) = req.into_parts(); let (scheme, authority) = { - let scheme = self - .base - .scheme_part() - .expect("Scheme not found"); - let authority = self - .base - .authority_part() - .expect("Authority not found"); + let scheme = self.base.scheme().expect("Scheme not found"); + let authority = self.base.authority().expect("Authority not found"); (scheme, authority) }; - let path = parts - .uri - .path_and_query() - .expect("PathAndQuery not found"); + let path = parts.uri.path_and_query().expect("PathAndQuery not found"); let uri = Uri::builder() .scheme(scheme.clone()) @@ -48,7 +39,10 @@ impl Client { Ok(Request::from_parts(parts, body)) } - pub(crate) async fn call(&mut self, req: Request>) -> Result, anyhow::Error> { + pub(crate) async fn call( + &mut self, + req: Request>, + ) -> Result, anyhow::Error> { let req = self.set_origin(req)?; let (parts, body) = req.into_parts(); let body = Body::from(body); diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index f9fa6e1d..5b6c831a 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -33,6 +33,7 @@ //! } //! ``` pub use crate::types::LambdaCtx; +use bytes::buf::BufExt; use client::{events, Client}; use futures::{pin_mut, prelude::*}; use http::{Request, Response, Uri}; @@ -185,7 +186,8 @@ where Output: Serialize, >::Err: std::fmt::Debug, { - let uri = env::var("AWS_LAMBDA_RUNTIME_API").expect("Unable to find environment variable `AWS_LAMBDA_RUNTIME_API`"); + let uri = env::var("AWS_LAMBDA_RUNTIME_API") + .expect("Unable to find environment variable `AWS_LAMBDA_RUNTIME_API`"); let uri = Uri::from_str(&uri).map_err(|e| Error::InvalidUri { uri, source: e })?; let mut client = Client::new(uri); let stream = events(client.clone()); @@ -195,8 +197,8 @@ where let (parts, body) = event?.into_parts(); let mut ctx: LambdaCtx = LambdaCtx::try_from(parts.headers)?; ctx.env_config = Config::from_env()?; - let body = body.try_concat().await.map_err(Error::Hyper)?; - let body = serde_json::from_slice(&body).map_err(|e| Error::Json { source: e })?; + let body = hyper::body::aggregate(body).await.map_err(Error::Hyper)?; + let body = serde_json::from_reader(body.reader()).map_err(|e| Error::Json { source: e })?; match handler.call(body, Some(ctx.clone())).await { Ok(res) => { @@ -212,12 +214,13 @@ where Err(err) => { let diagnositic = Diagnostic { error_message: format!("{:?}", err), - error_type: type_name_of_val(err).to_string() + error_type: type_name_of_val(err).to_string(), }; - let body = serde_json::to_vec(&diagnositic).map_err(|e| Error::Json { source: e })?; + let body = + serde_json::to_vec(&diagnositic).map_err(|e| Error::Json { source: e })?; let req = EventErrorRequest { request_id: &ctx.id, - body + body, }; let req = req.into_req()?; @@ -231,4 +234,4 @@ where fn type_name_of_val(_: T) -> &'static str { std::any::type_name::() -} \ No newline at end of file +} diff --git a/lambda/tests/compile-fail/no-args.rs b/lambda/tests/compile-fail/no-args.rs deleted file mode 100644 index ab690ad4..00000000 --- a/lambda/tests/compile-fail/no-args.rs +++ /dev/null @@ -1,5 +0,0 @@ -use lambda::lambda; - -#[lambda] -#[tokio::main] -async fn main() {} diff --git a/lambda/tests/compile-fail/no-args.stderr b/lambda/tests/compile-fail/no-args.stderr deleted file mode 100644 index e7dedcb3..00000000 --- a/lambda/tests/compile-fail/no-args.stderr +++ /dev/null @@ -1,18 +0,0 @@ -error: The #[lambda] macro can accept one or two arguments. - --> $DIR/no-args.rs:3:1 - | -3 | #[lambda] - | ^^^^^^^^^ - -error[E0601]: `main` function not found in crate `$CRATE` - --> $DIR/no-args.rs:1:1 - | -1 | / use lambda::lambda; -2 | | -3 | | #[lambda] -4 | | #[tokio::main] -5 | | async fn main() {} - | |__________________^ consider adding a `main` function to `$DIR/tests/compile-fail/no-args.rs` - -For more information about this error, try `rustc --explain E0601`. -error: could not compile `lambda-tests`. \ No newline at end of file diff --git a/lambda/tests/compile-fail/non-async-main.rs b/lambda/tests/compile-fail/non-async-main.rs deleted file mode 100644 index 16dfa77f..00000000 --- a/lambda/tests/compile-fail/non-async-main.rs +++ /dev/null @@ -1,3 +0,0 @@ -#[lambda] -#[tokio::main] -fn main() {} diff --git a/lambda/tests/compile-fail/non-async-main.stderr b/lambda/tests/compile-fail/non-async-main.stderr deleted file mode 100644 index 7b7b06bf..00000000 --- a/lambda/tests/compile-fail/non-async-main.stderr +++ /dev/null @@ -1,22 +0,0 @@ -error: the async keyword is missing from the function declaration - --> $DIR/non-async-main.rs:3:1 - | -3 | fn main() {} - | ^^ - -error: cannot find attribute `lambda` in this scope - --> $DIR/non-async-main.rs:1:3 - | -1 | #[lambda] - | ^^^^^^ - -error[E0601]: `main` function not found in crate `$CRATE` - --> $DIR/non-async-main.rs:1:1 - | -1 | / #[lambda] -2 | | #[tokio::main] -3 | | fn main() {} - | |____________^ consider adding a `main` function to `$DIR/tests/compile-fail/non-async-main.rs` - -For more information about this error, try `rustc --explain E0601`. -error: could not compile `lambda-tests`. \ No newline at end of file diff --git a/lambda/tests/tests.rs b/lambda/tests/tests.rs deleted file mode 100644 index 34054f63..00000000 --- a/lambda/tests/tests.rs +++ /dev/null @@ -1,10 +0,0 @@ -use trybuild::TestCases; - -#[test] -fn ui_tests() { - let t = TestCases::new(); - t.pass("tests/ui/arg.rs"); - t.pass("tests/ui/arg-plus-ctx.rs"); - t.compile_fail("tests/compile-fail/no-args.rs"); - t.compile_fail("tests/compile-fail/non-async-main.rs"); -} diff --git a/lambda/tests/ui/arg-plus-ctx.rs b/lambda/tests/ui/arg-plus-ctx.rs deleted file mode 100644 index 4967c19e..00000000 --- a/lambda/tests/ui/arg-plus-ctx.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![feature(start)] - -use lambda::{lambda, LambdaCtx}; - -type Error = Box; - -#[lambda] -#[tokio::main] -async fn main(s: String, ctx: LambdaCtx) -> Result { - let _ = ctx; - Ok(s) -} - -#[start] -fn start(_argc: isize, _argv: *const *const u8) -> isize { - 0 -} \ No newline at end of file diff --git a/lambda/tests/ui/arg.rs b/lambda/tests/ui/arg.rs deleted file mode 100644 index 7b868996..00000000 --- a/lambda/tests/ui/arg.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![feature(start)] - -use lambda::lambda; - -type Error = Box; - -#[lambda] -#[tokio::main] -async fn main(s: String) -> Result { - Ok(s) -} - -#[start] -fn start(_argc: isize, _argv: *const *const u8) -> isize { - 0 -} \ No newline at end of file From 4d21c0084b698b04a238e00e679a93195b9ff150 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Mon, 9 Dec 2019 13:54:36 -0500 Subject: [PATCH 16/34] WIP --- Cargo.lock | 1 + lambda/Cargo.toml | 1 + lambda/examples/hello-with-ctx.rs | 14 +-- lambda/examples/hello-without-macro.rs | 22 +++-- lambda/examples/hello.rs | 12 ++- lambda/src/lib.rs | 124 ++++++++++++++++++++----- 6 files changed, 131 insertions(+), 43 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4b4110d9..df993b7f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -385,6 +385,7 @@ dependencies = [ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 59b31889..ad2ddae3 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -13,6 +13,7 @@ serde = { version = "1", features = ["derive"] } thiserror = "1.0" anyhow = "1.0" serde_json = "1.0.39" +tower-service = "0.3" bytes = "0.5" http = "0.2" headers = { git = "https://github.com/hyperium/headers" } diff --git a/lambda/examples/hello-with-ctx.rs b/lambda/examples/hello-with-ctx.rs index f0eec312..e1d27b99 100644 --- a/lambda/examples/hello-with-ctx.rs +++ b/lambda/examples/hello-with-ctx.rs @@ -1,9 +1,11 @@ use lambda::{lambda, LambdaCtx}; type Error = Box; -#[lambda] -#[tokio::main] -async fn main(event: String, ctx: LambdaCtx) -> Result { - let _ = ctx; - Ok(event) -} +fn main() {} + +// #[lambda] +// #[tokio::main] +// async fn main(event: String, ctx: LambdaCtx) -> Result { +// let _ = ctx; +// Ok(event) +// } diff --git a/lambda/examples/hello-without-macro.rs b/lambda/examples/hello-without-macro.rs index fde295d2..af3a3050 100644 --- a/lambda/examples/hello-without-macro.rs +++ b/lambda/examples/hello-without-macro.rs @@ -2,13 +2,15 @@ use lambda::{handler_fn, LambdaCtx}; type Error = Box; -#[tokio::main] -async fn main() -> Result<(), Error> { - let func = handler_fn(func); - lambda::run(func).await?; - Ok(()) -} - -async fn func(event: String, _: Option) -> Result { - Ok(event) -} +fn main() {} + +// #[tokio::main] +// async fn main() -> Result<(), Error> { +// let func = handler_fn(func); +// lambda::run(func).await?; +// Ok(()) +// } + +// async fn func(event: String, _: Option) -> Result { +// Ok(event) +// } diff --git a/lambda/examples/hello.rs b/lambda/examples/hello.rs index 58549494..41398d84 100644 --- a/lambda/examples/hello.rs +++ b/lambda/examples/hello.rs @@ -2,8 +2,10 @@ use lambda::lambda; type Error = Box; -#[lambda] -#[tokio::main] -async fn main(event: String) -> Result { - Ok(event) -} +fn main() {} + +// #[lambda] +// #[tokio::main] +// async fn main(event: String) -> Result { +// Ok(event) +// } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 5b6c831a..57cee3b3 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -39,9 +39,9 @@ use futures::{pin_mut, prelude::*}; use http::{Request, Response, Uri}; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; -use std::str::FromStr; use std::{convert::TryFrom, env, fmt}; use thiserror::Error; +use tower_service::Service; mod client; mod requests; @@ -100,48 +100,92 @@ impl Config { } } -/// A trait describing an asynchronous function from `A` to `R`. `A` and `R` must implement [`Deserialize`](serde::Deserialize) and [`Serialize`](serde::Serialize). -pub trait Handler +/// A trait describing an asynchronous function `A` to `B. +pub trait Handler { + /// Errors returned by this handler. + type Err; + /// The future response value of this handler. + type Fut: Future>; + /// Process the incoming event and return the response asynchronously. + /// + /// # Arguments + /// * `event` - The data received in the invocation request + /// * `ctx` - The context for the current invocation + fn call(&mut self, event: A) -> Self::Fut; +} + +pub trait HttpHandler { + /// Errors returned by this handler. + type Err; + /// The future response value of this handler. + type Fut: Future>; + /// Process the incoming request and return the response asynchronously. + fn call(&mut self, req: A) -> Self::Fut; +} + +impl HttpHandler, Response> for T +where + T: Handler, Response>, + A: for<'de> Deserialize<'de>, + B: Serialize, +{ + /// Errors returned by this handler. + type Err = T::Err; + /// The future response value of this handler. + type Fut = T::Fut; + /// Process the incoming request and return the response asynchronously. + fn call(&mut self, req: Request) -> Self::Fut { + T::call(self, req) + } +} + +pub trait EventHandler where A: for<'de> Deserialize<'de>, - R: Serialize, + B: Serialize, { /// Errors returned by this handler. type Err; /// The future response value of this handler. - type Fut: Future>; + type Fut: Future>; /// Process the incoming event and return the response asynchronously. /// /// # Arguments /// * `event` - The data received in the invocation request /// * `ctx` - The context for the current invocation - fn call(&mut self, event: A, ctx: Option) -> Self::Fut; + fn call(&mut self, event: A) -> Self::Fut; } -/// A trait describing an asynchronous function from `Request` to `Response`. `A` and `B` must implement [`Deserialize`](serde::Deserialize) and [`Serialize`](serde::Serialize). -pub trait HttpHandler: Handler, Response> +impl EventHandler for T where - Request: for<'de> Deserialize<'de>, - Response: Serialize, + T: Handler, + A: for<'de> Deserialize<'de>, + B: Serialize, { + /// Errors returned by this handler. + type Err = T::Err; + /// The future response value of this handler. + type Fut = T::Fut; /// Process the incoming request and return the response asynchronously. - fn call_http(&mut self, event: Request) -> , Response>>::Fut; + fn call(&mut self, req: A) -> Self::Fut { + T::call(self, req) + } } /// Returns a new `HandlerFn` with the given closure. -pub fn handler_fn(f: Function) -> HandlerFn { +pub fn handler_fn(f: F) -> HandlerFn { HandlerFn { f } } /// A `Handler` or `HttpHandler` implemented by a closure. #[derive(Clone, Debug)] -pub struct HandlerFn { - f: Function, +pub struct HandlerFn { + f: F, } impl Handler for HandlerFn where - Function: Fn(Event, Option) -> Fut, + Function: Fn(Event) -> Fut, Event: for<'de> Deserialize<'de>, Output: Serialize, Fut: Future> + Send, @@ -149,9 +193,9 @@ where { type Err = Err; type Fut = Fut; - fn call(&mut self, req: Event, ctx: Option) -> Self::Fut { + fn call(&mut self, req: Event) -> Self::Fut { // we pass along the context here - (self.f)(req, ctx) + (self.f)(req) } } @@ -179,16 +223,19 @@ where /// Ok(event) /// } /// ``` -pub async fn run(mut handler: Function) -> Result<(), anyhow::Error> +pub async fn run( + mut handler: Function, + uri: Uri, +) -> Result<(), anyhow::Error> where Function: Handler, Event: for<'de> Deserialize<'de>, Output: Serialize, >::Err: std::fmt::Debug, { - let uri = env::var("AWS_LAMBDA_RUNTIME_API") - .expect("Unable to find environment variable `AWS_LAMBDA_RUNTIME_API`"); - let uri = Uri::from_str(&uri).map_err(|e| Error::InvalidUri { uri, source: e })?; + // let uri = env::var("AWS_LAMBDA_RUNTIME_API") + // .expect("Unable to find environment variable `AWS_LAMBDA_RUNTIME_API`"); + // let uri = Uri::from_str(&uri).map_err(|e| Error::InvalidUri { uri, source: e })?; let mut client = Client::new(uri); let stream = events(client.clone()); pin_mut!(stream); @@ -200,7 +247,7 @@ where let body = hyper::body::aggregate(body).await.map_err(Error::Hyper)?; let body = serde_json::from_reader(body.reader()).map_err(|e| Error::Json { source: e })?; - match handler.call(body, Some(ctx.clone())).await { + match handler.call(body).await { Ok(res) => { let body = serde_json::to_vec(&res).map_err(|e| Error::Json { source: e })?; let req = EventCompletionRequest { @@ -232,6 +279,39 @@ where Ok(()) } +struct Executor { + client: S, + function: F, + _phan: std::marker::PhantomData, +} + +impl Executor +where + S: Service, +{ + fn new(client: S, function: F) -> Executor { + Self { + client, + function, + _phan: std::marker::PhantomData, + } + } +} + fn type_name_of_val(_: T) -> &'static str { std::any::type_name::() } + +#[tokio::test] +async fn test_run() -> Result<(), anyhow::Error> { + async fn test_handler(event: String) -> Result { + Ok(event) + } + + run( + handler_fn(test_handler), + Uri::from_static("http://localhost:2000"), + ) + .await?; + Ok(()) +} From 2447e4e73b92dc7d343ead5c313ff6467921c8c5 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Mon, 9 Dec 2019 19:32:17 -0500 Subject: [PATCH 17/34] more WIP changes --- Cargo.lock | 22 ------------ lambda/Cargo.toml | 1 - lambda/src/client.rs | 64 +++++++++++++++++++++-------------- lambda/src/lib.rs | 77 ++++++++++++++++++++---------------------- lambda/src/requests.rs | 17 ++++++---- 5 files changed, 84 insertions(+), 97 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index df993b7f..69be4445 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,25 +10,6 @@ name = "arc-swap" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "async-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-stream-impl 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "async-stream-impl" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "autocfg" version = "0.1.6" @@ -371,7 +352,6 @@ name = "lambda" version = "0.1.0" dependencies = [ "anyhow 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", - "async-stream 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "headers 0.2.3 (git+https://github.com/hyperium/headers)", @@ -1059,8 +1039,6 @@ dependencies = [ [metadata] "checksum anyhow 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "e19f23ab207147bbdbcdfa7f7e4ca5e84963d79bae3937074682177ab9150968" "checksum arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" -"checksum async-stream 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "58982858be7540a465c790b95aaea6710e5139bf8956b1d1344d014fa40100b0" -"checksum async-stream-impl 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "393356ed99aa7bff0ac486dde592633b83ab02bd254d8c209d5b9f1d0f533480" "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" "checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" "checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index ad2ddae3..7a340833 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -8,7 +8,6 @@ edition = "2018" futures = "0.3.1" tokio = { version = "0.2.4", features = ["full"] } hyper = { git = "https://github.com/hyperium/hyper" } -async-stream = "0.2" serde = { version = "1", features = ["derive"] } thiserror = "1.0" anyhow = "1.0" diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 91810250..416ed8cb 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -1,25 +1,25 @@ -use crate::requests::{IntoRequest, NextEventRequest}; -use crate::Error; -use async_stream::try_stream; -use futures::prelude::*; +use crate::Err; use http::{Request, Response, Uri}; use hyper::Body; +use std::task; +use tower_service::Service; #[derive(Debug, Clone)] -pub(crate) struct Client { +pub(crate) struct Client { base: Uri, - client: hyper::Client, + client: S, } -impl Client { - pub fn new(base: Uri) -> Self { - Self { - base, - client: hyper::Client::new(), - } +impl Client +where + S: Service, Response = Response>, + >>::Error: Into + Send + Sync + 'static + std::error::Error, +{ + pub fn new(base: Uri, client: S) -> Self { + Self { base, client } } - fn set_origin(&self, req: Request>) -> Result>, anyhow::Error> { + fn set_origin(&self, req: Request) -> Result, Err> { let (mut parts, body) = req.into_parts(); let (scheme, authority) = { let scheme = self.base.scheme().expect("Scheme not found"); @@ -39,27 +39,39 @@ impl Client { Ok(Request::from_parts(parts, body)) } - pub(crate) async fn call( - &mut self, - req: Request>, - ) -> Result, anyhow::Error> { + pub(crate) async fn call(&mut self, req: Request) -> Result, Err> { let req = self.set_origin(req)?; let (parts, body) = req.into_parts(); let body = Body::from(body); let req = Request::from_parts(parts, body); - let response = self.client.request(req).await.map_err(Error::Hyper)?; + let response = self.client.call(req).await?; Ok(response) } } -pub(crate) fn events(client: Client) -> impl Stream, anyhow::Error>> { - try_stream! { - let mut client = client; - loop { - let req = NextEventRequest; - let req = req.into_req()?; - let event = client.call(req).await?; - yield event; +struct SimulatedClient; + +impl Service> for SimulatedClient { + type Response = Response; + type Error = Err; + type Future = futures::future::Ready>; + + fn poll_ready(&mut self, _: &mut task::Context<'_>) -> task::Poll> { + task::Poll::Ready(Ok(())) + } + + fn call(&mut self, req: Request) -> Self::Future { + let (headers, body) = req.into_parts(); + let path_and_query = headers + .uri + .path_and_query() + .expect("missing path and query"); + + match path_and_query.as_str() { + "/runtime/invocation/next" => unimplemented!(), + "/runtime/invocation/{}/response" => unimplemented!(), + "/runtime/invocation/{}/error" => unimplemented!(), + _ => unimplemented!(), } } } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 57cee3b3..745a616f 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -34,9 +34,10 @@ //! ``` pub use crate::types::LambdaCtx; use bytes::buf::BufExt; -use client::{events, Client}; -use futures::{pin_mut, prelude::*}; +use client::Client; +use futures::prelude::*; use http::{Request, Response, Uri}; +use hyper::Body; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; use std::{convert::TryFrom, env, fmt}; @@ -48,9 +49,11 @@ mod requests; /// Types availible to a Lambda function. mod types; -use requests::{EventCompletionRequest, EventErrorRequest, IntoRequest}; +use requests::{EventCompletionRequest, EventErrorRequest, IntoRequest, NextEventRequest}; use types::Diagnostic; +type Err = Box; + #[derive(Error, Debug)] enum Error { #[error("error making an http request")] @@ -177,23 +180,34 @@ pub fn handler_fn(f: F) -> HandlerFn { HandlerFn { f } } +#[test] +fn construct_handler_fn() { + async fn event(event: String) -> Result { + unimplemented!() + } + let f = handler_fn(event); + + async fn http(event: Request) -> Result, Error> { + unimplemented!() + } + let f = handler_fn(event); +} + /// A `Handler` or `HttpHandler` implemented by a closure. #[derive(Clone, Debug)] pub struct HandlerFn { f: F, } -impl Handler for HandlerFn +impl Handler for HandlerFn where - Function: Fn(Event) -> Fut, - Event: for<'de> Deserialize<'de>, - Output: Serialize, - Fut: Future> + Send, + F: Fn(A) -> Fut, + Fut: Future> + Send, Err: Into> + fmt::Debug, { type Err = Err; type Fut = Fut; - fn call(&mut self, req: Event) -> Self::Fut { + fn call(&mut self, req: A) -> Self::Fut { // we pass along the context here (self.f)(req) } @@ -223,25 +237,22 @@ where /// Ok(event) /// } /// ``` -pub async fn run( - mut handler: Function, - uri: Uri, -) -> Result<(), anyhow::Error> +pub async fn run(mut handler: F, uri: Uri, client: S) -> Result<(), Err> where - Function: Handler, - Event: for<'de> Deserialize<'de>, - Output: Serialize, - >::Err: std::fmt::Debug, + F: Handler, + >::Err: fmt::Debug, + A: for<'de> Deserialize<'de>, + B: Serialize, + S: Service, Response = Response>, + >>::Error: Into + Send + Sync + 'static + std::error::Error, { - // let uri = env::var("AWS_LAMBDA_RUNTIME_API") - // .expect("Unable to find environment variable `AWS_LAMBDA_RUNTIME_API`"); - // let uri = Uri::from_str(&uri).map_err(|e| Error::InvalidUri { uri, source: e })?; - let mut client = Client::new(uri); - let stream = events(client.clone()); - pin_mut!(stream); + let mut client = Client::new(uri, client); + loop { + let req = NextEventRequest; + let req = req.into_req()?; + let event = client.call(req).await?; + let (parts, body) = event.into_parts(); - while let Some(event) = stream.next().await { - let (parts, body) = event?.into_parts(); let mut ctx: LambdaCtx = LambdaCtx::try_from(parts.headers)?; ctx.env_config = Config::from_env()?; let body = hyper::body::aggregate(body).await.map_err(Error::Hyper)?; @@ -275,8 +286,6 @@ where } } } - - Ok(()) } struct Executor { @@ -301,17 +310,3 @@ where fn type_name_of_val(_: T) -> &'static str { std::any::type_name::() } - -#[tokio::test] -async fn test_run() -> Result<(), anyhow::Error> { - async fn test_handler(event: String) -> Result { - Ok(event) - } - - run( - handler_fn(test_handler), - Uri::from_static("http://localhost:2000"), - ) - .await?; - Ok(()) -} diff --git a/lambda/src/requests.rs b/lambda/src/requests.rs index 90b46921..5e4227d8 100644 --- a/lambda/src/requests.rs +++ b/lambda/src/requests.rs @@ -1,10 +1,11 @@ use anyhow::Error; use http::{Method, Request, Uri}; +use hyper::Body; use serde::Serialize; use std::str::FromStr; pub(crate) trait IntoRequest { - fn into_req(self) -> Result>, Error>; + fn into_req(self) -> Result, Error>; } // /runtime/invocation/next @@ -12,11 +13,11 @@ pub(crate) trait IntoRequest { pub(crate) struct NextEventRequest; impl IntoRequest for NextEventRequest { - fn into_req(self) -> Result>, Error> { + fn into_req(self) -> Result, Error> { let req = Request::builder() .method(Method::GET) .uri(Uri::from_static("/runtime/invocation/next")) - .body(Vec::new())?; + .body(Body::empty())?; Ok(req) } } @@ -39,10 +40,11 @@ impl<'a, T> IntoRequest for EventCompletionRequest<'a, T> where T: for<'serialize> Serialize, { - fn into_req(self) -> Result>, Error> { + fn into_req(self) -> Result, Error> { let uri = format!("/runtime/invocation/{}/response", self.request_id); let uri = Uri::from_str(&uri)?; let body = serde_json::to_vec(&self.body)?; + let body = Body::from(body); let req = Request::builder() .method(Method::POST) @@ -74,10 +76,11 @@ impl<'a, T> IntoRequest for EventErrorRequest<'a, T> where T: for<'serialize> Serialize, { - fn into_req(self) -> Result>, Error> { + fn into_req(self) -> Result, Error> { let uri = format!("/runtime/invocation/{}/error", self.request_id); let uri = Uri::from_str(&uri)?; let body = serde_json::to_vec(&self.body)?; + let body = Body::from(body); let req = Request::builder() .method(Method::POST) @@ -104,7 +107,7 @@ fn test_event_error_request() { struct InitErrorRequest; impl IntoRequest for InitErrorRequest { - fn into_req(self) -> Result>, Error> { + fn into_req(self) -> Result, Error> { let uri = format!("/runtime/init/error"); let uri = Uri::from_str(&uri)?; @@ -112,7 +115,7 @@ impl IntoRequest for InitErrorRequest { .method(Method::POST) .uri(uri) .header("lambda-runtime-function-error-type", "unhandled") - .body(Vec::new())?; + .body(Body::empty())?; Ok(req) } } From a57f2d1b1e092d77567baf0c61531f3f447aec6c Mon Sep 17 00:00:00 2001 From: David Barsky Date: Fri, 20 Dec 2019 18:10:54 -0500 Subject: [PATCH 18/34] test expected endpoints --- Cargo.lock | 14 ++-- lambda/Cargo.toml | 2 +- lambda/src/client.rs | 158 ++++++++++++++++++++++++++++++++++------- lambda/src/lib.rs | 11 +-- lambda/src/requests.rs | 48 ++++++++++--- lambda/src/support.rs | 94 ++++++++++++++++++++++++ lambda/src/types.rs | 9 +-- 7 files changed, 282 insertions(+), 54 deletions(-) create mode 100644 lambda/src/support.rs diff --git a/Cargo.lock b/Cargo.lock index 69be4445..06b6e45c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -284,7 +284,7 @@ dependencies = [ [[package]] name = "http-body" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -298,8 +298,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hyper" -version = "0.13.0-alpha.4" -source = "git+https://github.com/hyperium/hyper#78e8da17cf8737720b452f3077a2de90184f9b95" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -307,7 +307,7 @@ dependencies = [ "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -356,7 +356,7 @@ dependencies = [ "futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "headers 0.2.3 (git+https://github.com/hyperium/headers)", "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.13.0-alpha.4 (git+https://github.com/hyperium/hyper)", + "hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "lambda-attributes 0.1.0", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.4 (git+https://github.com/davidbarsky/proptest)", @@ -1073,9 +1073,9 @@ dependencies = [ "checksum headers 0.2.3 (git+https://github.com/hyperium/headers)" = "" "checksum headers-core 0.1.1 (git+https://github.com/hyperium/headers)" = "" "checksum http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" -"checksum http-body 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "11f5aaac2428368dbf2a8b63f7f3ef30173ed4692777ae91f4e3bbf492aacdb6" +"checksum http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" -"checksum hyper 0.13.0-alpha.4 (git+https://github.com/hyperium/hyper)" = "" +"checksum hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8bf49cfb32edee45d890537d9057d1b02ed55f53b7b6a30bae83a38c9231749e" "checksum indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4d6d89e0948bf10c08b9ecc8ac5b83f07f857ebe2c0cbe38de15b4e4f510356" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 7a340833..1e0e5463 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] futures = "0.3.1" tokio = { version = "0.2.4", features = ["full"] } -hyper = { git = "https://github.com/hyperium/hyper" } +hyper = "0.13" serde = { version = "1", features = ["derive"] } thiserror = "1.0" anyhow = "1.0" diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 416ed8cb..20da87b8 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -1,7 +1,16 @@ -use crate::Err; -use http::{Request, Response, Uri}; +use crate::{ + requests::{ + EventCompletionRequest, EventErrorRequest, IntoRequest, IntoResponse, NextEventRequest, + NextEventResponse, + }, + support::http, + types::Diagnostic, + Err, +}; +use bytes::buf::BufExt as _; +use http::{uri::PathAndQuery, HeaderValue, Method, Request, Response, StatusCode, Uri}; use hyper::Body; -use std::task; +use std::convert::{TryFrom, TryInto}; use tower_service::Service; #[derive(Debug, Clone)] @@ -15,8 +24,13 @@ where S: Service, Response = Response>, >>::Error: Into + Send + Sync + 'static + std::error::Error, { - pub fn new(base: Uri, client: S) -> Self { - Self { base, client } + pub fn with(base: T, client: S) -> Result + where + T: TryInto, + >::Error: std::error::Error + Send + Sync + 'static, + { + let base = base.try_into()?; + Ok(Self { base, client }) } fn set_origin(&self, req: Request) -> Result, Err> { @@ -49,29 +63,121 @@ where } } -struct SimulatedClient; +#[tokio::test] +async fn next_event() -> Result<(), Err> { + let path = "/runtime/invocation/next"; + let server = http(move |req| { + async move { + assert_eq!(req.method(), Method::GET); + assert_eq!( + req.uri().path_and_query().unwrap(), + &http::uri::PathAndQuery::from_static(path) + ); -impl Service> for SimulatedClient { - type Response = Response; - type Error = Err; - type Future = futures::future::Ready>; + let rsp = NextEventResponse { + request_id: "8476a536-e9f4-11e8-9739-2dfe598c3fcd", + deadline: 1542409706888, + arn: "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime", + trace_id: "Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419", + body: vec![], + }; + let rsp = rsp.into_rsp().unwrap(); + rsp + } + }); - fn poll_ready(&mut self, _: &mut task::Context<'_>) -> task::Poll> { - task::Poll::Ready(Ok(())) - } + let url = format!("http://{}/", server.addr()); + let mut client = Client::with(url, hyper::Client::new())?; + let rsp = client.call(NextEventRequest.into_req()?).await?; + assert_eq!(rsp.status(), StatusCode::OK); + assert_eq!( + rsp.headers()["lambda-runtime-deadline-ms"], + &HeaderValue::try_from("1542409706888").unwrap() + ); + + Ok(()) +} + +#[tokio::test] +async fn ok_response() -> Result<(), Err> { + let id = "156cb537-e2d4-11e8-9b34-d36013741fb9"; + let server = http(move |req| { + let path = format!("/runtime/invocation/{}/response", id); - fn call(&mut self, req: Request) -> Self::Future { - let (headers, body) = req.into_parts(); - let path_and_query = headers - .uri - .path_and_query() - .expect("missing path and query"); - - match path_and_query.as_str() { - "/runtime/invocation/next" => unimplemented!(), - "/runtime/invocation/{}/response" => unimplemented!(), - "/runtime/invocation/{}/error" => unimplemented!(), - _ => unimplemented!(), + async move { + assert_eq!(req.method(), Method::POST); + assert_eq!( + req.uri().path_and_query().unwrap(), + &path.parse::().unwrap() + ); + + Response::builder() + .status(StatusCode::ACCEPTED) + .body(Body::empty()) + .unwrap() } - } + }); + + let req = EventCompletionRequest { + request_id: id, + body: "done", + }; + + let url = format!("http://{}/", server.addr()); + let mut client = Client::with(url, hyper::Client::new())?; + let rsp = client.call(req.into_req()?).await?; + assert_eq!(rsp.status(), StatusCode::ACCEPTED); + + Ok(()) +} + +#[tokio::test] +async fn error_response() -> Result<(), Err> { + let id = "156cb537-e2d4-11e8-9b34-d36013741fb9"; + let server = http(move |req| { + let path = format!("/runtime/invocation/{}/error", id); + + async move { + let (parts, body) = req.into_parts(); + let expected = Diagnostic { + error_type: "InvalidEventDataError".to_string(), + error_message: "Error parsing event data".to_string(), + }; + + let body = hyper::body::aggregate(body).await.unwrap(); + let actual = serde_json::from_reader(body.reader()).unwrap(); + assert_eq!(expected, actual); + + assert_eq!(parts.method, Method::POST); + assert_eq!( + parts.uri.path_and_query().unwrap(), + &path.parse::().unwrap() + ); + let expected = "unhandled"; + assert_eq!( + parts.headers["lambda-runtime-function-error-type"], + HeaderValue::try_from(expected).unwrap() + ); + + Response::builder() + .status(StatusCode::ACCEPTED) + .body(Body::empty()) + .unwrap() + } + }); + + let req = EventErrorRequest { + request_id: id, + diagnostic: Diagnostic { + error_type: "InvalidEventDataError".to_string(), + error_message: "Error parsing event data".to_string(), + }, + }; + + let url = format!("http://{}/", server.addr()); + let mut client = Client::with(url, hyper::Client::new())?; + let rsp = client.call(req.into_req()?).await?; + assert_eq!(rsp.status(), StatusCode::ACCEPTED); + + Ok(()) } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 745a616f..289d6799 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -46,6 +46,7 @@ use tower_service::Service; mod client; mod requests; +mod support; /// Types availible to a Lambda function. mod types; @@ -246,7 +247,7 @@ where S: Service, Response = Response>, >>::Error: Into + Send + Sync + 'static + std::error::Error, { - let mut client = Client::new(uri, client); + let mut client = Client::with(uri, client)?; loop { let req = NextEventRequest; let req = req.into_req()?; @@ -270,15 +271,15 @@ where client.call(req).await?; } Err(err) => { - let diagnositic = Diagnostic { + let diagnostic = Diagnostic { error_message: format!("{:?}", err), - error_type: type_name_of_val(err).to_string(), + error_type: type_name_of_val(err).to_owned(), }; let body = - serde_json::to_vec(&diagnositic).map_err(|e| Error::Json { source: e })?; + serde_json::to_vec(&diagnostic).map_err(|e| Error::Json { source: e })?; let req = EventErrorRequest { request_id: &ctx.id, - body, + diagnostic, }; let req = req.into_req()?; diff --git a/lambda/src/requests.rs b/lambda/src/requests.rs index 5e4227d8..bb82c66e 100644 --- a/lambda/src/requests.rs +++ b/lambda/src/requests.rs @@ -1,5 +1,6 @@ +use crate::types::Diagnostic; use anyhow::Error; -use http::{Method, Request, Uri}; +use http::{HeaderMap, Method, Request, Response, Uri}; use hyper::Body; use serde::Serialize; use std::str::FromStr; @@ -8,6 +9,10 @@ pub(crate) trait IntoRequest { fn into_req(self) -> Result, Error>; } +pub(crate) trait IntoResponse { + fn into_rsp(self) -> Result, Error>; +} + // /runtime/invocation/next #[derive(Debug, PartialEq)] pub(crate) struct NextEventRequest; @@ -22,6 +27,31 @@ impl IntoRequest for NextEventRequest { } } +#[derive(Debug, PartialEq)] +pub struct NextEventResponse<'a> { + // lambda-runtime-aws-request-id + pub request_id: &'a str, + // lambda-runtime-deadline-ms + pub deadline: u64, + // lambda-runtime-invoked-function-arn + pub arn: &'a str, + // lambda-runtime-trace-id + pub trace_id: &'a str, + // the actual body, + pub body: Vec, +} + +impl<'a> IntoResponse for NextEventResponse<'a> { + fn into_rsp(self) -> Result, Error> { + let rsp = Response::builder() + .header("lambda-runtime-aws-request-id", self.request_id) + .header("lambda-runtime-deadline-ms", self.deadline) + .header("lambda-runtime-invoked-function-arn", self.arn) + .header("lambda-runtime-trace-id", self.trace_id) + .body(Body::from(self.body))?; + Ok(rsp) + } +} #[test] fn test_next_event_request() { let req = NextEventRequest; @@ -67,19 +97,16 @@ fn test_event_completion_request() { } // /runtime/invocation/{AwsRequestId}/error -pub(crate) struct EventErrorRequest<'a, T> { +pub(crate) struct EventErrorRequest<'a> { pub(crate) request_id: &'a str, - pub(crate) body: T, + pub(crate) diagnostic: Diagnostic, } -impl<'a, T> IntoRequest for EventErrorRequest<'a, T> -where - T: for<'serialize> Serialize, -{ +impl<'a> IntoRequest for EventErrorRequest<'a> { fn into_req(self) -> Result, Error> { let uri = format!("/runtime/invocation/{}/error", self.request_id); let uri = Uri::from_str(&uri)?; - let body = serde_json::to_vec(&self.body)?; + let body = serde_json::to_vec(&self.diagnostic)?; let body = Body::from(body); let req = Request::builder() @@ -95,7 +122,10 @@ where fn test_event_error_request() { let req = EventErrorRequest { request_id: "id", - body: "hello, world!", + diagnostic: Diagnostic { + error_type: "InvalidEventDataError".to_string(), + error_message: "Error parsing event data".to_string(), + }, }; let req = req.into_req().unwrap(); let expected = Uri::from_static("/runtime/invocation/id/error"); diff --git a/lambda/src/support.rs b/lambda/src/support.rs new file mode 100644 index 00000000..277da99e --- /dev/null +++ b/lambda/src/support.rs @@ -0,0 +1,94 @@ +// Borrowed from https://github.com/seanmonstar/reqwest/blob/master/tests/client.rs + +use std::convert::Infallible; +use std::future::Future; +use std::net; +use std::sync::mpsc as std_mpsc; +use std::thread; +use std::time::Duration; + +use tokio::sync::oneshot; + +pub use http::Response; +use tokio::runtime; + +pub struct Server { + addr: net::SocketAddr, + panic_rx: std_mpsc::Receiver<()>, + shutdown_tx: Option>, +} + +impl Server { + pub fn addr(&self) -> net::SocketAddr { + self.addr + } +} + +impl Drop for Server { + fn drop(&mut self) { + if let Some(tx) = self.shutdown_tx.take() { + let _ = tx.send(()); + } + + if !::std::thread::panicking() { + self.panic_rx + .recv_timeout(Duration::from_secs(3)) + .expect("test server should not panic"); + } + } +} + +pub fn http(func: F) -> Server +where + F: Fn(http::Request) -> Fut + Clone + Send + 'static, + Fut: Future> + Send + 'static, +{ + //Spawn new runtime in thread to prevent reactor execution context conflict + thread::spawn(move || { + let mut rt = runtime::Builder::new() + .basic_scheduler() + .enable_all() + .build() + .expect("new rt"); + let srv = rt.block_on(async move { + hyper::Server::bind(&([127, 0, 0, 1], 0).into()).serve(hyper::service::make_service_fn( + move |_| { + let func = func.clone(); + async move { + Ok::<_, Infallible>(hyper::service::service_fn(move |req| { + let fut = func(req); + async move { Ok::<_, Infallible>(fut.await) } + })) + } + }, + )) + }); + + let addr = srv.local_addr(); + let (shutdown_tx, shutdown_rx) = oneshot::channel(); + let srv = srv.with_graceful_shutdown(async move { + let _ = shutdown_rx.await; + }); + + let (panic_tx, panic_rx) = std_mpsc::channel(); + let tname = format!( + "test({})-support-server", + thread::current().name().unwrap_or("") + ); + thread::Builder::new() + .name(tname) + .spawn(move || { + rt.block_on(srv).unwrap(); + let _ = panic_tx.send(()); + }) + .expect("thread spawn"); + + Server { + addr, + panic_rx, + shutdown_tx: Some(shutdown_tx), + } + }) + .join() + .unwrap() +} diff --git a/lambda/src/types.rs b/lambda/src/types.rs index 232fe21c..588e2f8a 100644 --- a/lambda/src/types.rs +++ b/lambda/src/types.rs @@ -15,8 +15,8 @@ pub(crate) struct Diagnostic { fn round_trip_lambda_error() -> Result<(), anyhow::Error> { use serde_json::{json, Value}; let expected = json!({ - "errorMessage" : "Error parsing event data.", - "errorType" : "InvalidEventDataException" + "errorType": "InvalidEventDataError", + "errorMessage": "Error parsing event data.", }); let actual: Diagnostic = serde_json::from_value(expected.clone())?; @@ -208,11 +208,8 @@ pub struct LambdaCtx { } impl From> for LambdaCtx { - fn from(value: HeaderMap) -> Self { - let request_id = value - .typed_get::() - .expect("RequestId not found"); + let request_id = value.typed_get::().expect("RequestId not found"); let function_arn = value .typed_get::() .expect("FunctionArn not found"); From 7a34cc2da16b351396a78577a48c2bddbef057e7 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Sat, 21 Dec 2019 17:03:44 -0500 Subject: [PATCH 19/34] it "works" --- Cargo.lock | 560 ------------------------- lambda-attributes/src/lib.rs | 41 +- lambda/Cargo.toml | 7 - lambda/examples/hello-with-ctx.rs | 16 +- lambda/examples/hello-without-macro.rs | 22 +- lambda/examples/hello.rs | 12 +- lambda/src/client.rs | 219 +++++----- lambda/src/lib.rs | 206 +++------ lambda/src/requests.rs | 19 +- lambda/src/support.rs | 16 +- lambda/src/types.rs | 292 ++----------- 11 files changed, 229 insertions(+), 1181 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 06b6e45c..9cb1b241 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,122 +1,30 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -[[package]] -name = "anyhow" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "arc-swap" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "autocfg" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "base64" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "bit-set" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "bit-vec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "bitflags" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "block-padding" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byteorder" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "bytes" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "c2-chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "cfg-if" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "fnv" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -131,27 +39,12 @@ name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "futures" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "futures-channel" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -159,32 +52,6 @@ name = "futures-core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "futures-executor" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "futures-io" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "futures-macro" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "futures-sink" version = "0.3.1" @@ -200,35 +67,9 @@ name = "futures-util" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "generic-array" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "getrandom" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -249,29 +90,6 @@ dependencies = [ "tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "headers" -version = "0.2.3" -source = "git+https://github.com/hyperium/headers#c6be8bab9c9852581bccd03f89cdbe431195ca1c" -dependencies = [ - "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "headers-core 0.1.1 (git+https://github.com/hyperium/headers)", - "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "headers-core" -version = "0.1.1" -source = "git+https://github.com/hyperium/headers#c6be8bab9c9852581bccd03f89cdbe431195ca1c" -dependencies = [ - "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "http" version = "0.2.0" @@ -351,19 +169,12 @@ dependencies = [ name = "lambda" version = "0.1.0" dependencies = [ - "anyhow 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "headers 0.2.3 (git+https://github.com/hyperium/headers)", "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "lambda-attributes 0.1.0", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proptest 0.9.4 (git+https://github.com/davidbarsky/proptest)", - "proptest-attributes 0.1.0 (git+https://github.com/davidbarsky/proptest)", "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -400,14 +211,6 @@ name = "memchr" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "mime" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "mio" version = "0.6.21" @@ -477,14 +280,6 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "num-traits" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "num_cpus" version = "1.10.1" @@ -493,11 +288,6 @@ dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "pin-project" version = "0.4.6" @@ -526,26 +316,6 @@ name = "pin-utils" version = "0.1.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ppv-lite86" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "proc-macro-hack" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro-nested" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "proc-macro2" version = "0.4.30" @@ -562,40 +332,6 @@ dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "proptest" -version = "0.9.4" -source = "git+https://github.com/davidbarsky/proptest#bf83ad19b2b4bf0be3ddcc360819ae2d8273f0bd" -dependencies = [ - "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proptest-attributes" -version = "0.1.0" -source = "git+https://github.com/davidbarsky/proptest#bf83ad19b2b4bf0be3ddcc360819ae2d8273f0bd" -dependencies = [ - "proptest 0.9.4 (git+https://github.com/davidbarsky/proptest)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "quick-error" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "quote" version = "1.0.2" @@ -604,176 +340,11 @@ dependencies = [ "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_chacha" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rand_core" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "redox_syscall" version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "regex-syntax" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "remove_dir_all" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rusty-fork" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "ryu" version = "1.0.0" @@ -807,17 +378,6 @@ dependencies = [ "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "sha-1" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "signal-hook-registry" version = "1.2.0" @@ -853,37 +413,6 @@ dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "tempfile" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thiserror" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "thiserror-impl 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "time" version = "0.1.42" @@ -948,19 +477,6 @@ name = "try-lock" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "typenum" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unicase" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "unicode-xid" version = "0.1.0" @@ -971,19 +487,6 @@ name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "version_check" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wait-timeout" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "want" version = "0.3.0" @@ -993,11 +496,6 @@ dependencies = [ "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "wasi" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi" version = "0.2.8" @@ -1037,41 +535,19 @@ dependencies = [ ] [metadata] -"checksum anyhow 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "e19f23ab207147bbdbcdfa7f7e4ca5e84963d79bae3937074682177ab9150968" "checksum arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" -"checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" -"checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" -"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" -"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" -"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -"checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09" -"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" -"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c85319f157e4e26c703678e68e26ab71a46c0199286fa670b21cc9fec13d895" -"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" -"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b6f16056ecbb57525ff698bb955162d0cd03bee84e6241c27ff75c08d8ca5987" "checksum futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fcae98ca17d102fd8a3603727b9259fcf7fa4239b603d2142926189bc8999b86" "checksum futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "79564c427afefab1dfb3298535b21eda083ef7935b4f0ecbfcb121f0aec10866" -"checksum futures-executor 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e274736563f686a837a0568b478bdabfeaec2dca794b5649b04e2fe1627c231" -"checksum futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e676577d229e70952ab25f3945795ba5b16d63ca794ca9d2c860e5595d20b5ff" -"checksum futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "52e7c56c15537adb4f76d0b7a76ad131cb4d2f4f32d3b0bcabcbe1c7c5e87764" "checksum futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "171be33efae63c2d59e6dbba34186fe0d6394fb378069a76dfd80fdcffd43c16" "checksum futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0bae52d6b29cf440e298856fec3965ee6fa71b06aa7495178615953fd669e5f9" "checksum futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d66274fb76985d3c62c886d1da7ac4c0903a8c9f754e8fe0f35a6a6cc39e76" -"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -"checksum getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6171a6cc63fbabbe27c2b5ee268e8b7fe5dc1eb0dd2dfad537c1dfed6f69117e" "checksum h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9433d71e471c1736fd5a61b671fc0b148d7a2992f666c958d03cd8feb3b88d1" -"checksum headers 0.2.3 (git+https://github.com/hyperium/headers)" = "" -"checksum headers-core 0.1.1 (git+https://github.com/hyperium/headers)" = "" "checksum http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" "checksum http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" @@ -1084,74 +560,38 @@ dependencies = [ "checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" -"checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" "checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f" "checksum mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e374eff525ce1c5b7687c4cef63943e7686524a387933ad27ca7ec43779cb3" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "396aa0f2003d7df8395cb93e09871561ccc3e785f0acb369170e8cc74ddf9226" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" -"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "94b90146c7216e4cb534069fb91366de4ea0ea353105ee45ed297e2d1619e469" "checksum pin-project-internal 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "44ca92f893f0656d3cba8158dd0f2b99b94de256a4a54e870bd6922fcc6c8355" "checksum pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f0af6cbca0e6e3ce8692ee19fb8d734b641899e07b68eb73e9bbbd32f1703991" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" -"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" -"checksum proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e688f31d92ffd7c1ddc57a1b4e6d773c0f2a14ee437a4b0a4f5a69c80eb221c8" -"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c5c2380ae88876faae57698be9e9775e3544decad214599c3a6266cca6ac802" -"checksum proptest 0.9.4 (git+https://github.com/davidbarsky/proptest)" = "" -"checksum proptest-attributes 0.1.0 (git+https://github.com/davidbarsky/proptest)" = "" -"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -"checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" -"checksum regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b143cceb2ca5e56d5671988ef8b15615733e7ee16cd348e064333b251b89343f" -"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" -"checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae" "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" "checksum serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "fec2851eb56d010dc9a21b89ca53ee75e6528bab60c11e89d38390904982da9f" "checksum serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "cb4dc18c61206b08dc98216c98faa0232f4337e1e1b8574551d5bad29ea1b425" "checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" -"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" "checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85" "checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" -"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" -"checksum thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "cc6b305ec0e323c7b6cfff6098a22516e0063d0bb7c3d88660a890217dca099a" -"checksum thiserror-impl 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45ba8d810d9c48fc456b7ad54574e8bfb7c7918a57ad7a6e6a0985d7959e8597" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" "checksum tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bcced6bb623d4bff3739c176c415f13c418f426395c169c9c3cd9a492c715b16" "checksum tokio-macros 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5795a71419535c6dcecc9b6ca95bdd3c2d6142f7e8343d7beb9923f129aa87e" "checksum tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930" "checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" -"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" -"checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" "checksum want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -"checksum wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd5442abcac6525a045cc8c795aedb60da7a2e5e89c7bf18a0d5357849bb23c7" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/lambda-attributes/src/lib.rs b/lambda-attributes/src/lib.rs index f1dac268..d9a518af 100644 --- a/lambda-attributes/src/lib.rs +++ b/lambda-attributes/src/lib.rs @@ -4,7 +4,6 @@ use proc_macro::TokenStream; use quote::quote_spanned; use syn::{spanned::Spanned, FnArg, ItemFn}; -#[cfg(not(test))] #[proc_macro_attribute] pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { let input = syn::parse_macro_input!(item as ItemFn); @@ -49,7 +48,7 @@ pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { #(#attrs)* #asyncness fn main() { - async fn actual(#arg_name: #arg_type, ctx: Option) #ret { + async fn actual(#arg_name: #arg_type) #ret { #body } let f = lambda::handler_fn(actual); @@ -57,45 +56,9 @@ pub fn lambda(_attr: TokenStream, item: TokenStream) -> TokenStream { } } } - 2 => { - let event = match inputs.first().unwrap() { - FnArg::Typed(arg) => arg, - _ => { - let tokens = quote_spanned! { inputs.span() => - compile_error!("fn main should take a fully formed argument"); - }; - return TokenStream::from(tokens); - } - }; - let ctx = match &inputs[1] { - FnArg::Typed(arg) => arg, - _ => { - let tokens = quote_spanned! { inputs.span() => - compile_error!("fn main should take a fully formed argument"); - }; - return TokenStream::from(tokens); - } - }; - let arg_name = &event.pat; - let arg_type = &event.ty; - let ctx_name = &ctx.pat; - let ctx_type = &ctx.ty; - quote_spanned! { input.span() => - #(#attrs)* - #asyncness fn main() { - async fn actual(#arg_name: #arg_type, #ctx_name: Option<#ctx_type>) #ret { - let #ctx_name = #ctx_name.unwrap(); - #body - } - let f = lambda::handler_fn(actual); - - lambda::run(f).await.unwrap(); - } - } - } _ => { let tokens = quote_spanned! { inputs.span() => - compile_error!("The #[lambda] macro can accept one or two arguments."); + compile_error!("The #[lambda] macro can accept only a single argument."); }; return TokenStream::from(tokens); } diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 1e0e5463..014a4647 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -5,18 +5,11 @@ authors = ["David Barsky "] edition = "2018" [dependencies] -futures = "0.3.1" tokio = { version = "0.2.4", features = ["full"] } hyper = "0.13" serde = { version = "1", features = ["derive"] } -thiserror = "1.0" -anyhow = "1.0" serde_json = "1.0.39" tower-service = "0.3" bytes = "0.5" http = "0.2" -headers = { git = "https://github.com/hyperium/headers" } -lazy_static = "1.3.0" -proptest = { git = "https://github.com/davidbarsky/proptest" } -proptest-attributes = { git = "https://github.com/davidbarsky/proptest" } lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } diff --git a/lambda/examples/hello-with-ctx.rs b/lambda/examples/hello-with-ctx.rs index e1d27b99..58549494 100644 --- a/lambda/examples/hello-with-ctx.rs +++ b/lambda/examples/hello-with-ctx.rs @@ -1,11 +1,9 @@ -use lambda::{lambda, LambdaCtx}; -type Error = Box; +use lambda::lambda; -fn main() {} +type Error = Box; -// #[lambda] -// #[tokio::main] -// async fn main(event: String, ctx: LambdaCtx) -> Result { -// let _ = ctx; -// Ok(event) -// } +#[lambda] +#[tokio::main] +async fn main(event: String) -> Result { + Ok(event) +} diff --git a/lambda/examples/hello-without-macro.rs b/lambda/examples/hello-without-macro.rs index af3a3050..e5ab866b 100644 --- a/lambda/examples/hello-without-macro.rs +++ b/lambda/examples/hello-without-macro.rs @@ -1,16 +1,14 @@ -use lambda::{handler_fn, LambdaCtx}; +use lambda::handler_fn; type Error = Box; -fn main() {} +#[tokio::main] +async fn main() -> Result<(), Error> { + let func = handler_fn(func); + lambda::run(func).await?; + Ok(()) +} -// #[tokio::main] -// async fn main() -> Result<(), Error> { -// let func = handler_fn(func); -// lambda::run(func).await?; -// Ok(()) -// } - -// async fn func(event: String, _: Option) -> Result { -// Ok(event) -// } +async fn func(event: String) -> Result { + Ok(event) +} diff --git a/lambda/examples/hello.rs b/lambda/examples/hello.rs index 41398d84..58549494 100644 --- a/lambda/examples/hello.rs +++ b/lambda/examples/hello.rs @@ -2,10 +2,8 @@ use lambda::lambda; type Error = Box; -fn main() {} - -// #[lambda] -// #[tokio::main] -// async fn main(event: String) -> Result { -// Ok(event) -// } +#[lambda] +#[tokio::main] +async fn main(event: String) -> Result { + Ok(event) +} diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 20da87b8..a5b04271 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -1,16 +1,7 @@ -use crate::{ - requests::{ - EventCompletionRequest, EventErrorRequest, IntoRequest, IntoResponse, NextEventRequest, - NextEventResponse, - }, - support::http, - types::Diagnostic, - Err, -}; -use bytes::buf::BufExt as _; -use http::{uri::PathAndQuery, HeaderValue, Method, Request, Response, StatusCode, Uri}; +use crate::Err; +use http::{Request, Response, Uri}; use hyper::Body; -use std::convert::{TryFrom, TryInto}; +use std::convert::TryInto; use tower_service::Service; #[derive(Debug, Clone)] @@ -63,11 +54,27 @@ where } } -#[tokio::test] -async fn next_event() -> Result<(), Err> { - let path = "/runtime/invocation/next"; - let server = http(move |req| { - async move { +#[cfg(test)] +mod endpoint_tests { + use super::Client; + use crate::{ + requests::{ + EventCompletionRequest, EventErrorRequest, IntoRequest, IntoResponse, NextEventRequest, + NextEventResponse, + }, + support::http, + types::Diagnostic, + Err, + }; + use bytes::buf::BufExt as _; + use http::{uri::PathAndQuery, HeaderValue, Method, Response, StatusCode}; + use hyper::Body; + use std::convert::TryFrom; + + #[tokio::test] + async fn next_event() -> Result<(), Err> { + let path = "/runtime/invocation/next"; + let server = http(move |req| async move { assert_eq!(req.method(), Method::GET); assert_eq!( req.uri().path_and_query().unwrap(), @@ -83,101 +90,101 @@ async fn next_event() -> Result<(), Err> { }; let rsp = rsp.into_rsp().unwrap(); rsp - } - }); - - let url = format!("http://{}/", server.addr()); - let mut client = Client::with(url, hyper::Client::new())?; - let rsp = client.call(NextEventRequest.into_req()?).await?; - assert_eq!(rsp.status(), StatusCode::OK); - assert_eq!( - rsp.headers()["lambda-runtime-deadline-ms"], - &HeaderValue::try_from("1542409706888").unwrap() - ); - - Ok(()) -} - -#[tokio::test] -async fn ok_response() -> Result<(), Err> { - let id = "156cb537-e2d4-11e8-9b34-d36013741fb9"; - let server = http(move |req| { - let path = format!("/runtime/invocation/{}/response", id); - - async move { - assert_eq!(req.method(), Method::POST); - assert_eq!( - req.uri().path_and_query().unwrap(), - &path.parse::().unwrap() - ); - - Response::builder() - .status(StatusCode::ACCEPTED) - .body(Body::empty()) - .unwrap() - } - }); - - let req = EventCompletionRequest { - request_id: id, - body: "done", - }; + }); + + let url = format!("http://{}/", server.addr()); + let mut client = Client::with(url, hyper::Client::new())?; + let rsp = client.call(NextEventRequest.into_req()?).await?; + assert_eq!(rsp.status(), StatusCode::OK); + assert_eq!( + rsp.headers()["lambda-runtime-deadline-ms"], + &HeaderValue::try_from("1542409706888").unwrap() + ); + + Ok(()) + } - let url = format!("http://{}/", server.addr()); - let mut client = Client::with(url, hyper::Client::new())?; - let rsp = client.call(req.into_req()?).await?; - assert_eq!(rsp.status(), StatusCode::ACCEPTED); + #[tokio::test] + async fn ok_response() -> Result<(), Err> { + let id = "156cb537-e2d4-11e8-9b34-d36013741fb9"; + let server = http(move |req| { + let path = format!("/runtime/invocation/{}/response", id); + + async move { + assert_eq!(req.method(), Method::POST); + assert_eq!( + req.uri().path_and_query().unwrap(), + &path.parse::().unwrap() + ); + + Response::builder() + .status(StatusCode::ACCEPTED) + .body(Body::empty()) + .unwrap() + } + }); + + let req = EventCompletionRequest { + request_id: id, + body: "done", + }; - Ok(()) -} + let url = format!("http://{}/", server.addr()); + let mut client = Client::with(url, hyper::Client::new())?; + let rsp = client.call(req.into_req()?).await?; + assert_eq!(rsp.status(), StatusCode::ACCEPTED); -#[tokio::test] -async fn error_response() -> Result<(), Err> { - let id = "156cb537-e2d4-11e8-9b34-d36013741fb9"; - let server = http(move |req| { - let path = format!("/runtime/invocation/{}/error", id); + Ok(()) + } - async move { - let (parts, body) = req.into_parts(); - let expected = Diagnostic { + #[tokio::test] + async fn error_response() -> Result<(), Err> { + let id = "156cb537-e2d4-11e8-9b34-d36013741fb9"; + let server = http(move |req| { + let path = format!("/runtime/invocation/{}/error", id); + + async move { + let (parts, body) = req.into_parts(); + let expected = Diagnostic { + error_type: "InvalidEventDataError".to_string(), + error_message: "Error parsing event data".to_string(), + }; + + let body = hyper::body::aggregate(body).await.unwrap(); + let actual = serde_json::from_reader(body.reader()).unwrap(); + assert_eq!(expected, actual); + + assert_eq!(parts.method, Method::POST); + assert_eq!( + parts.uri.path_and_query().unwrap(), + &path.parse::().unwrap() + ); + let expected = "unhandled"; + assert_eq!( + parts.headers["lambda-runtime-function-error-type"], + HeaderValue::try_from(expected).unwrap() + ); + + Response::builder() + .status(StatusCode::ACCEPTED) + .body(Body::empty()) + .unwrap() + } + }); + + let req = EventErrorRequest { + request_id: id, + diagnostic: Diagnostic { error_type: "InvalidEventDataError".to_string(), error_message: "Error parsing event data".to_string(), - }; - - let body = hyper::body::aggregate(body).await.unwrap(); - let actual = serde_json::from_reader(body.reader()).unwrap(); - assert_eq!(expected, actual); - - assert_eq!(parts.method, Method::POST); - assert_eq!( - parts.uri.path_and_query().unwrap(), - &path.parse::().unwrap() - ); - let expected = "unhandled"; - assert_eq!( - parts.headers["lambda-runtime-function-error-type"], - HeaderValue::try_from(expected).unwrap() - ); - - Response::builder() - .status(StatusCode::ACCEPTED) - .body(Body::empty()) - .unwrap() - } - }); - - let req = EventErrorRequest { - request_id: id, - diagnostic: Diagnostic { - error_type: "InvalidEventDataError".to_string(), - error_message: "Error parsing event data".to_string(), - }, - }; + }, + }; - let url = format!("http://{}/", server.addr()); - let mut client = Client::with(url, hyper::Client::new())?; - let rsp = client.call(req.into_req()?).await?; - assert_eq!(rsp.status(), StatusCode::ACCEPTED); + let url = format!("http://{}/", server.addr()); + let mut client = Client::with(url, hyper::Client::new())?; + let rsp = client.call(req.into_req()?).await?; + assert_eq!(rsp.status(), StatusCode::ACCEPTED); - Ok(()) + Ok(()) + } } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 289d6799..26c14a25 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -35,17 +35,16 @@ pub use crate::types::LambdaCtx; use bytes::buf::BufExt; use client::Client; -use futures::prelude::*; -use http::{Request, Response, Uri}; +use http::{Request, Response}; use hyper::Body; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; -use std::{convert::TryFrom, env, fmt}; -use thiserror::Error; +use std::{convert::TryFrom, env, fmt, future::Future}; use tower_service::Service; mod client; mod requests; +#[cfg(test)] mod support; /// Types availible to a Lambda function. mod types; @@ -55,24 +54,7 @@ use types::Diagnostic; type Err = Box; -#[derive(Error, Debug)] -enum Error { - #[error("error making an http request")] - Hyper(#[source] hyper::error::Error), - #[error("invalid URI: {uri}")] - InvalidUri { - uri: String, - #[source] - source: http::uri::InvalidUri, - }, - #[error("serialization error")] - Json { - #[source] - source: serde_json::error::Error, - }, -} - -/// A struct containing configuration values derived from environment variables. +/// Configuration derived from environment variables. #[derive(Debug, Default, Clone, PartialEq)] pub struct Config { /// The host and port of the [runtime API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html). @@ -91,7 +73,7 @@ pub struct Config { impl Config { /// Attempts to read configuration from environment variables. - pub fn from_env() -> Result { + pub fn from_env() -> Result { let conf = Config { endpoint: env::var("AWS_LAMBDA_RUNTIME_API")?, function_name: env::var("AWS_LAMBDA_FUNCTION_NAME")?, @@ -118,82 +100,11 @@ pub trait Handler { fn call(&mut self, event: A) -> Self::Fut; } -pub trait HttpHandler { - /// Errors returned by this handler. - type Err; - /// The future response value of this handler. - type Fut: Future>; - /// Process the incoming request and return the response asynchronously. - fn call(&mut self, req: A) -> Self::Fut; -} - -impl HttpHandler, Response> for T -where - T: Handler, Response>, - A: for<'de> Deserialize<'de>, - B: Serialize, -{ - /// Errors returned by this handler. - type Err = T::Err; - /// The future response value of this handler. - type Fut = T::Fut; - /// Process the incoming request and return the response asynchronously. - fn call(&mut self, req: Request) -> Self::Fut { - T::call(self, req) - } -} - -pub trait EventHandler -where - A: for<'de> Deserialize<'de>, - B: Serialize, -{ - /// Errors returned by this handler. - type Err; - /// The future response value of this handler. - type Fut: Future>; - /// Process the incoming event and return the response asynchronously. - /// - /// # Arguments - /// * `event` - The data received in the invocation request - /// * `ctx` - The context for the current invocation - fn call(&mut self, event: A) -> Self::Fut; -} - -impl EventHandler for T -where - T: Handler, - A: for<'de> Deserialize<'de>, - B: Serialize, -{ - /// Errors returned by this handler. - type Err = T::Err; - /// The future response value of this handler. - type Fut = T::Fut; - /// Process the incoming request and return the response asynchronously. - fn call(&mut self, req: A) -> Self::Fut { - T::call(self, req) - } -} - /// Returns a new `HandlerFn` with the given closure. pub fn handler_fn(f: F) -> HandlerFn { HandlerFn { f } } -#[test] -fn construct_handler_fn() { - async fn event(event: String) -> Result { - unimplemented!() - } - let f = handler_fn(event); - - async fn http(event: Request) -> Result, Error> { - unimplemented!() - } - let f = handler_fn(event); -} - /// A `Handler` or `HttpHandler` implemented by a closure. #[derive(Clone, Debug)] pub struct HandlerFn { @@ -217,9 +128,6 @@ where /// Starts the Lambda Rust runtime and begins polling for events on the [Lambda /// Runtime APIs](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html). /// -/// # Arguments -/// * `handler` - A function or closure that conforms to the `Handler` trait -/// /// # Example /// ```rust /// @@ -234,76 +142,70 @@ where /// Ok(()) /// } /// -/// async fn func(event: String, _ctx: Option) -> Result { -/// Ok(event) +/// async fn func(s: String) -> Result { +/// Ok(s) /// } /// ``` -pub async fn run(mut handler: F, uri: Uri, client: S) -> Result<(), Err> +pub async fn run(handler: F) -> Result<(), Err> where F: Handler, >::Err: fmt::Debug, A: for<'de> Deserialize<'de>, B: Serialize, - S: Service, Response = Response>, - >>::Error: Into + Send + Sync + 'static + std::error::Error, { - let mut client = Client::with(uri, client)?; - loop { - let req = NextEventRequest; - let req = req.into_req()?; - let event = client.call(req).await?; - let (parts, body) = event.into_parts(); + let mut handler = handler; + let config = Config::from_env().expect("Could not load config"); + let client = + Client::with(&config.endpoint, hyper::Client::new()).expect("Could not create client"); + let mut exec = Executor { client }; + exec.run(&mut handler).await?; - let mut ctx: LambdaCtx = LambdaCtx::try_from(parts.headers)?; - ctx.env_config = Config::from_env()?; - let body = hyper::body::aggregate(body).await.map_err(Error::Hyper)?; - let body = serde_json::from_reader(body.reader()).map_err(|e| Error::Json { source: e })?; - - match handler.call(body).await { - Ok(res) => { - let body = serde_json::to_vec(&res).map_err(|e| Error::Json { source: e })?; - let req = EventCompletionRequest { - request_id: &ctx.id, - body, - }; - - let req = req.into_req()?; - client.call(req).await?; - } - Err(err) => { - let diagnostic = Diagnostic { - error_message: format!("{:?}", err), - error_type: type_name_of_val(err).to_owned(), - }; - let body = - serde_json::to_vec(&diagnostic).map_err(|e| Error::Json { source: e })?; - let req = EventErrorRequest { - request_id: &ctx.id, - diagnostic, - }; - - let req = req.into_req()?; - client.call(req).await?; - } - } - } + Ok(()) } -struct Executor { - client: S, - function: F, - _phan: std::marker::PhantomData, +struct Executor { + client: Client, } -impl Executor +impl Executor where - S: Service, + S: Service, Response = Response>, + >>::Error: Into + Send + Sync + 'static + std::error::Error, { - fn new(client: S, function: F) -> Executor { - Self { - client, - function, - _phan: std::marker::PhantomData, + async fn run(&mut self, handler: &mut F) -> Result<(), Err> + where + F: Handler, + >::Err: fmt::Debug, + A: for<'de> Deserialize<'de>, + B: Serialize, + { + let client = &mut self.client; + loop { + let req = NextEventRequest.into_req()?; + let event = client.call(req).await?; + let (parts, body) = event.into_parts(); + + let mut ctx = LambdaCtx::try_from(&parts.headers)?; + ctx.env_config = Config::from_env()?; + let body = hyper::body::aggregate(body).await?; + let body = serde_json::from_reader(body.reader())?; + + let req = match handler.call(body).await { + Ok(res) => EventCompletionRequest { + request_id: &ctx.request_id, + body: serde_json::to_vec(&res)?, + } + .into_req()?, + Err(err) => EventErrorRequest { + request_id: &ctx.request_id, + diagnostic: Diagnostic { + error_message: format!("{:?}", err), + error_type: type_name_of_val(err).to_owned(), + }, + } + .into_req()?, + }; + client.call(req).await?; } } } diff --git a/lambda/src/requests.rs b/lambda/src/requests.rs index bb82c66e..47869347 100644 --- a/lambda/src/requests.rs +++ b/lambda/src/requests.rs @@ -1,16 +1,15 @@ -use crate::types::Diagnostic; -use anyhow::Error; -use http::{HeaderMap, Method, Request, Response, Uri}; +use crate::{types::Diagnostic, Err}; +use http::{Method, Request, Response, Uri}; use hyper::Body; use serde::Serialize; use std::str::FromStr; pub(crate) trait IntoRequest { - fn into_req(self) -> Result, Error>; + fn into_req(self) -> Result, Err>; } pub(crate) trait IntoResponse { - fn into_rsp(self) -> Result, Error>; + fn into_rsp(self) -> Result, Err>; } // /runtime/invocation/next @@ -18,7 +17,7 @@ pub(crate) trait IntoResponse { pub(crate) struct NextEventRequest; impl IntoRequest for NextEventRequest { - fn into_req(self) -> Result, Error> { + fn into_req(self) -> Result, Err> { let req = Request::builder() .method(Method::GET) .uri(Uri::from_static("/runtime/invocation/next")) @@ -42,7 +41,7 @@ pub struct NextEventResponse<'a> { } impl<'a> IntoResponse for NextEventResponse<'a> { - fn into_rsp(self) -> Result, Error> { + fn into_rsp(self) -> Result, Err> { let rsp = Response::builder() .header("lambda-runtime-aws-request-id", self.request_id) .header("lambda-runtime-deadline-ms", self.deadline) @@ -70,7 +69,7 @@ impl<'a, T> IntoRequest for EventCompletionRequest<'a, T> where T: for<'serialize> Serialize, { - fn into_req(self) -> Result, Error> { + fn into_req(self) -> Result, Err> { let uri = format!("/runtime/invocation/{}/response", self.request_id); let uri = Uri::from_str(&uri)?; let body = serde_json::to_vec(&self.body)?; @@ -103,7 +102,7 @@ pub(crate) struct EventErrorRequest<'a> { } impl<'a> IntoRequest for EventErrorRequest<'a> { - fn into_req(self) -> Result, Error> { + fn into_req(self) -> Result, Err> { let uri = format!("/runtime/invocation/{}/error", self.request_id); let uri = Uri::from_str(&uri)?; let body = serde_json::to_vec(&self.diagnostic)?; @@ -137,7 +136,7 @@ fn test_event_error_request() { struct InitErrorRequest; impl IntoRequest for InitErrorRequest { - fn into_req(self) -> Result, Error> { + fn into_req(self) -> Result, Err> { let uri = format!("/runtime/init/error"); let uri = Uri::from_str(&uri)?; diff --git a/lambda/src/support.rs b/lambda/src/support.rs index 277da99e..c5d90874 100644 --- a/lambda/src/support.rs +++ b/lambda/src/support.rs @@ -1,16 +1,10 @@ // Borrowed from https://github.com/seanmonstar/reqwest/blob/master/tests/client.rs -use std::convert::Infallible; -use std::future::Future; -use std::net; -use std::sync::mpsc as std_mpsc; -use std::thread; -use std::time::Duration; - -use tokio::sync::oneshot; - pub use http::Response; -use tokio::runtime; +use std::{ + convert::Infallible, future::Future, net, sync::mpsc as std_mpsc, thread, time::Duration, +}; +use tokio::{runtime, sync::oneshot}; pub struct Server { addr: net::SocketAddr, @@ -43,7 +37,7 @@ where F: Fn(http::Request) -> Fut + Clone + Send + 'static, Fut: Future> + Send + 'static, { - //Spawn new runtime in thread to prevent reactor execution context conflict + // Spawn new runtime in thread to prevent reactor execution context conflict thread::spawn(move || { let mut rt = runtime::Builder::new() .basic_scheduler() diff --git a/lambda/src/types.rs b/lambda/src/types.rs index 588e2f8a..c4d18349 100644 --- a/lambda/src/types.rs +++ b/lambda/src/types.rs @@ -1,8 +1,7 @@ -use crate::Config; -use headers::{Header, HeaderMap, HeaderMapExt, HeaderName, HeaderValue}; -use lazy_static::lazy_static; +use crate::{Config, Err}; +use http::HeaderMap; use serde::{Deserialize, Serialize}; -use std::collections::HashMap; +use std::{collections::HashMap, convert::TryFrom}; #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -12,7 +11,7 @@ pub(crate) struct Diagnostic { } #[test] -fn round_trip_lambda_error() -> Result<(), anyhow::Error> { +fn round_trip_lambda_error() -> Result<(), Err> { use serde_json::{json, Value}; let expected = json!({ "errorType": "InvalidEventDataError", @@ -26,124 +25,33 @@ fn round_trip_lambda_error() -> Result<(), anyhow::Error> { Ok(()) } -lazy_static! { - static ref AWS_REQUEST_ID: HeaderName = - HeaderName::from_static("lambda-runtime-aws-request-id"); - static ref AWS_INVOCATION_DEADLINE: HeaderName = - HeaderName::from_static("lambda-runtime-deadline-ms"); - static ref AWS_FUNCTION_ARN: HeaderName = - HeaderName::from_static("lambda-runtime-invoked-function-arn"); - static ref AWS_XRAY_TRACE_ID: HeaderName = HeaderName::from_static("lambda-runtime-trace-id"); - static ref AWS_MOBILE_CLIENT_CONTEXT: HeaderName = - HeaderName::from_static("lambda-runtime-client-context"); - static ref AWS_MOBILE_CLIENT_IDENTITY: HeaderName = - HeaderName::from_static("lambda-runtime-cognito-identity"); -} - -macro_rules! str_header { - ($type:tt, $header_name:ident) => { - impl Header for $type { - fn name() -> &'static HeaderName { - &$header_name - } - - fn decode<'i, I>(values: &mut I) -> Result - where - I: Iterator, - { - let value = values - .next() - .and_then(|val| { - if let Ok(val) = val.to_str() { - return Some(String::from(val)); - } - None - }) - .ok_or_else(headers::Error::invalid)?; - Ok($type(value)) - } - - fn encode(&self, values: &mut E) - where - E: Extend, - { - let value = HeaderValue::from_str(&self.0).expect("Should not panic on encoding"); - values.extend(std::iter::once(value)); - } - } - }; -} - -macro_rules! num_header { - ($type:tt, $header_name:ident) => { - impl Header for $type { - fn name() -> &'static HeaderName { - &$header_name - } - - fn decode<'i, I>(values: &mut I) -> Result - where - I: Iterator, - { - let value = values - .next() - .and_then(|val| { - if let Ok(val) = val.to_str() { - if let Ok(val) = val.parse::() { - return Some(val); - } - } - None - }) - .ok_or_else(headers::Error::invalid)?; - Ok($type(value)) - } - - fn encode(&self, values: &mut E) - where - E: Extend, - { - let value = HeaderValue::from_str(&self.0.to_string()) - .expect("Should not panic on encoding"); - values.extend(std::iter::once(value)); - } - } - }; -} - /// The request ID, which identifies the request that triggered the function invocation. This header /// tracks the invocation within the Lambda control plane. The request ID is used to specify completion /// of a given invocation. #[derive(Debug, Clone, PartialEq)] pub struct RequestId(pub String); -str_header!(RequestId, AWS_REQUEST_ID); /// The date that the function times out in Unix time milliseconds. For example, `1542409706888`. #[derive(Debug, Clone, PartialEq)] pub struct InvocationDeadline(pub u64); -num_header!(InvocationDeadline, AWS_INVOCATION_DEADLINE); /// The ARN of the Lambda function, version, or alias that is specified in the invocation. /// For instance, `arn:aws:lambda:us-east-2:123456789012:function:custom-runtime`. #[derive(Debug, Clone, PartialEq)] pub struct FunctionArn(pub String); -str_header!(FunctionArn, AWS_FUNCTION_ARN); /// The AWS X-Ray Tracing header. For more information, /// please see [AWS' documentation](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader). #[derive(Debug, Clone, PartialEq)] pub struct XRayTraceId(pub String); -str_header!(XRayTraceId, AWS_XRAY_TRACE_ID); /// For invocations from the AWS Mobile SDK contains data about client application and device. #[derive(Debug, Clone, PartialEq)] struct MobileClientContext(String); -str_header!(MobileClientContext, AWS_MOBILE_CLIENT_CONTEXT); /// For invocations from the AWS Mobile SDK, data about the Amazon Cognito identity provider. #[derive(Debug, Clone, PartialEq)] struct MobileClientIdentity(String); -str_header!(MobileClientIdentity, AWS_MOBILE_CLIENT_IDENTITY); /// Client context sent by the AWS Mobile SDK. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] @@ -184,14 +92,15 @@ pub struct CognitoIdentity { /// The Lambda function execution context. The values in this struct /// are populated using the [Lambda environment variables](https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html) /// and the headers returned by the poll request to the Runtime APIs. +#[non_exhaustive] #[derive(Clone, Debug, PartialEq, Default)] -pub struct LambdaCtx { +pub struct LambdaCtx<'a> { /// The AWS request ID generated by the Lambda service. - pub id: String, + pub request_id: &'a str, /// The execution deadline for the current invocation in milliseconds. pub deadline: u64, /// The ARN of the Lambda function being invoked. - pub invoked_function_arn: String, + pub invoked_function_arn: &'a str, /// The X-Ray trace ID for the current invocation. pub xray_trace_id: Option, /// The client context object sent by the AWS mobile SDK. This field is @@ -207,175 +116,22 @@ pub struct LambdaCtx { pub env_config: Config, } -impl From> for LambdaCtx { - fn from(value: HeaderMap) -> Self { - let request_id = value.typed_get::().expect("RequestId not found"); - let function_arn = value - .typed_get::() - .expect("FunctionArn not found"); - let deadline = value - .typed_get::() - .expect("FunctionArn not found"); - let xray = value.typed_get::(); - - LambdaCtx { - id: request_id.0, - deadline: deadline.0, - invoked_function_arn: function_arn.0, - xray_trace_id: xray.map(|v| v.0), +impl<'a> TryFrom<&'a HeaderMap> for LambdaCtx<'a> { + type Error = Err; + fn try_from(headers: &'a HeaderMap) -> Result { + let ctx = LambdaCtx { + request_id: headers["lambda-runtime-aws-request-id"] + .to_str() + .expect("Missing Request ID"), + deadline: headers["lambda-runtime-deadline-ms"] + .to_str()? + .parse() + .expect("Missing deadline"), + invoked_function_arn: headers["lambda-runtime-invoked-function-arn"] + .to_str() + .expect("Missing arn"), ..Default::default() - } - } -} - -#[allow(dead_code)] -pub mod tests { - use crate::types::{ - ClientApplication, ClientContext, CognitoIdentity, FunctionArn, InvocationDeadline, - MobileClientContext, MobileClientIdentity, RequestId, XRayTraceId, - }; - use headers::{HeaderMap, HeaderMapExt}; - use http::Response; - use proptest::{collection, option, prelude::*, strategy::Strategy, string::string_regex}; - use proptest_attributes::proptest; - - fn gen_request_id() -> impl Strategy { - let expr = "[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}"; - let arbitrary_uuid = string_regex(expr).unwrap(); - arbitrary_uuid.prop_map(RequestId) - } - - fn gen_invocation_deadline() -> impl Strategy { - any::().prop_map(InvocationDeadline) - } - - pub fn gen_function_arn() -> impl Strategy { - let expr = "arn:aws:lambda:us-east-1:[0-9]{12}:function:custom-runtime"; - let arn = string_regex(expr).unwrap(); - arn.prop_map(FunctionArn) - } - - fn gen_xray_trace_id() -> impl Strategy { - let expr = "Root=1-[a-zA-Z0-9]{32};Parent=[a-z0-9]{16};Sampled=[0-1]{1}"; - let xray = string_regex(expr).unwrap(); - xray.prop_map(XRayTraceId) - } - - fn uuid() -> impl Strategy { - let expr = "[a-zA-Z0-9]{32}"; - string_regex(expr).unwrap() - } - - fn gen_client_context() -> impl Strategy { - uuid().prop_map(MobileClientContext) - } - - fn gen_client_identity() -> impl Strategy { - uuid().prop_map(MobileClientIdentity) - } - - fn gen_client_identity_struct() -> impl Strategy { - (uuid()).prop_map(|uuid| CognitoIdentity { - identity_id: uuid.clone(), - identity_pool_id: uuid, - }) - } - - fn gen_client_application() -> impl Strategy { - (uuid()).prop_map(|uuid| ClientApplication { - installation_id: uuid.clone(), - app_title: uuid.clone(), - app_version_name: uuid.clone(), - app_version_code: uuid.clone(), - app_package_name: uuid, - }) - } - - fn gen_client_context_struct() -> impl Strategy { - let app = gen_client_application(); - let overrides = collection::hash_map(uuid(), uuid(), 1..10); - let env = collection::hash_map(uuid(), uuid(), 1..10); - (app, overrides, env).prop_map(|args| { - let (app, overrides, env) = args; - ClientContext { - client: app, - custom: overrides, - environment: env, - } - }) - } - - fn gen_headers() -> impl Strategy { - let mandatory = ( - gen_request_id(), - gen_invocation_deadline(), - gen_function_arn(), - ); - let xray = option::of(gen_xray_trace_id()); - let mobile = option::of((gen_client_context(), gen_client_identity())); - (mandatory, xray, mobile).prop_map(|headers| { - let (mandatory, xray, mobile) = headers; - let mut map = HeaderMap::new(); - map.typed_insert(mandatory.0); - map.typed_insert(mandatory.1); - map.typed_insert(mandatory.2); - xray.map(|xray| map.typed_insert(xray)); - mobile.map(|mobile| { - map.typed_insert(mobile.0); - map.typed_insert(mobile.1) - }); - map - }) - } - - fn gen_next_event() -> impl Strategy>> { - gen_headers().prop_map(|headers| { - let mut resp = Response::new(Vec::default()); - *resp.headers_mut() = headers; - *resp.status_mut() = http::StatusCode::OK; - resp - }) - } - - #[proptest(gen_request_id())] - fn request_id(req: RequestId) { - let mut headers = HeaderMap::new(); - headers.typed_insert(req.clone()); - prop_assert_eq!(headers.typed_get::(), Some(req)); - } - - #[proptest(gen_invocation_deadline())] - fn deadline(deadline: InvocationDeadline) { - let mut headers = HeaderMap::new(); - headers.typed_insert(deadline.clone()); - prop_assert_eq!(headers.typed_get::(), Some(deadline)); - } - - #[proptest(gen_function_arn())] - fn function_arn(arn: FunctionArn) { - let mut headers = HeaderMap::new(); - headers.typed_insert(arn.clone()); - prop_assert_eq!(headers.typed_get::(), Some(arn)); - } - - #[proptest(gen_xray_trace_id())] - fn xray_trace_id(trace_id: XRayTraceId) { - let mut headers = HeaderMap::new(); - headers.typed_insert(trace_id.clone()); - prop_assert_eq!(headers.typed_get::(), Some(trace_id)); - } - - #[proptest(gen_client_context())] - fn mobile_client_context(ctx: MobileClientContext) { - let mut headers = HeaderMap::new(); - headers.typed_insert(ctx.clone()); - prop_assert_eq!(headers.typed_get::(), Some(ctx)); - } - - #[proptest(gen_client_identity())] - fn mobile_client_identity(id: MobileClientIdentity) { - let mut headers = HeaderMap::new(); - headers.typed_insert(id.clone()); - prop_assert_eq!(headers.typed_get::(), Some(id)) + }; + Ok(ctx) } } From 4b9a2e8931478f5c299feaf61164dc80a4d628b7 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Sat, 21 Dec 2019 17:32:13 -0500 Subject: [PATCH 20/34] task-local context, baby --- Cargo.lock | 1 + NOTICE | 2 +- lambda/Cargo.toml | 1 + lambda/examples/hello-with-ctx.rs | 2 + lambda/src/lib.rs | 68 ++++++++++++++++++++++++++----- lambda/src/types.rs | 16 ++++---- 6 files changed, 72 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9cb1b241..61355cfd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -173,6 +173,7 @@ dependencies = [ "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "lambda-attributes 0.1.0", + "pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/NOTICE b/NOTICE index 24db4754..00537da3 100644 --- a/NOTICE +++ b/NOTICE @@ -1,2 +1,2 @@ AWS Lambda Rust Runtime -Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 014a4647..9e3d8695 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -13,3 +13,4 @@ tower-service = "0.3" bytes = "0.5" http = "0.2" lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } +pin-project = "0.4.6" diff --git a/lambda/examples/hello-with-ctx.rs b/lambda/examples/hello-with-ctx.rs index 58549494..1652d2a3 100644 --- a/lambda/examples/hello-with-ctx.rs +++ b/lambda/examples/hello-with-ctx.rs @@ -5,5 +5,7 @@ type Error = Box; #[lambda] #[tokio::main] async fn main(event: String) -> Result { + let ctx = lambda::context(); + dbg!(ctx); Ok(event) } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 26c14a25..1684ef32 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -39,7 +39,15 @@ use http::{Request, Response}; use hyper::Body; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; -use std::{convert::TryFrom, env, fmt, future::Future}; +use std::{ + cell::RefCell, + convert::TryFrom, + env, fmt, + future::Future, + mem, + pin::Pin, + task::{Context, Poll}, +}; use tower_service::Service; mod client; @@ -86,6 +94,40 @@ impl Config { } } +thread_local! { + static TASK_LOCAL: RefCell> = RefCell::new(None); +} + +#[pin_project::pin_project] +struct WithTaskLocal { + task_local: Option, + #[pin] + future: F, +} + +impl Future for WithTaskLocal { + type Output = F::Output; + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + let this = self.project(); + TASK_LOCAL.with(|tl| { + let prev = tl.borrow_mut().replace(this.task_local.take().unwrap()); + let res = this.future.poll(cx); + // handling the inner future panicking is left as an exercise to the reader + *this.task_local = mem::replace(&mut *tl.borrow_mut(), prev); + res + }) + } +} + +/// Gets the current function context. +pub fn context() -> LambdaCtx { + TASK_LOCAL.with(|tl| { + tl.borrow() + .clone() + .expect("Context is not set; this is a bug.") + }) +} + /// A trait describing an asynchronous function `A` to `B. pub trait Handler { /// Errors returned by this handler. @@ -130,8 +172,7 @@ where /// /// # Example /// ```rust -/// -/// use lambda::{handler_fn, LambdaCtx}; +/// use lambda::handler_fn; /// /// type Error = Box; /// @@ -143,6 +184,7 @@ where /// } /// /// async fn func(s: String) -> Result { +/// let ctx = lambda::context(); /// Ok(s) /// } /// ``` @@ -154,9 +196,8 @@ where B: Serialize, { let mut handler = handler; - let config = Config::from_env().expect("Could not load config"); - let client = - Client::with(&config.endpoint, hyper::Client::new()).expect("Could not create client"); + let config = Config::from_env()?; + let client = Client::with(&config.endpoint, hyper::Client::new())?; let mut exec = Executor { client }; exec.run(&mut handler).await?; @@ -185,19 +226,26 @@ where let event = client.call(req).await?; let (parts, body) = event.into_parts(); - let mut ctx = LambdaCtx::try_from(&parts.headers)?; + let mut ctx = LambdaCtx::try_from(parts.headers)?; ctx.env_config = Config::from_env()?; + let body = hyper::body::aggregate(body).await?; let body = serde_json::from_reader(body.reader())?; - let req = match handler.call(body).await { + let request_id = &ctx.request_id.clone(); + let f = WithTaskLocal { + task_local: Some(ctx), + future: handler.call(body), + }; + + let req = match f.await { Ok(res) => EventCompletionRequest { - request_id: &ctx.request_id, + request_id, body: serde_json::to_vec(&res)?, } .into_req()?, Err(err) => EventErrorRequest { - request_id: &ctx.request_id, + request_id, diagnostic: Diagnostic { error_message: format!("{:?}", err), error_type: type_name_of_val(err).to_owned(), diff --git a/lambda/src/types.rs b/lambda/src/types.rs index c4d18349..126a5e56 100644 --- a/lambda/src/types.rs +++ b/lambda/src/types.rs @@ -94,13 +94,13 @@ pub struct CognitoIdentity { /// and the headers returned by the poll request to the Runtime APIs. #[non_exhaustive] #[derive(Clone, Debug, PartialEq, Default)] -pub struct LambdaCtx<'a> { +pub struct LambdaCtx { /// The AWS request ID generated by the Lambda service. - pub request_id: &'a str, + pub request_id: String, /// The execution deadline for the current invocation in milliseconds. pub deadline: u64, /// The ARN of the Lambda function being invoked. - pub invoked_function_arn: &'a str, + pub invoked_function_arn: String, /// The X-Ray trace ID for the current invocation. pub xray_trace_id: Option, /// The client context object sent by the AWS mobile SDK. This field is @@ -116,20 +116,22 @@ pub struct LambdaCtx<'a> { pub env_config: Config, } -impl<'a> TryFrom<&'a HeaderMap> for LambdaCtx<'a> { +impl TryFrom for LambdaCtx { type Error = Err; - fn try_from(headers: &'a HeaderMap) -> Result { + fn try_from(headers: HeaderMap) -> Result { let ctx = LambdaCtx { request_id: headers["lambda-runtime-aws-request-id"] .to_str() - .expect("Missing Request ID"), + .expect("Missing Request ID") + .to_owned(), deadline: headers["lambda-runtime-deadline-ms"] .to_str()? .parse() .expect("Missing deadline"), invoked_function_arn: headers["lambda-runtime-invoked-function-arn"] .to_str() - .expect("Missing arn"), + .expect("Missing arn") + .to_owned(), ..Default::default() }; Ok(ctx) From ee837cbed24acd199fe3910396762039d1da2e3f Mon Sep 17 00:00:00 2001 From: David Barsky Date: Sat, 21 Dec 2019 20:28:30 -0500 Subject: [PATCH 21/34] simulated endpoints --- Cargo.lock | 34 ++++++++ lambda/Cargo.toml | 1 + lambda/src/client.rs | 193 +++++++++++++++++++++++++----------------- lambda/src/support.rs | 28 ++---- 4 files changed, 157 insertions(+), 99 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 61355cfd..034acfb9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,6 +52,17 @@ name = "futures-core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures-macro" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "futures-sink" version = "0.3.1" @@ -68,8 +79,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -170,6 +185,7 @@ name = "lambda" version = "0.1.0" dependencies = [ "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "lambda-attributes 0.1.0", @@ -317,6 +333,21 @@ name = "pin-utils" version = "0.1.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "proc-macro-hack" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-nested" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "proc-macro2" version = "0.4.30" @@ -545,6 +576,7 @@ dependencies = [ "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fcae98ca17d102fd8a3603727b9259fcf7fa4239b603d2142926189bc8999b86" "checksum futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "79564c427afefab1dfb3298535b21eda083ef7935b4f0ecbfcb121f0aec10866" +"checksum futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "52e7c56c15537adb4f76d0b7a76ad131cb4d2f4f32d3b0bcabcbe1c7c5e87764" "checksum futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "171be33efae63c2d59e6dbba34186fe0d6394fb378069a76dfd80fdcffd43c16" "checksum futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0bae52d6b29cf440e298856fec3965ee6fa71b06aa7495178615953fd669e5f9" "checksum futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d66274fb76985d3c62c886d1da7ac4c0903a8c9f754e8fe0f35a6a6cc39e76" @@ -572,6 +604,8 @@ dependencies = [ "checksum pin-project-internal 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "44ca92f893f0656d3cba8158dd0f2b99b94de256a4a54e870bd6922fcc6c8355" "checksum pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f0af6cbca0e6e3ce8692ee19fb8d734b641899e07b68eb73e9bbbd32f1703991" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" +"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" +"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c5c2380ae88876faae57698be9e9775e3544decad214599c3a6266cca6ac802" "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 9e3d8695..b4683660 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -14,3 +14,4 @@ bytes = "0.5" http = "0.2" lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } pin-project = "0.4.6" +futures-util = "0.3.1" diff --git a/lambda/src/client.rs b/lambda/src/client.rs index a5b04271..34b3d65c 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -1,9 +1,22 @@ -use crate::Err; -use http::{Request, Response, Uri}; +use crate::{ + requests::{IntoResponse, NextEventResponse}, + types::Diagnostic, + Err, +}; +use bytes::buf::ext::BufExt; +use futures_util::future; +use http::{HeaderValue, Method, Request, Response, StatusCode, Uri}; use hyper::Body; -use std::convert::TryInto; +use std::{ + convert::{TryFrom, TryInto}, + future::Future, + pin::Pin, + task::{Context, Poll}, +}; use tower_service::Service; +type Fut<'a, T> = Pin + 'a + Send>>; + #[derive(Debug, Clone)] pub(crate) struct Client { base: Uri, @@ -54,44 +67,115 @@ where } } +pub struct NextEventSvc; + +impl Service> for NextEventSvc { + type Response = Response; + type Error = crate::Err; + type Future = Fut<'static, Result>; + + fn poll_ready(&mut self, _: &mut Context<'_>) -> Poll> { + Poll::Ready(Ok(())) + } + + fn call(&mut self, req: Request) -> Self::Future { + let fut = async move { + let path = req.uri().path_and_query().unwrap().as_str(); + let rsp = if path.ends_with("next") { + next_event(req).await + } else if path.ends_with("response") { + complete_event(req).await + } else { + event_err(req).await + }; + rsp + }; + Box::pin(fut) + } +} + +async fn next_event(req: Request) -> Result, Err> { + let path = "/runtime/invocation/next"; + assert_eq!(req.method(), Method::GET); + assert_eq!( + req.uri().path_and_query().unwrap(), + &http::uri::PathAndQuery::from_static(path) + ); + + let rsp = NextEventResponse { + request_id: "8476a536-e9f4-11e8-9739-2dfe598c3fcd", + deadline: 1542409706888, + arn: "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime", + trace_id: "Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419", + body: vec![], + }; + rsp.into_rsp() +} + +async fn complete_event(req: Request) -> Result, Err> { + assert_eq!(req.method(), Method::POST); + let rsp = Response::builder() + .status(StatusCode::ACCEPTED) + .body(Body::empty())?; + Ok(rsp) +} + +async fn event_err(req: Request) -> Result, Err> { + let (parts, body) = req.into_parts(); + let expected = Diagnostic { + error_type: "InvalidEventDataError".to_string(), + error_message: "Error parsing event data".to_string(), + }; + + let body = hyper::body::aggregate(body).await.unwrap(); + let actual = serde_json::from_reader(body.reader()).unwrap(); + assert_eq!(expected, actual); + + assert_eq!(parts.method, Method::POST); + let expected = "unhandled"; + assert_eq!( + parts.headers["lambda-runtime-function-error-type"], + HeaderValue::try_from(expected).unwrap() + ); + + let rsp = Response::builder() + .status(StatusCode::ACCEPTED) + .body(Body::empty()) + .unwrap(); + Ok(rsp) +} + +pub struct MakeSvc; + +impl Service for MakeSvc { + type Response = NextEventSvc; + type Error = std::io::Error; + type Future = future::Ready>; + + fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { + Ok(()).into() + } + + fn call(&mut self, _: T) -> Self::Future { + future::ok(NextEventSvc) + } +} + #[cfg(test)] mod endpoint_tests { - use super::Client; + use super::{Client, MakeSvc}; use crate::{ - requests::{ - EventCompletionRequest, EventErrorRequest, IntoRequest, IntoResponse, NextEventRequest, - NextEventResponse, - }, + requests::{EventCompletionRequest, EventErrorRequest, IntoRequest, NextEventRequest}, support::http, types::Diagnostic, Err, }; - use bytes::buf::BufExt as _; - use http::{uri::PathAndQuery, HeaderValue, Method, Response, StatusCode}; - use hyper::Body; + use http::{HeaderValue, StatusCode}; use std::convert::TryFrom; #[tokio::test] async fn next_event() -> Result<(), Err> { - let path = "/runtime/invocation/next"; - let server = http(move |req| async move { - assert_eq!(req.method(), Method::GET); - assert_eq!( - req.uri().path_and_query().unwrap(), - &http::uri::PathAndQuery::from_static(path) - ); - - let rsp = NextEventResponse { - request_id: "8476a536-e9f4-11e8-9739-2dfe598c3fcd", - deadline: 1542409706888, - arn: "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime", - trace_id: "Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419", - body: vec![], - }; - let rsp = rsp.into_rsp().unwrap(); - rsp - }); - + let server = http(MakeSvc); let url = format!("http://{}/", server.addr()); let mut client = Client::with(url, hyper::Client::new())?; let rsp = client.call(NextEventRequest.into_req()?).await?; @@ -107,22 +191,7 @@ mod endpoint_tests { #[tokio::test] async fn ok_response() -> Result<(), Err> { let id = "156cb537-e2d4-11e8-9b34-d36013741fb9"; - let server = http(move |req| { - let path = format!("/runtime/invocation/{}/response", id); - - async move { - assert_eq!(req.method(), Method::POST); - assert_eq!( - req.uri().path_and_query().unwrap(), - &path.parse::().unwrap() - ); - - Response::builder() - .status(StatusCode::ACCEPTED) - .body(Body::empty()) - .unwrap() - } - }); + let server = http(MakeSvc); let req = EventCompletionRequest { request_id: id, @@ -140,37 +209,7 @@ mod endpoint_tests { #[tokio::test] async fn error_response() -> Result<(), Err> { let id = "156cb537-e2d4-11e8-9b34-d36013741fb9"; - let server = http(move |req| { - let path = format!("/runtime/invocation/{}/error", id); - - async move { - let (parts, body) = req.into_parts(); - let expected = Diagnostic { - error_type: "InvalidEventDataError".to_string(), - error_message: "Error parsing event data".to_string(), - }; - - let body = hyper::body::aggregate(body).await.unwrap(); - let actual = serde_json::from_reader(body.reader()).unwrap(); - assert_eq!(expected, actual); - - assert_eq!(parts.method, Method::POST); - assert_eq!( - parts.uri.path_and_query().unwrap(), - &path.parse::().unwrap() - ); - let expected = "unhandled"; - assert_eq!( - parts.headers["lambda-runtime-function-error-type"], - HeaderValue::try_from(expected).unwrap() - ); - - Response::builder() - .status(StatusCode::ACCEPTED) - .body(Body::empty()) - .unwrap() - } - }); + let server = http(MakeSvc); let req = EventErrorRequest { request_id: id, diff --git a/lambda/src/support.rs b/lambda/src/support.rs index c5d90874..cf738c06 100644 --- a/lambda/src/support.rs +++ b/lambda/src/support.rs @@ -1,9 +1,8 @@ // Borrowed from https://github.com/seanmonstar/reqwest/blob/master/tests/client.rs -pub use http::Response; -use std::{ - convert::Infallible, future::Future, net, sync::mpsc as std_mpsc, thread, time::Duration, -}; +use crate::client::MakeSvc; +pub use http::{Request, Response}; +use std::{net, sync::mpsc as std_mpsc, thread, time::Duration}; use tokio::{runtime, sync::oneshot}; pub struct Server { @@ -32,11 +31,7 @@ impl Drop for Server { } } -pub fn http(func: F) -> Server -where - F: Fn(http::Request) -> Fut + Clone + Send + 'static, - Fut: Future> + Send + 'static, -{ +pub fn http(svc: MakeSvc) -> Server { // Spawn new runtime in thread to prevent reactor execution context conflict thread::spawn(move || { let mut rt = runtime::Builder::new() @@ -44,19 +39,8 @@ where .enable_all() .build() .expect("new rt"); - let srv = rt.block_on(async move { - hyper::Server::bind(&([127, 0, 0, 1], 0).into()).serve(hyper::service::make_service_fn( - move |_| { - let func = func.clone(); - async move { - Ok::<_, Infallible>(hyper::service::service_fn(move |req| { - let fut = func(req); - async move { Ok::<_, Infallible>(fut.await) } - })) - } - }, - )) - }); + let srv = + rt.block_on(async move { hyper::Server::bind(&([127, 0, 0, 1], 0).into()).serve(svc) }); let addr = srv.local_addr(); let (shutdown_tx, shutdown_rx) = oneshot::channel(); From 4a08c587427d6e8e6041e796cf07b434d9ac8787 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Sun, 22 Dec 2019 17:50:05 -0500 Subject: [PATCH 22/34] fix doc tests; handle paths correctly; run everything in tasks --- .rustfmt.toml | 4 +- Cargo.lock | 54 +++++++++++++++- lambda/Cargo.toml | 1 + lambda/src/client.rs | 141 ++++++++++++++++++++++++----------------- lambda/src/lib.rs | 12 +--- lambda/src/requests.rs | 23 +++---- lambda/src/support.rs | 72 --------------------- 7 files changed, 150 insertions(+), 157 deletions(-) delete mode 100644 lambda/src/support.rs diff --git a/.rustfmt.toml b/.rustfmt.toml index 15813b06..02f25178 100644 --- a/.rustfmt.toml +++ b/.rustfmt.toml @@ -1,5 +1,5 @@ edition = "2018" # https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#merge_imports -# merge_imports = true +merge_imports = true # https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#max_width -# max_width = 120 \ No newline at end of file +max_width = 120 \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 034acfb9..54a6d54d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,12 +39,27 @@ name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "futures-channel" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -52,6 +67,21 @@ name = "futures-core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures-executor" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-io" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "futures-macro" version = "0.3.1" @@ -78,9 +108,13 @@ name = "futures-util" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -105,6 +139,14 @@ dependencies = [ "tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "hermit-abi" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "http" version = "0.2.0" @@ -185,6 +227,7 @@ name = "lambda" version = "0.1.0" dependencies = [ "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -299,9 +342,10 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.10.1" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "hermit-abi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -469,7 +513,7 @@ dependencies = [ "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", "mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -574,13 +618,17 @@ dependencies = [ "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +"checksum futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b6f16056ecbb57525ff698bb955162d0cd03bee84e6241c27ff75c08d8ca5987" "checksum futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fcae98ca17d102fd8a3603727b9259fcf7fa4239b603d2142926189bc8999b86" "checksum futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "79564c427afefab1dfb3298535b21eda083ef7935b4f0ecbfcb121f0aec10866" +"checksum futures-executor 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e274736563f686a837a0568b478bdabfeaec2dca794b5649b04e2fe1627c231" +"checksum futures-io 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e676577d229e70952ab25f3945795ba5b16d63ca794ca9d2c860e5595d20b5ff" "checksum futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "52e7c56c15537adb4f76d0b7a76ad131cb4d2f4f32d3b0bcabcbe1c7c5e87764" "checksum futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "171be33efae63c2d59e6dbba34186fe0d6394fb378069a76dfd80fdcffd43c16" "checksum futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0bae52d6b29cf440e298856fec3965ee6fa71b06aa7495178615953fd669e5f9" "checksum futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d66274fb76985d3c62c886d1da7ac4c0903a8c9f754e8fe0f35a6a6cc39e76" "checksum h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9433d71e471c1736fd5a61b671fc0b148d7a2992f666c958d03cd8feb3b88d1" +"checksum hermit-abi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f629dc602392d3ec14bfc8a09b5e644d7ffd725102b48b81e59f90f2633621d7" "checksum http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" "checksum http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" @@ -599,7 +647,7 @@ dependencies = [ "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "396aa0f2003d7df8395cb93e09871561ccc3e785f0acb369170e8cc74ddf9226" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" +"checksum num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72" "checksum pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "94b90146c7216e4cb534069fb91366de4ea0ea353105ee45ed297e2d1619e469" "checksum pin-project-internal 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "44ca92f893f0656d3cba8158dd0f2b99b94de256a4a54e870bd6922fcc6c8355" "checksum pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f0af6cbca0e6e3ce8692ee19fb8d734b641899e07b68eb73e9bbbd32f1703991" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index b4683660..d7325bca 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -15,3 +15,4 @@ http = "0.2" lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } pin-project = "0.4.6" futures-util = "0.3.1" +futures = "0.3.1" diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 34b3d65c..a2bb9928 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -5,7 +5,7 @@ use crate::{ }; use bytes::buf::ext::BufExt; use futures_util::future; -use http::{HeaderValue, Method, Request, Response, StatusCode, Uri}; +use http::{uri::PathAndQuery, HeaderValue, Method, Request, Response, StatusCode, Uri}; use hyper::Body; use std::{ convert::{TryFrom, TryInto}, @@ -95,12 +95,9 @@ impl Service> for NextEventSvc { } async fn next_event(req: Request) -> Result, Err> { - let path = "/runtime/invocation/next"; + let path = "/2018-06-01/runtime/invocation/next"; assert_eq!(req.method(), Method::GET); - assert_eq!( - req.uri().path_and_query().unwrap(), - &http::uri::PathAndQuery::from_static(path) - ); + assert_eq!(req.uri().path_and_query().unwrap(), &PathAndQuery::from_static(path)); let rsp = NextEventResponse { request_id: "8476a536-e9f4-11e8-9739-2dfe598c3fcd", @@ -116,7 +113,8 @@ async fn complete_event(req: Request) -> Result, Err> { assert_eq!(req.method(), Method::POST); let rsp = Response::builder() .status(StatusCode::ACCEPTED) - .body(Body::empty())?; + .body(Body::empty()) + .expect("Unable to construct response"); Ok(rsp) } @@ -127,21 +125,16 @@ async fn event_err(req: Request) -> Result, Err> { error_message: "Error parsing event data".to_string(), }; - let body = hyper::body::aggregate(body).await.unwrap(); - let actual = serde_json::from_reader(body.reader()).unwrap(); + let body = hyper::body::aggregate(body).await?; + let actual = serde_json::from_reader(body.reader())?; assert_eq!(expected, actual); assert_eq!(parts.method, Method::POST); + let header = "lambda-runtime-function-error-type"; let expected = "unhandled"; - assert_eq!( - parts.headers["lambda-runtime-function-error-type"], - HeaderValue::try_from(expected).unwrap() - ); + assert_eq!(parts.headers[header], HeaderValue::try_from(expected)?); - let rsp = Response::builder() - .status(StatusCode::ACCEPTED) - .body(Body::empty()) - .unwrap(); + let rsp = Response::builder().status(StatusCode::ACCEPTED).body(Body::empty())?; Ok(rsp) } @@ -166,64 +159,96 @@ mod endpoint_tests { use super::{Client, MakeSvc}; use crate::{ requests::{EventCompletionRequest, EventErrorRequest, IntoRequest, NextEventRequest}, - support::http, types::Diagnostic, Err, }; + use futures::future; use http::{HeaderValue, StatusCode}; - use std::convert::TryFrom; + use std::{ + convert::TryFrom, + net::{SocketAddr, TcpListener}, + }; + + fn setup() -> Result<(TcpListener, SocketAddr), Err> { + let listener = TcpListener::bind("127.0.0.1:0")?; + let addr = listener.local_addr()?; + Ok((listener, addr)) + } #[tokio::test] async fn next_event() -> Result<(), Err> { - let server = http(MakeSvc); - let url = format!("http://{}/", server.addr()); - let mut client = Client::with(url, hyper::Client::new())?; - let rsp = client.call(NextEventRequest.into_req()?).await?; - assert_eq!(rsp.status(), StatusCode::OK); - assert_eq!( - rsp.headers()["lambda-runtime-deadline-ms"], - &HeaderValue::try_from("1542409706888").unwrap() - ); - + let (listener, addr) = setup()?; + let url = format!("http://{}/", addr); + + let server = tokio::spawn(async move { + let svc = hyper::Server::from_tcp(listener)?.serve(MakeSvc); + svc.await + }); + + let client = tokio::spawn(async { + let mut client = Client::with(url, hyper::Client::new())?; + let req = NextEventRequest.into_req()?; + let rsp = client.call(req).await?; + + assert_eq!(rsp.status(), StatusCode::OK); + let header = "lambda-runtime-deadline-ms"; + assert_eq!(rsp.headers()[header], &HeaderValue::try_from("1542409706888")?); + Ok::<(), Err>(()) + }); + future::try_select(client, server).await.unwrap(); Ok(()) } #[tokio::test] async fn ok_response() -> Result<(), Err> { - let id = "156cb537-e2d4-11e8-9b34-d36013741fb9"; - let server = http(MakeSvc); - - let req = EventCompletionRequest { - request_id: id, - body: "done", - }; - - let url = format!("http://{}/", server.addr()); - let mut client = Client::with(url, hyper::Client::new())?; - let rsp = client.call(req.into_req()?).await?; - assert_eq!(rsp.status(), StatusCode::ACCEPTED); - + let (listener, addr) = setup()?; + let url = format!("http://{}/", addr); + + let server = tokio::spawn(async move { + let svc = hyper::Server::from_tcp(listener)?.serve(MakeSvc); + svc.await + }); + + let client = tokio::spawn(async { + let mut client = Client::with(url, hyper::Client::new())?; + let req = EventCompletionRequest { + request_id: "156cb537-e2d4-11e8-9b34-d36013741fb9", + body: "done", + }; + let req = req.into_req()?; + let rsp = client.call(req).await?; + assert_eq!(rsp.status(), StatusCode::ACCEPTED); + Ok::<(), Err>(()) + }); + future::try_select(server, client).await.unwrap(); Ok(()) } #[tokio::test] async fn error_response() -> Result<(), Err> { - let id = "156cb537-e2d4-11e8-9b34-d36013741fb9"; - let server = http(MakeSvc); - - let req = EventErrorRequest { - request_id: id, - diagnostic: Diagnostic { - error_type: "InvalidEventDataError".to_string(), - error_message: "Error parsing event data".to_string(), - }, - }; - - let url = format!("http://{}/", server.addr()); - let mut client = Client::with(url, hyper::Client::new())?; - let rsp = client.call(req.into_req()?).await?; - assert_eq!(rsp.status(), StatusCode::ACCEPTED); - + let (listener, addr) = setup()?; + let url = format!("http://{}/", addr); + + let server = tokio::spawn(async move { + let svc = hyper::Server::from_tcp(listener)?.serve(MakeSvc); + svc.await + }); + + let client = tokio::spawn(async { + let mut client = Client::with(url, hyper::Client::new())?; + let req = EventErrorRequest { + request_id: "156cb537-e2d4-11e8-9b34-d36013741fb9", + diagnostic: Diagnostic { + error_type: "InvalidEventDataError".to_string(), + error_message: "Error parsing event data".to_string(), + }, + }; + let req = req.into_req()?; + let rsp = client.call(req).await?; + assert_eq!(rsp.status(), StatusCode::ACCEPTED); + Ok::<(), Err>(()) + }); + future::try_select(server, client).await.unwrap(); Ok(()) } } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 1684ef32..ac7b3f4b 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -21,7 +21,7 @@ //! Optionally, the `#[lambda]` annotated function can accept an argument //! of [`lambda::LambdaCtx`]. //! -//! ```rust +//! ```no_run //! use lambda::lambda; //! //! type Error = Box; @@ -52,8 +52,6 @@ use tower_service::Service; mod client; mod requests; -#[cfg(test)] -mod support; /// Types availible to a Lambda function. mod types; @@ -121,11 +119,7 @@ impl Future for WithTaskLocal { /// Gets the current function context. pub fn context() -> LambdaCtx { - TASK_LOCAL.with(|tl| { - tl.borrow() - .clone() - .expect("Context is not set; this is a bug.") - }) + TASK_LOCAL.with(|tl| tl.borrow().clone().expect("Context is not set; this is a bug.")) } /// A trait describing an asynchronous function `A` to `B. @@ -171,7 +165,7 @@ where /// Runtime APIs](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html). /// /// # Example -/// ```rust +/// ```no_run /// use lambda::handler_fn; /// /// type Error = Box; diff --git a/lambda/src/requests.rs b/lambda/src/requests.rs index 47869347..2273d9ab 100644 --- a/lambda/src/requests.rs +++ b/lambda/src/requests.rs @@ -12,7 +12,7 @@ pub(crate) trait IntoResponse { fn into_rsp(self) -> Result, Err>; } -// /runtime/invocation/next +// /runtime/invocation/next #[derive(Debug, PartialEq)] pub(crate) struct NextEventRequest; @@ -20,7 +20,7 @@ impl IntoRequest for NextEventRequest { fn into_req(self) -> Result, Err> { let req = Request::builder() .method(Method::GET) - .uri(Uri::from_static("/runtime/invocation/next")) + .uri(Uri::from_static("/2018-06-01/runtime/invocation/next")) .body(Body::empty())?; Ok(req) } @@ -56,7 +56,7 @@ fn test_next_event_request() { let req = NextEventRequest; let req = req.into_req().unwrap(); assert_eq!(req.method(), Method::GET); - assert_eq!(req.uri(), &Uri::from_static("/runtime/invocation/next")); + assert_eq!(req.uri(), &Uri::from_static("/2018-06-01/runtime/invocation/next")); } // /runtime/invocation/{AwsRequestId}/response @@ -70,15 +70,12 @@ where T: for<'serialize> Serialize, { fn into_req(self) -> Result, Err> { - let uri = format!("/runtime/invocation/{}/response", self.request_id); + let uri = format!("/2018-06-01/runtime/invocation/{}/response", self.request_id); let uri = Uri::from_str(&uri)?; let body = serde_json::to_vec(&self.body)?; let body = Body::from(body); - let req = Request::builder() - .method(Method::POST) - .uri(uri) - .body(body)?; + let req = Request::builder().method(Method::POST).uri(uri).body(body)?; Ok(req) } } @@ -90,7 +87,7 @@ fn test_event_completion_request() { body: "hello, world!", }; let req = req.into_req().unwrap(); - let expected = Uri::from_static("/runtime/invocation/id/response"); + let expected = Uri::from_static("/2018-06-01/runtime/invocation/id/response"); assert_eq!(req.method(), Method::POST); assert_eq!(req.uri(), &expected); } @@ -103,7 +100,7 @@ pub(crate) struct EventErrorRequest<'a> { impl<'a> IntoRequest for EventErrorRequest<'a> { fn into_req(self) -> Result, Err> { - let uri = format!("/runtime/invocation/{}/error", self.request_id); + let uri = format!("/2018-06-01/runtime/invocation/{}/error", self.request_id); let uri = Uri::from_str(&uri)?; let body = serde_json::to_vec(&self.diagnostic)?; let body = Body::from(body); @@ -127,7 +124,7 @@ fn test_event_error_request() { }, }; let req = req.into_req().unwrap(); - let expected = Uri::from_static("/runtime/invocation/id/error"); + let expected = Uri::from_static("/2018-06-01/runtime/invocation/id/error"); assert_eq!(req.method(), Method::POST); assert_eq!(req.uri(), &expected); } @@ -137,7 +134,7 @@ struct InitErrorRequest; impl IntoRequest for InitErrorRequest { fn into_req(self) -> Result, Err> { - let uri = format!("/runtime/init/error"); + let uri = format!("/2018-06-01/runtime/init/error"); let uri = Uri::from_str(&uri)?; let req = Request::builder() @@ -153,7 +150,7 @@ impl IntoRequest for InitErrorRequest { fn test_init_error_request() { let req = InitErrorRequest; let req = req.into_req().unwrap(); - let expected = Uri::from_static("/runtime/init/error"); + let expected = Uri::from_static("/2018-06-01/runtime/init/error"); assert_eq!(req.method(), Method::POST); assert_eq!(req.uri(), &expected); } diff --git a/lambda/src/support.rs b/lambda/src/support.rs deleted file mode 100644 index cf738c06..00000000 --- a/lambda/src/support.rs +++ /dev/null @@ -1,72 +0,0 @@ -// Borrowed from https://github.com/seanmonstar/reqwest/blob/master/tests/client.rs - -use crate::client::MakeSvc; -pub use http::{Request, Response}; -use std::{net, sync::mpsc as std_mpsc, thread, time::Duration}; -use tokio::{runtime, sync::oneshot}; - -pub struct Server { - addr: net::SocketAddr, - panic_rx: std_mpsc::Receiver<()>, - shutdown_tx: Option>, -} - -impl Server { - pub fn addr(&self) -> net::SocketAddr { - self.addr - } -} - -impl Drop for Server { - fn drop(&mut self) { - if let Some(tx) = self.shutdown_tx.take() { - let _ = tx.send(()); - } - - if !::std::thread::panicking() { - self.panic_rx - .recv_timeout(Duration::from_secs(3)) - .expect("test server should not panic"); - } - } -} - -pub fn http(svc: MakeSvc) -> Server { - // Spawn new runtime in thread to prevent reactor execution context conflict - thread::spawn(move || { - let mut rt = runtime::Builder::new() - .basic_scheduler() - .enable_all() - .build() - .expect("new rt"); - let srv = - rt.block_on(async move { hyper::Server::bind(&([127, 0, 0, 1], 0).into()).serve(svc) }); - - let addr = srv.local_addr(); - let (shutdown_tx, shutdown_rx) = oneshot::channel(); - let srv = srv.with_graceful_shutdown(async move { - let _ = shutdown_rx.await; - }); - - let (panic_tx, panic_rx) = std_mpsc::channel(); - let tname = format!( - "test({})-support-server", - thread::current().name().unwrap_or("") - ); - thread::Builder::new() - .name(tname) - .spawn(move || { - rt.block_on(srv).unwrap(); - let _ = panic_tx.send(()); - }) - .expect("thread spawn"); - - Server { - addr, - panic_rx, - shutdown_tx: Some(shutdown_tx), - } - }) - .join() - .unwrap() -} From b1e25709e73dd7e75398353d48b1a64887d96f01 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Sun, 22 Dec 2019 17:50:51 -0500 Subject: [PATCH 23/34] remove unneeded dep --- Cargo.lock | 1 - lambda/Cargo.toml | 1 - lambda/src/client.rs | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 54a6d54d..d4d0ca0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -228,7 +228,6 @@ version = "0.1.0" dependencies = [ "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "lambda-attributes 0.1.0", diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index d7325bca..8c8b5652 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -14,5 +14,4 @@ bytes = "0.5" http = "0.2" lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } pin-project = "0.4.6" -futures-util = "0.3.1" futures = "0.3.1" diff --git a/lambda/src/client.rs b/lambda/src/client.rs index a2bb9928..5de2e846 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -4,7 +4,7 @@ use crate::{ Err, }; use bytes::buf::ext::BufExt; -use futures_util::future; +use futures::future; use http::{uri::PathAndQuery, HeaderValue, Method, Request, Response, StatusCode, Uri}; use hyper::Body; use std::{ From 9528a7b010e53bbf9e2fb3e4791b2c25d403856d Mon Sep 17 00:00:00 2001 From: David Barsky Date: Sun, 22 Dec 2019 18:25:09 -0500 Subject: [PATCH 24/34] re-introduce @AnderEnder ci changes --- .github/workflows/build.yml | 71 +++++++++++++++++++ .travis.yml | 2 +- .vscode/launch.json | 138 ++++++++++++++++++++++++++++++++++++ 3 files changed, 210 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build.yml create mode 100644 .vscode/launch.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..82b4cea2 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,71 @@ +name: Rust + +on: [push, pull_request] + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + - macOS-latest + rust: + - 1.40.0 + - stable + - beta + - nightly + target: + - "" + - x86_64-unknown-linux-musl + include: + - rust: nightly + allow_failure: true + exclude: + - os: macOS-latest + target: x86_64-unknown-linux-musl + - os: ubuntu-latest + rust: 1.40.0 + target: x86_64-unknown-linux-musl + - os: ubuntu-latest + rust: beta + target: x86_64-unknown-linux-musl + - os: ubuntu-latest + rust: nightly + target: x86_64-unknown-linux-musl + - os: macOS-latest + rust: 1.40.0 + - os: macOS-latest + rust: beta + - os: macOS-latest + rust: nightly + env: + RUST_BACKTRACE: 1 + steps: + - uses: actions/checkout@v1 + - uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + - name: Build + run: cargo build --all --verbose + env: + TARGET: ${{ matrix.target }} + continue-on-error: ${{ matrix.allow_failure }} + - name: Run tests + run: cargo test --all --verbose + env: + TARGET: ${{ matrix.target }} + continue-on-error: ${{ matrix.allow_failure }} + fmt: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + components: rustfmt + override: true + - name: Run fmt check + run: cargo fmt --all -- --check \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index e3373475..268e11f5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ install: | matrix: include: - - rust: 1.31.0 + - rust: 1.40.0 - rust: stable - rust: beta - rust: nightly diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..e73cc31b --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,138 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in library 'lambda'", + "cargo": { + "args": [ + "test", + "--no-run", + "--lib", + "--package=lambda" + ], + "filter": { + "name": "lambda", + "kind": "lib" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug example 'hello-without-macro'", + "cargo": { + "args": [ + "build", + "--example=hello-without-macro", + "--package=lambda" + ], + "filter": { + "name": "hello-without-macro", + "kind": "example" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in example 'hello-without-macro'", + "cargo": { + "args": [ + "test", + "--no-run", + "--example=hello-without-macro", + "--package=lambda" + ], + "filter": { + "name": "hello-without-macro", + "kind": "example" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug example 'hello'", + "cargo": { + "args": [ + "build", + "--example=hello", + "--package=lambda" + ], + "filter": { + "name": "hello", + "kind": "example" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in example 'hello'", + "cargo": { + "args": [ + "test", + "--no-run", + "--example=hello", + "--package=lambda" + ], + "filter": { + "name": "hello", + "kind": "example" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug example 'hello-with-ctx'", + "cargo": { + "args": [ + "build", + "--example=hello-with-ctx", + "--package=lambda" + ], + "filter": { + "name": "hello-with-ctx", + "kind": "example" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in example 'hello-with-ctx'", + "cargo": { + "args": [ + "test", + "--no-run", + "--example=hello-with-ctx", + "--package=lambda" + ], + "filter": { + "name": "hello-with-ctx", + "kind": "example" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + } + ] +} \ No newline at end of file From 5eb695497e497926aadd60cb14d3b2e4ff3a7a66 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Mon, 23 Dec 2019 12:24:55 -0500 Subject: [PATCH 25/34] remove double-serialization --- lambda/src/lib.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index ac7b3f4b..214d74ed 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -233,11 +233,7 @@ where }; let req = match f.await { - Ok(res) => EventCompletionRequest { - request_id, - body: serde_json::to_vec(&res)?, - } - .into_req()?, + Ok(res) => EventCompletionRequest { request_id, body: res }.into_req()?, Err(err) => EventErrorRequest { request_id, diagnostic: Diagnostic { From b890cf462d5f99a86a3aedb392c1b31ba3e5ee9b Mon Sep 17 00:00:00 2001 From: David Barsky Date: Mon, 23 Dec 2019 12:25:09 -0500 Subject: [PATCH 26/34] remove travis --- .travis.yml | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 268e11f5..00000000 --- a/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -language: rust - -cache: - directories: - - /home/travis/.cargo - -before_cache: - - rm -rf /home/travis/.cargo/registry - -install: | - # this project's rustfmt style requires nightly features - if [[ "$TRAVIS_RUST_VERSION" == nightly ]]; then - rustup component add rustfmt - fi - -matrix: - include: - - rust: 1.40.0 - - rust: stable - - rust: beta - - rust: nightly - env: ALLOW_FAILURES=true - - os: osx - - env: TARGET=x86_64-unknown-linux-musl - - env: TARGET=x86_64-unknown-linux-gnu -script: - - | - if [[ "$TRAVIS_RUST_VERSION" == nightly ]]; then - cargo fmt --all -- --check - fi - - cargo build --verbose --all - - cargo test --verbose --all From 77c0b9500a449bb3108b0cc70b9709534ba98e1d Mon Sep 17 00:00:00 2001 From: skorobkov Date: Wed, 25 Dec 2019 19:36:06 +0200 Subject: [PATCH 27/34] Use default HTTP scheme for endpoint like "127.0.0.1:9001" (#188) --- lambda/src/client.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 5de2e846..a0f290cf 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -5,7 +5,10 @@ use crate::{ }; use bytes::buf::ext::BufExt; use futures::future; -use http::{uri::PathAndQuery, HeaderValue, Method, Request, Response, StatusCode, Uri}; +use http::{ + uri::{PathAndQuery, Scheme}, + HeaderValue, Method, Request, Response, StatusCode, Uri, +}; use hyper::Body; use std::{ convert::{TryFrom, TryInto}, @@ -40,7 +43,7 @@ where fn set_origin(&self, req: Request) -> Result, Err> { let (mut parts, body) = req.into_parts(); let (scheme, authority) = { - let scheme = self.base.scheme().expect("Scheme not found"); + let scheme = self.base.scheme().unwrap_or(&Scheme::HTTP); let authority = self.base.authority().expect("Authority not found"); (scheme, authority) }; From 1b95ac1f5e1c44861ee860c7c9eff3c795c08975 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Wed, 25 Dec 2019 16:51:40 -0500 Subject: [PATCH 28/34] test lambda function end-to-end --- lambda/src/client.rs | 40 +++++++++++++++++++++++++++++++++++----- lambda/src/lib.rs | 38 ++++++++++++++++++++++++++------------ lambda/src/types.rs | 8 +++++++- 3 files changed, 68 insertions(+), 18 deletions(-) diff --git a/lambda/src/client.rs b/lambda/src/client.rs index a0f290cf..4f99ecf3 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -10,6 +10,7 @@ use http::{ HeaderValue, Method, Request, Response, StatusCode, Uri, }; use hyper::Body; +use serde_json::json; use std::{ convert::{TryFrom, TryInto}, future::Future, @@ -70,9 +71,9 @@ where } } -pub struct NextEventSvc; +pub struct EndpointSvc; -impl Service> for NextEventSvc { +impl Service> for EndpointSvc { type Response = Response; type Error = crate::Err; type Future = Fut<'static, Result>; @@ -101,13 +102,14 @@ async fn next_event(req: Request) -> Result, Err> { let path = "/2018-06-01/runtime/invocation/next"; assert_eq!(req.method(), Method::GET); assert_eq!(req.uri().path_and_query().unwrap(), &PathAndQuery::from_static(path)); + let body = json!({"message": "hello"}); let rsp = NextEventResponse { request_id: "8476a536-e9f4-11e8-9739-2dfe598c3fcd", deadline: 1542409706888, arn: "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime", trace_id: "Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419", - body: vec![], + body: serde_json::to_vec(&body)?, }; rsp.into_rsp() } @@ -144,7 +146,7 @@ async fn event_err(req: Request) -> Result, Err> { pub struct MakeSvc; impl Service for MakeSvc { - type Response = NextEventSvc; + type Response = EndpointSvc; type Error = std::io::Error; type Future = future::Ready>; @@ -153,7 +155,7 @@ impl Service for MakeSvc { } fn call(&mut self, _: T) -> Self::Future { - future::ok(NextEventSvc) + future::ok(EndpointSvc) } } @@ -161,7 +163,9 @@ impl Service for MakeSvc { mod endpoint_tests { use super::{Client, MakeSvc}; use crate::{ + context, handler_fn, requests::{EventCompletionRequest, EventErrorRequest, IntoRequest, NextEventRequest}, + run_simulated, types::Diagnostic, Err, }; @@ -254,4 +258,30 @@ mod endpoint_tests { future::try_select(server, client).await.unwrap(); Ok(()) } + + #[tokio::test] + async fn run_end_to_end() -> Result<(), Err> { + use serde_json::Value; + let (listener, addr) = setup()?; + let url = format!("http://{}/", addr); + + let server = tokio::spawn(async move { + let svc = hyper::Server::from_tcp(listener)?.serve(MakeSvc); + svc.await + }); + + async fn handler(s: Value) -> Result { + let ctx = context(); + assert!(ctx.xray_trace_id.is_some()); + Ok(s) + } + let handler = handler_fn(handler); + + let handler = tokio::spawn(async move { + run_simulated(handler, &url).await?; + Ok::<(), Err>(()) + }); + future::try_select(server, handler).await.unwrap(); + Ok(()) + } } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 214d74ed..2512a3d3 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -33,7 +33,6 @@ //! } //! ``` pub use crate::types::LambdaCtx; -use bytes::buf::BufExt; use client::Client; use http::{Request, Response}; use hyper::Body; @@ -129,10 +128,6 @@ pub trait Handler { /// The future response value of this handler. type Fut: Future>; /// Process the incoming event and return the response asynchronously. - /// - /// # Arguments - /// * `event` - The data received in the invocation request - /// * `ctx` - The context for the current invocation fn call(&mut self, event: A) -> Self::Fut; } @@ -193,7 +188,23 @@ where let config = Config::from_env()?; let client = Client::with(&config.endpoint, hyper::Client::new())?; let mut exec = Executor { client }; - exec.run(&mut handler).await?; + exec.run(&mut handler, false).await?; + + Ok(()) +} + +/// Runs the lambda function almost entirely in-memory. This is mean for easier testing. +pub async fn run_simulated(handler: F, url: &str) -> Result<(), Err> +where + F: Handler, + >::Err: fmt::Debug, + A: for<'de> Deserialize<'de>, + B: Serialize, +{ + let mut handler = handler; + let client = Client::with(url, hyper::Client::new())?; + let mut exec = Executor { client }; + exec.run(&mut handler, true).await?; Ok(()) } @@ -207,7 +218,7 @@ where S: Service, Response = Response>, >>::Error: Into + Send + Sync + 'static + std::error::Error, { - async fn run(&mut self, handler: &mut F) -> Result<(), Err> + async fn run(&mut self, handler: &mut F, once: bool) -> Result<(), Err> where F: Handler, >::Err: fmt::Debug, @@ -215,16 +226,16 @@ where B: Serialize, { let client = &mut self.client; + // todo: refactor this into a stream so that the `once` boolean can be replaced + // a `.take(n).await` combinator if we want to run this once, if `n` is `1`. loop { let req = NextEventRequest.into_req()?; let event = client.call(req).await?; let (parts, body) = event.into_parts(); - let mut ctx = LambdaCtx::try_from(parts.headers)?; - ctx.env_config = Config::from_env()?; - - let body = hyper::body::aggregate(body).await?; - let body = serde_json::from_reader(body.reader())?; + let ctx = LambdaCtx::try_from(parts.headers)?; + let body = hyper::body::to_bytes(body).await?; + let body = serde_json::from_slice(&body)?; let request_id = &ctx.request_id.clone(); let f = WithTaskLocal { @@ -244,6 +255,9 @@ where .into_req()?, }; client.call(req).await?; + if once { + break Ok(()); + } } } } diff --git a/lambda/src/types.rs b/lambda/src/types.rs index 126a5e56..e33f966a 100644 --- a/lambda/src/types.rs +++ b/lambda/src/types.rs @@ -130,8 +130,14 @@ impl TryFrom for LambdaCtx { .expect("Missing deadline"), invoked_function_arn: headers["lambda-runtime-invoked-function-arn"] .to_str() - .expect("Missing arn") + .expect("Missing arn; this is a bug") .to_owned(), + xray_trace_id: headers.get("lambda-runtime-trace-id").map(|header| { + header + .to_str() + .expect("Invalid XRayTraceID sent by Lambda; this is a bug") + .to_owned() + }), ..Default::default() }; Ok(ctx) From 8fed75837728c2adb7d82bf4425b8941fdfed0a1 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Wed, 1 Jan 2020 17:26:36 -0500 Subject: [PATCH 29/34] lol, bye vscode --- .vscode/launch.json | 138 -------------------------------------------- 1 file changed, 138 deletions(-) delete mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index e73cc31b..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in library 'lambda'", - "cargo": { - "args": [ - "test", - "--no-run", - "--lib", - "--package=lambda" - ], - "filter": { - "name": "lambda", - "kind": "lib" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug example 'hello-without-macro'", - "cargo": { - "args": [ - "build", - "--example=hello-without-macro", - "--package=lambda" - ], - "filter": { - "name": "hello-without-macro", - "kind": "example" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in example 'hello-without-macro'", - "cargo": { - "args": [ - "test", - "--no-run", - "--example=hello-without-macro", - "--package=lambda" - ], - "filter": { - "name": "hello-without-macro", - "kind": "example" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug example 'hello'", - "cargo": { - "args": [ - "build", - "--example=hello", - "--package=lambda" - ], - "filter": { - "name": "hello", - "kind": "example" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in example 'hello'", - "cargo": { - "args": [ - "test", - "--no-run", - "--example=hello", - "--package=lambda" - ], - "filter": { - "name": "hello", - "kind": "example" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug example 'hello-with-ctx'", - "cargo": { - "args": [ - "build", - "--example=hello-with-ctx", - "--package=lambda" - ], - "filter": { - "name": "hello-with-ctx", - "kind": "example" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in example 'hello-with-ctx'", - "cargo": { - "args": [ - "test", - "--no-run", - "--example=hello-with-ctx", - "--package=lambda" - ], - "filter": { - "name": "hello-with-ctx", - "kind": "example" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - } - ] -} \ No newline at end of file From 2d37c340ff571670e4458bf5989965dbbbf357a5 Mon Sep 17 00:00:00 2001 From: skorobkov Date: Thu, 2 Jan 2020 01:29:52 +0200 Subject: [PATCH 30/34] fix lambda-http deps (#189) --- lambda-http/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lambda-http/Cargo.toml b/lambda-http/Cargo.toml index 512ddaab..48a7a05b 100644 --- a/lambda-http/Cargo.toml +++ b/lambda-http/Cargo.toml @@ -20,7 +20,7 @@ http = "0.1" serde = "^1" serde_json = "^1" serde_derive = "^1" -lambda_runtime = { path = "../lambda-runtime", version = "^0.2" } +lambda = { path = "../lambda" } tokio = "^0.1" base64 = "0.10" failure = "0.1" From 603315abb00496459f1af3d38fcead6c54232a12 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Wed, 1 Jan 2020 18:30:32 -0500 Subject: [PATCH 31/34] fix error bounds --- lambda/src/client.rs | 2 +- lambda/src/lib.rs | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 4f99ecf3..deed0ef2 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -30,7 +30,7 @@ pub(crate) struct Client { impl Client where S: Service, Response = Response>, - >>::Error: Into + Send + Sync + 'static + std::error::Error, + S::Error: std::error::Error + Send + Sync + 'static, { pub fn with(base: T, client: S) -> Result where diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 2512a3d3..98aa0eaa 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -41,7 +41,9 @@ use serde::{Deserialize, Serialize}; use std::{ cell::RefCell, convert::TryFrom, - env, fmt, + env, + error::Error, + fmt, future::Future, mem, pin::Pin, @@ -57,7 +59,7 @@ mod types; use requests::{EventCompletionRequest, EventErrorRequest, IntoRequest, NextEventRequest}; use types::Diagnostic; -type Err = Box; +type Err = Box; /// Configuration derived from environment variables. #[derive(Debug, Default, Clone, PartialEq)] @@ -193,7 +195,7 @@ where Ok(()) } -/// Runs the lambda function almost entirely in-memory. This is mean for easier testing. +/// Runs the lambda function almost entirely in-memory. This is meant for testing. pub async fn run_simulated(handler: F, url: &str) -> Result<(), Err> where F: Handler, @@ -216,7 +218,7 @@ struct Executor { impl Executor where S: Service, Response = Response>, - >>::Error: Into + Send + Sync + 'static + std::error::Error, + >>::Error: Error + Send + Sync + 'static, { async fn run(&mut self, handler: &mut F, once: bool) -> Result<(), Err> where From e691c0edcbaad173c7f2c02175d9e9e2d02f2278 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Tue, 28 Jan 2020 16:43:22 -0500 Subject: [PATCH 32/34] update dep; use tokio's task-local for ctx. --- Cargo.lock | 219 ++++++++++++++++-------------- lambda/Cargo.toml | 1 - lambda/examples/hello-with-ctx.rs | 2 - lambda/src/client.rs | 31 +++-- lambda/src/lib.rs | 48 +------ 5 files changed, 140 insertions(+), 161 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d4d0ca0b..5fc8b329 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,19 +5,24 @@ name = "arc-swap" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "autocfg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "bitflags" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytes" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -30,7 +35,7 @@ name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -88,9 +93,9 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -114,7 +119,7 @@ dependencies = [ "futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -126,25 +131,25 @@ name = "h2" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hermit-abi" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -152,9 +157,9 @@ name = "http" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -162,7 +167,7 @@ name = "http-body" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -176,7 +181,7 @@ name = "hyper" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures-channel 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -184,33 +189,35 @@ dependencies = [ "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "indexmap" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "iovec" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "itoa" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -226,15 +233,14 @@ dependencies = [ name = "lambda" version = "0.1.0" dependencies = [ - "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "lambda-attributes 0.1.0", - "pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -244,17 +250,17 @@ version = "0.1.0" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lazy_static" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.62" +version = "0.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -262,12 +268,12 @@ name = "log" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "memchr" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -275,12 +281,12 @@ name = "mio" version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -304,8 +310,8 @@ name = "mio-uds" version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -334,41 +340,41 @@ name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num_cpus" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "hermit-abi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pin-project" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "pin-project-internal 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pin-project-internal" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pin-project-lite" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -381,9 +387,9 @@ name = "proc-macro-hack" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -401,7 +407,7 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.1" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -412,7 +418,7 @@ name = "quote" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -422,35 +428,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "ryu" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.99" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" -version = "1.0.99" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.40" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -459,7 +465,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -472,18 +478,18 @@ name = "socket2" version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "1.0.5" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -493,40 +499,42 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" -version = "0.2.4" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", "mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-macros 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-macros" -version = "0.2.0" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -534,12 +542,12 @@ name = "tokio-util" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -611,9 +619,10 @@ dependencies = [ [metadata] "checksum arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" -"checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" -"checksum bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c85319f157e4e26c703678e68e26ab71a46c0199286fa670b21cc9fec13d895" -"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" +"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +"checksum bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" +"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" @@ -627,47 +636,47 @@ dependencies = [ "checksum futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0bae52d6b29cf440e298856fec3965ee6fa71b06aa7495178615953fd669e5f9" "checksum futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d66274fb76985d3c62c886d1da7ac4c0903a8c9f754e8fe0f35a6a6cc39e76" "checksum h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9433d71e471c1736fd5a61b671fc0b148d7a2992f666c958d03cd8feb3b88d1" -"checksum hermit-abi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f629dc602392d3ec14bfc8a09b5e644d7ffd725102b48b81e59f90f2633621d7" +"checksum hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772" "checksum http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" "checksum http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" "checksum hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8bf49cfb32edee45d890537d9057d1b02ed55f53b7b6a30bae83a38c9231749e" -"checksum indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4d6d89e0948bf10c08b9ecc8ac5b83f07f857ebe2c0cbe38de15b4e4f510356" -"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" -"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" +"checksum indexmap 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b54058f0a6ff80b6803da8faf8997cde53872b38f4023728f6830b06cd3c0dc" +"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +"checksum itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" -"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" +"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" -"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" +"checksum memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3197e20c7edb283f87c071ddfc7a2cca8f8e0b888c242959846a6fce03c72223" "checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f" "checksum mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e374eff525ce1c5b7687c4cef63943e7686524a387933ad27ca7ec43779cb3" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "396aa0f2003d7df8395cb93e09871561ccc3e785f0acb369170e8cc74ddf9226" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72" -"checksum pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "94b90146c7216e4cb534069fb91366de4ea0ea353105ee45ed297e2d1619e469" -"checksum pin-project-internal 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "44ca92f893f0656d3cba8158dd0f2b99b94de256a4a54e870bd6922fcc6c8355" -"checksum pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f0af6cbca0e6e3ce8692ee19fb8d734b641899e07b68eb73e9bbbd32f1703991" +"checksum num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6" +"checksum pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7804a463a8d9572f13453c516a5faea534a2403d7ced2f0c7e100eeff072772c" +"checksum pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "385322a45f2ecf3410c68d2a549a4a2685e8051d0f278e39743ff4e451cb9b3f" +"checksum pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" "checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" "checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c5c2380ae88876faae57698be9e9775e3544decad214599c3a6266cca6ac802" +"checksum proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" -"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" -"checksum serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "fec2851eb56d010dc9a21b89ca53ee75e6528bab60c11e89d38390904982da9f" -"checksum serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "cb4dc18c61206b08dc98216c98faa0232f4337e1e1b8574551d5bad29ea1b425" -"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" +"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" +"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" +"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" +"checksum serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "eab8f15f15d6c41a154c1b128a22f2dfabe350ef53c40953d84e36155c91192b" "checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85" -"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" +"checksum syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bcced6bb623d4bff3739c176c415f13c418f426395c169c9c3cd9a492c715b16" -"checksum tokio-macros 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5795a71419535c6dcecc9b6ca95bdd3c2d6142f7e8343d7beb9923f129aa87e" +"checksum tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8fdd17989496f49cdc57978c96f0c9fe5e4a58a8bddc6813c449a4624f6a030b" +"checksum tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f4b1e7ed7d5d4c2af3d999904b0eebe76544897cdbfb2b9684bed2174ab20f7c" "checksum tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930" "checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" diff --git a/lambda/Cargo.toml b/lambda/Cargo.toml index 8c8b5652..e7a96f1b 100644 --- a/lambda/Cargo.toml +++ b/lambda/Cargo.toml @@ -13,5 +13,4 @@ tower-service = "0.3" bytes = "0.5" http = "0.2" lambda-attributes = { path = "../lambda-attributes", version = "0.1.0" } -pin-project = "0.4.6" futures = "0.3.1" diff --git a/lambda/examples/hello-with-ctx.rs b/lambda/examples/hello-with-ctx.rs index 1652d2a3..58549494 100644 --- a/lambda/examples/hello-with-ctx.rs +++ b/lambda/examples/hello-with-ctx.rs @@ -5,7 +5,5 @@ type Error = Box; #[lambda] #[tokio::main] async fn main(event: String) -> Result { - let ctx = lambda::context(); - dbg!(ctx); Ok(event) } diff --git a/lambda/src/client.rs b/lambda/src/client.rs index deed0ef2..2298f741 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -163,18 +163,18 @@ impl Service for MakeSvc { mod endpoint_tests { use super::{Client, MakeSvc}; use crate::{ - context, handler_fn, + handler_fn, requests::{EventCompletionRequest, EventErrorRequest, IntoRequest, NextEventRequest}, run_simulated, types::Diagnostic, - Err, + Err, INVOCATION_CTX, }; - use futures::future; use http::{HeaderValue, StatusCode}; use std::{ convert::TryFrom, net::{SocketAddr, TcpListener}, }; + use tokio::select; fn setup() -> Result<(TcpListener, SocketAddr), Err> { let listener = TcpListener::bind("127.0.0.1:0")?; @@ -202,7 +202,10 @@ mod endpoint_tests { assert_eq!(rsp.headers()[header], &HeaderValue::try_from("1542409706888")?); Ok::<(), Err>(()) }); - future::try_select(client, server).await.unwrap(); + select! { + _ = client => {}, + _ = server => unreachable!() + }; Ok(()) } @@ -227,7 +230,10 @@ mod endpoint_tests { assert_eq!(rsp.status(), StatusCode::ACCEPTED); Ok::<(), Err>(()) }); - future::try_select(server, client).await.unwrap(); + select! { + _ = client => {}, + _ = server => unreachable!() + }; Ok(()) } @@ -255,7 +261,10 @@ mod endpoint_tests { assert_eq!(rsp.status(), StatusCode::ACCEPTED); Ok::<(), Err>(()) }); - future::try_select(server, client).await.unwrap(); + select! { + _ = client => {}, + _ = server => unreachable!() + }; Ok(()) } @@ -271,8 +280,9 @@ mod endpoint_tests { }); async fn handler(s: Value) -> Result { - let ctx = context(); - assert!(ctx.xray_trace_id.is_some()); + INVOCATION_CTX.with(|ctx| { + assert!(ctx.xray_trace_id.is_some()); + }); Ok(s) } let handler = handler_fn(handler); @@ -281,7 +291,10 @@ mod endpoint_tests { run_simulated(handler, &url).await?; Ok::<(), Err>(()) }); - future::try_select(server, handler).await.unwrap(); + select! { + _ = handler => {}, + _ = server => unreachable!() + }; Ok(()) } } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 98aa0eaa..8e168ac4 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -38,17 +38,7 @@ use http::{Request, Response}; use hyper::Body; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; -use std::{ - cell::RefCell, - convert::TryFrom, - env, - error::Error, - fmt, - future::Future, - mem, - pin::Pin, - task::{Context, Poll}, -}; +use std::{convert::TryFrom, env, error::Error, fmt, future::Future}; use tower_service::Service; mod client; @@ -93,34 +83,8 @@ impl Config { } } -thread_local! { - static TASK_LOCAL: RefCell> = RefCell::new(None); -} - -#[pin_project::pin_project] -struct WithTaskLocal { - task_local: Option, - #[pin] - future: F, -} - -impl Future for WithTaskLocal { - type Output = F::Output; - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let this = self.project(); - TASK_LOCAL.with(|tl| { - let prev = tl.borrow_mut().replace(this.task_local.take().unwrap()); - let res = this.future.poll(cx); - // handling the inner future panicking is left as an exercise to the reader - *this.task_local = mem::replace(&mut *tl.borrow_mut(), prev); - res - }) - } -} - -/// Gets the current function context. -pub fn context() -> LambdaCtx { - TASK_LOCAL.with(|tl| tl.borrow().clone().expect("Context is not set; this is a bug.")) +tokio::task_local! { + pub static INVOCATION_CTX: types::LambdaCtx; } /// A trait describing an asynchronous function `A` to `B. @@ -175,7 +139,6 @@ where /// } /// /// async fn func(s: String) -> Result { -/// let ctx = lambda::context(); /// Ok(s) /// } /// ``` @@ -240,10 +203,7 @@ where let body = serde_json::from_slice(&body)?; let request_id = &ctx.request_id.clone(); - let f = WithTaskLocal { - task_local: Some(ctx), - future: handler.call(body), - }; + let f = INVOCATION_CTX.scope(ctx, { handler.call(body) }); let req = match f.await { Ok(res) => EventCompletionRequest { request_id, body: res }.into_req()?, From 653625720d19832d7bef661b2f31893bc9348d50 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Tue, 28 Jan 2020 17:35:20 -0500 Subject: [PATCH 33/34] wip; added `race` macro ; started `Incoming` stream macro. --- lambda/src/client.rs | 38 ++++++++++++++++++++------------------ lambda/src/lib.rs | 21 ++++++++++++++++++++- 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 2298f741..49ff0956 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -176,6 +176,21 @@ mod endpoint_tests { }; use tokio::select; + /// `race` selects over two tasks. + /// + /// The first task to complete is joined and checked for errors. + /// In this test suite, we don't expect that the "server" task + /// will ever complete because it is continuously listening for + /// incoming events. + macro_rules! race { + ($left:ident, $right:ident) => { + select! { + $left = $left => { $left?? }, + $right = $right => { $right?? } + }; + }; + } + fn setup() -> Result<(TcpListener, SocketAddr), Err> { let listener = TcpListener::bind("127.0.0.1:0")?; let addr = listener.local_addr()?; @@ -202,10 +217,7 @@ mod endpoint_tests { assert_eq!(rsp.headers()[header], &HeaderValue::try_from("1542409706888")?); Ok::<(), Err>(()) }); - select! { - _ = client => {}, - _ = server => unreachable!() - }; + race!(client, server); Ok(()) } @@ -230,10 +242,7 @@ mod endpoint_tests { assert_eq!(rsp.status(), StatusCode::ACCEPTED); Ok::<(), Err>(()) }); - select! { - _ = client => {}, - _ = server => unreachable!() - }; + race!(client, server); Ok(()) } @@ -261,10 +270,7 @@ mod endpoint_tests { assert_eq!(rsp.status(), StatusCode::ACCEPTED); Ok::<(), Err>(()) }); - select! { - _ = client => {}, - _ = server => unreachable!() - }; + race!(client, server); Ok(()) } @@ -286,15 +292,11 @@ mod endpoint_tests { Ok(s) } let handler = handler_fn(handler); - - let handler = tokio::spawn(async move { + let client = tokio::spawn(async move { run_simulated(handler, &url).await?; Ok::<(), Err>(()) }); - select! { - _ = handler => {}, - _ = server => unreachable!() - }; + race!(client, server); Ok(()) } } diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index 8e168ac4..af5303af 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -38,7 +38,8 @@ use http::{Request, Response}; use hyper::Body; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; -use std::{convert::TryFrom, env, error::Error, fmt, future::Future}; +use std::task::{Context, Poll}; +use std::{convert::TryFrom, env, error::Error, fmt, future::Future, pin::Pin}; use tower_service::Service; mod client; @@ -178,6 +179,24 @@ struct Executor { client: Client, } +struct Incoming { + client: Client, + future: Option, +} + +impl futures::Stream for Incoming +where + S: Service, Response = Response>, + >>::Error: Error + Send + Sync + 'static, + F: Future, +{ + type Item = Result, S::Error>; + + fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + unimplemented!() + } +} + impl Executor where S: Service, Response = Response>, From 006a275ad46e81a18447912a4da674bd65f00435 Mon Sep 17 00:00:00 2001 From: David Barsky Date: Wed, 29 Jan 2020 10:23:46 -0500 Subject: [PATCH 34/34] handle routing better --- lambda/src/client.rs | 50 +++++++++++++++++++++++--------------------- lambda/src/lib.rs | 11 ++++++++-- 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/lambda/src/client.rs b/lambda/src/client.rs index 49ff0956..c58a4cd3 100644 --- a/lambda/src/client.rs +++ b/lambda/src/client.rs @@ -84,21 +84,26 @@ impl Service> for EndpointSvc { fn call(&mut self, req: Request) -> Self::Future { let fut = async move { - let path = req.uri().path_and_query().unwrap().as_str(); - let rsp = if path.ends_with("next") { - next_event(req).await - } else if path.ends_with("response") { - complete_event(req).await - } else { - event_err(req).await - }; - rsp + let path: Vec<&str> = req + .uri() + .path_and_query() + .unwrap() + .as_str() + .split("/") + .collect::>(); + match &path[1..] { + ["2018-06-01", "runtime", "invocation", "next"] => next_event(&req).await, + ["2018-06-01", "runtime", "invocation", id, "response"] => complete_event(&req, id).await, + ["2018-06-01", "runtime", "invocation", id, "error"] => event_err(&req, id).await, + ["2018-06-01", "runtime", "init", "error"] => unimplemented!(), + _ => unimplemented!(), + } }; Box::pin(fut) } } -async fn next_event(req: Request) -> Result, Err> { +async fn next_event(req: &Request) -> Result, Err> { let path = "/2018-06-01/runtime/invocation/next"; assert_eq!(req.method(), Method::GET); assert_eq!(req.uri().path_and_query().unwrap(), &PathAndQuery::from_static(path)); @@ -114,30 +119,27 @@ async fn next_event(req: Request) -> Result, Err> { rsp.into_rsp() } -async fn complete_event(req: Request) -> Result, Err> { - assert_eq!(req.method(), Method::POST); +async fn complete_event(req: &Request, id: &str) -> Result, Err> { + assert_eq!(Method::POST, req.method()); let rsp = Response::builder() .status(StatusCode::ACCEPTED) .body(Body::empty()) .expect("Unable to construct response"); + + let expected = format!("/2018-06-01/runtime/invocation/{}/response", id); + assert_eq!(expected, req.uri().path()); + Ok(rsp) } -async fn event_err(req: Request) -> Result, Err> { - let (parts, body) = req.into_parts(); - let expected = Diagnostic { - error_type: "InvalidEventDataError".to_string(), - error_message: "Error parsing event data".to_string(), - }; - - let body = hyper::body::aggregate(body).await?; - let actual = serde_json::from_reader(body.reader())?; - assert_eq!(expected, actual); +async fn event_err(req: &Request, id: &str) -> Result, Err> { + let expected = format!("/2018-06-01/runtime/invocation/{}/error", id); + assert_eq!(expected, req.uri().path()); - assert_eq!(parts.method, Method::POST); + assert_eq!(req.method(), Method::POST); let header = "lambda-runtime-function-error-type"; let expected = "unhandled"; - assert_eq!(parts.headers[header], HeaderValue::try_from(expected)?); + assert_eq!(req.headers()[header], HeaderValue::try_from(expected)?); let rsp = Response::builder().status(StatusCode::ACCEPTED).body(Body::empty())?; Ok(rsp) diff --git a/lambda/src/lib.rs b/lambda/src/lib.rs index af5303af..c5696736 100644 --- a/lambda/src/lib.rs +++ b/lambda/src/lib.rs @@ -38,8 +38,15 @@ use http::{Request, Response}; use hyper::Body; pub use lambda_attributes::lambda; use serde::{Deserialize, Serialize}; -use std::task::{Context, Poll}; -use std::{convert::TryFrom, env, error::Error, fmt, future::Future, pin::Pin}; +use std::{ + convert::TryFrom, + env, + error::Error, + fmt, + future::Future, + pin::Pin, + task::{Context, Poll}, +}; use tower_service::Service; mod client;