├── .gitignore ├── .travis.yml ├── CODE_OF_CONDUCT.md ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md ├── book └── src │ ├── SUMMARY.md │ ├── echo.md │ ├── intro.md │ ├── mvc.md │ ├── ping.md │ ├── routes.md │ ├── setup.md │ └── structure.md ├── demo ├── colors │ ├── Cargo.toml │ └── src │ │ ├── assets │ │ ├── index.html │ │ └── style.css │ │ ├── bin │ │ └── server.rs │ │ ├── clients │ │ └── mod.rs │ │ ├── formats │ │ └── mod.rs │ │ ├── lib.rs │ │ ├── methods │ │ ├── mod.rs │ │ └── random.rs │ │ ├── middleware │ │ └── mod.rs │ │ ├── resources │ │ ├── mod.rs │ │ └── square.rs │ │ ├── routing.rs │ │ └── templates │ │ └── square │ │ ├── get.html.hbs │ │ └── random.html.hbs └── todomvc │ ├── Cargo.toml │ ├── README.md │ ├── build.rs │ ├── frontend │ ├── .editorconfig │ ├── .ember-cli │ ├── .eslintrc.js │ ├── .gitignore │ ├── .travis.yml │ ├── .watchmanconfig │ ├── app │ │ ├── adapters │ │ │ └── application.js │ │ ├── app.js │ │ ├── components │ │ │ └── .gitkeep │ │ ├── controllers │ │ │ └── .gitkeep │ │ ├── helpers │ │ │ └── .gitkeep │ │ ├── index.html │ │ ├── models │ │ │ ├── .gitkeep │ │ │ └── note.js │ │ ├── resolver.js │ │ ├── router.js │ │ ├── routes │ │ │ ├── .gitkeep │ │ │ ├── index.js │ │ │ └── todo.js │ │ ├── serializers │ │ │ └── application.js │ │ ├── styles │ │ │ └── app.css │ │ └── templates │ │ │ ├── application.hbs │ │ │ ├── components │ │ │ └── .gitkeep │ │ │ └── todo.hbs │ ├── config │ │ ├── environment.js │ │ └── targets.js │ ├── ember-cli-build.js │ ├── package.json │ ├── public │ │ ├── crossdomain.xml │ │ └── robots.txt │ ├── server │ │ ├── index.js │ │ └── proxies │ │ │ └── api.js │ ├── testem.js │ └── vendor │ │ └── .gitkeep │ └── src │ ├── bin │ └── server.rs │ ├── clients │ ├── mod.rs │ └── store.rs │ ├── lib.rs │ ├── middleware │ ├── logging.rs │ └── mod.rs │ ├── resources │ ├── mod.rs │ └── note.rs │ └── routing.rs ├── deploy_docs.sh ├── docs ├── _FontAwesome │ ├── css │ │ └── font-awesome.css │ └── fonts │ │ ├── FontAwesome.ttf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 ├── api │ ├── .lock │ ├── COPYRIGHT.txt │ ├── FiraSans-LICENSE.txt │ ├── FiraSans-Medium.woff │ ├── FiraSans-Regular.woff │ ├── Heuristica-Italic.woff │ ├── Heuristica-LICENSE.txt │ ├── LICENSE-APACHE.txt │ ├── LICENSE-MIT.txt │ ├── SourceCodePro-LICENSE.txt │ ├── SourceCodePro-Regular.woff │ ├── SourceCodePro-Semibold.woff │ ├── SourceSerifPro-Bold.woff │ ├── SourceSerifPro-LICENSE.txt │ ├── SourceSerifPro-Regular.woff │ ├── cargonauts │ │ ├── Environment.t.html │ │ ├── Error.t.html │ │ ├── Relationship.t.html │ │ ├── Resource.t.html │ │ ├── clients │ │ │ ├── Client.t.html │ │ │ ├── Configure.t.html │ │ │ ├── Conn.t.html │ │ │ ├── ConnectClient.t.html │ │ │ ├── NewServiceLike.t.html │ │ │ ├── PoolConfig.t.html │ │ │ ├── index.html │ │ │ ├── mock │ │ │ │ ├── MockConnection.t.html │ │ │ │ ├── index.html │ │ │ │ ├── sidebar-items.js │ │ │ │ └── struct.MockConnection.html │ │ │ ├── sidebar-items.js │ │ │ ├── struct.Conn.html │ │ │ ├── struct.PoolConfig.html │ │ │ ├── trait.Client.html │ │ │ ├── trait.Configure.html │ │ │ ├── trait.ConnectClient.html │ │ │ └── trait.NewServiceLike.html │ │ ├── config │ │ │ ├── CargonautsConfig.t.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ └── struct.CargonautsConfig.html │ │ ├── fn.serve.html │ │ ├── formats │ │ │ ├── Debug.t.html │ │ │ ├── Handlebars.t.html │ │ │ ├── JsonApi.t.html │ │ │ ├── def │ │ │ │ ├── BuildFormat.t.html │ │ │ │ ├── Format.t.html │ │ │ │ ├── Template.t.html │ │ │ │ ├── TemplateKey.t.html │ │ │ │ ├── index.html │ │ │ │ ├── sidebar-items.js │ │ │ │ ├── struct.Template.html │ │ │ │ ├── struct.TemplateKey.html │ │ │ │ ├── trait.BuildFormat.html │ │ │ │ └── trait.Format.html │ │ │ ├── index.html │ │ │ ├── jsonapi │ │ │ │ ├── ApiDeserialize.t.html │ │ │ │ ├── ApiSerialize.t.html │ │ │ │ ├── ClientIdPolicy.t.html │ │ │ │ ├── Fields.t.html │ │ │ │ ├── enum.ClientIdPolicy.html │ │ │ │ ├── index.html │ │ │ │ ├── sidebar-items.js │ │ │ │ ├── struct.Fields.html │ │ │ │ ├── trait.ApiDeserialize.html │ │ │ │ └── trait.ApiSerialize.html │ │ │ ├── sidebar-items.js │ │ │ ├── struct.Debug.html │ │ │ ├── struct.Handlebars.html │ │ │ └── struct.JsonApi.html │ │ ├── index.html │ │ ├── macro.relation!.html │ │ ├── macro.relation.html │ │ ├── macro.routes!.html │ │ ├── macro.routes.html │ │ ├── methods │ │ │ ├── Delete.t.html │ │ │ ├── DeleteRelated.t.html │ │ │ ├── Get.t.html │ │ │ ├── GetMany.t.html │ │ │ ├── GetOne.t.html │ │ │ ├── Index.t.html │ │ │ ├── Patch.t.html │ │ │ ├── Post.t.html │ │ │ ├── PostRelated.t.html │ │ │ ├── UpdateRelated.t.html │ │ │ ├── def │ │ │ │ ├── CollectionMethod.t.html │ │ │ │ ├── HttpMethod.t.html │ │ │ │ ├── Kind.t.html │ │ │ │ ├── Method.t.html │ │ │ │ ├── ResourceMethod.t.html │ │ │ │ ├── Route.t.html │ │ │ │ ├── enum.HttpMethod.html │ │ │ │ ├── enum.Kind.html │ │ │ │ ├── index.html │ │ │ │ ├── sidebar-items.js │ │ │ │ ├── struct.Route.html │ │ │ │ ├── trait.CollectionMethod.html │ │ │ │ ├── trait.Method.html │ │ │ │ └── trait.ResourceMethod.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ ├── trait.Delete.html │ │ │ ├── trait.DeleteRelated.html │ │ │ ├── trait.Get.html │ │ │ ├── trait.GetMany.html │ │ │ ├── trait.GetOne.html │ │ │ ├── trait.Index.html │ │ │ ├── trait.Patch.html │ │ │ ├── trait.Post.html │ │ │ ├── trait.PostRelated.html │ │ │ └── trait.UpdateRelated.html │ │ ├── middleware │ │ │ ├── Middleware.t.html │ │ │ ├── Request.t.html │ │ │ ├── Service.t.html │ │ │ ├── http │ │ │ │ ├── BoxFuture.t.html │ │ │ │ ├── Error.t.html │ │ │ │ ├── Request.t.html │ │ │ │ ├── Response.t.html │ │ │ │ ├── enum.Error.html │ │ │ │ ├── index.html │ │ │ │ ├── sidebar-items.js │ │ │ │ ├── struct.Request.html │ │ │ │ ├── struct.Response.html │ │ │ │ └── type.BoxFuture.html │ │ │ ├── index.html │ │ │ ├── sidebar-items.js │ │ │ ├── struct.Request.html │ │ │ ├── trait.Middleware.html │ │ │ └── trait.Service.html │ │ ├── relation.m.html │ │ ├── routes.m.html │ │ ├── routing │ │ │ ├── HttpFuture.t.html │ │ │ └── type.HttpFuture.html │ │ ├── serve.v.html │ │ ├── server │ │ │ ├── Error.t.html │ │ │ ├── Handle.t.html │ │ │ ├── Method.t.html │ │ │ ├── NewService.t.html │ │ │ ├── Request.t.html │ │ │ ├── Response.t.html │ │ │ ├── Service.t.html │ │ │ ├── StatusCode.t.html │ │ │ ├── enum.Error.html │ │ │ ├── enum.Method.html │ │ │ ├── enum.StatusCode.html │ │ │ ├── fn.serve.html │ │ │ ├── index.html │ │ │ ├── pool │ │ │ │ ├── Config.t.html │ │ │ │ ├── Configure.t.html │ │ │ │ ├── Pool.t.html │ │ │ │ ├── index.html │ │ │ │ ├── sidebar-items.js │ │ │ │ ├── struct.Config.html │ │ │ │ ├── struct.Pool.html │ │ │ │ └── trait.Configure.html │ │ │ ├── serve.v.html │ │ │ ├── sidebar-items.js │ │ │ ├── struct.Handle.html │ │ │ ├── struct.Request.html │ │ │ ├── struct.Response.html │ │ │ ├── trait.NewService.html │ │ │ └── trait.Service.html │ │ ├── sidebar-items.js │ │ ├── struct.Environment.html │ │ ├── struct.Error.html │ │ ├── trait.Relationship.html │ │ └── trait.Resource.html │ ├── implementors │ │ ├── aho_corasick │ │ │ ├── autiter │ │ │ │ └── trait.Automaton.js │ │ │ └── trait.Transitions.js │ │ ├── alloc │ │ │ └── boxed │ │ │ │ └── trait.FnBox.js │ │ ├── anymap │ │ │ └── any │ │ │ │ ├── trait.Any.js │ │ │ │ ├── trait.CloneAny.js │ │ │ │ └── trait.UncheckedAnyExt.js │ │ ├── byteorder │ │ │ ├── new │ │ │ │ ├── trait.ReadBytesExt.js │ │ │ │ └── trait.WriteBytesExt.js │ │ │ └── trait.ByteOrder.js │ │ ├── bytes │ │ │ └── buf │ │ │ │ ├── buf │ │ │ │ └── trait.Buf.js │ │ │ │ ├── buf_mut │ │ │ │ └── trait.BufMut.js │ │ │ │ ├── from_buf │ │ │ │ └── trait.FromBuf.js │ │ │ │ └── into_buf │ │ │ │ └── trait.IntoBuf.js │ │ ├── cargonauts │ │ │ ├── clients │ │ │ │ ├── trait.Configure.js │ │ │ │ └── trait.NewServiceLike.js │ │ │ ├── formats │ │ │ │ └── def │ │ │ │ │ ├── trait.BuildFormat.js │ │ │ │ │ └── trait.Format.js │ │ │ ├── methods │ │ │ │ └── def │ │ │ │ │ ├── trait.CollectionMethod.js │ │ │ │ │ ├── trait.Method.js │ │ │ │ │ └── trait.ResourceMethod.js │ │ │ ├── middleware │ │ │ │ └── trait.Service.js │ │ │ ├── server │ │ │ │ └── trait.NewService.js │ │ │ └── trait.Relationship.js │ │ ├── collections │ │ │ ├── borrow │ │ │ │ └── trait.ToOwned.js │ │ │ ├── range │ │ │ │ └── trait.RangeArgument.js │ │ │ ├── slice │ │ │ │ └── trait.SliceConcatExt.js │ │ │ └── string │ │ │ │ └── trait.ToString.js │ │ ├── core │ │ │ ├── any │ │ │ │ └── trait.Any.js │ │ │ ├── array │ │ │ │ └── trait.FixedSizeArray.js │ │ │ ├── borrow │ │ │ │ ├── trait.Borrow.js │ │ │ │ └── trait.BorrowMut.js │ │ │ ├── clone │ │ │ │ └── trait.Clone.js │ │ │ ├── cmp │ │ │ │ ├── trait.Eq.js │ │ │ │ ├── trait.Ord.js │ │ │ │ ├── trait.PartialEq.js │ │ │ │ └── trait.PartialOrd.js │ │ │ ├── convert │ │ │ │ ├── trait.AsMut.js │ │ │ │ ├── trait.AsRef.js │ │ │ │ ├── trait.From.js │ │ │ │ ├── trait.Into.js │ │ │ │ ├── trait.TryFrom.js │ │ │ │ └── trait.TryInto.js │ │ │ ├── default │ │ │ │ └── trait.Default.js │ │ │ ├── fmt │ │ │ │ ├── trait.Binary.js │ │ │ │ ├── trait.Debug.js │ │ │ │ ├── trait.Display.js │ │ │ │ ├── trait.LowerExp.js │ │ │ │ ├── trait.LowerHex.js │ │ │ │ ├── trait.Octal.js │ │ │ │ ├── trait.Pointer.js │ │ │ │ ├── trait.UpperExp.js │ │ │ │ ├── trait.UpperHex.js │ │ │ │ └── trait.Write.js │ │ │ ├── hash │ │ │ │ ├── trait.BuildHasher.js │ │ │ │ ├── trait.Hash.js │ │ │ │ └── trait.Hasher.js │ │ │ ├── iter │ │ │ │ ├── iterator │ │ │ │ │ └── trait.Iterator.js │ │ │ │ ├── range │ │ │ │ │ └── trait.Step.js │ │ │ │ └── traits │ │ │ │ │ ├── trait.DoubleEndedIterator.js │ │ │ │ │ ├── trait.ExactSizeIterator.js │ │ │ │ │ ├── trait.Extend.js │ │ │ │ │ ├── trait.FromIterator.js │ │ │ │ │ ├── trait.FusedIterator.js │ │ │ │ │ ├── trait.IntoIterator.js │ │ │ │ │ ├── trait.Product.js │ │ │ │ │ ├── trait.Sum.js │ │ │ │ │ └── trait.TrustedLen.js │ │ │ ├── marker │ │ │ │ ├── trait.Copy.js │ │ │ │ ├── trait.Send.js │ │ │ │ └── trait.Sync.js │ │ │ ├── nonzero │ │ │ │ └── trait.Zeroable.js │ │ │ ├── ops │ │ │ │ ├── trait.Add.js │ │ │ │ ├── trait.AddAssign.js │ │ │ │ ├── trait.BitAnd.js │ │ │ │ ├── trait.BitAndAssign.js │ │ │ │ ├── trait.BitOr.js │ │ │ │ ├── trait.BitOrAssign.js │ │ │ │ ├── trait.BitXor.js │ │ │ │ ├── trait.BitXorAssign.js │ │ │ │ ├── trait.BoxPlace.js │ │ │ │ ├── trait.Boxed.js │ │ │ │ ├── trait.Carrier.js │ │ │ │ ├── trait.CoerceUnsized.js │ │ │ │ ├── trait.Deref.js │ │ │ │ ├── trait.DerefMut.js │ │ │ │ ├── trait.Div.js │ │ │ │ ├── trait.DivAssign.js │ │ │ │ ├── trait.Drop.js │ │ │ │ ├── trait.Fn.js │ │ │ │ ├── trait.FnMut.js │ │ │ │ ├── trait.FnOnce.js │ │ │ │ ├── trait.InPlace.js │ │ │ │ ├── trait.Index.js │ │ │ │ ├── trait.IndexMut.js │ │ │ │ ├── trait.Mul.js │ │ │ │ ├── trait.MulAssign.js │ │ │ │ ├── trait.Neg.js │ │ │ │ ├── trait.Not.js │ │ │ │ ├── trait.Place.js │ │ │ │ ├── trait.Placer.js │ │ │ │ ├── trait.Rem.js │ │ │ │ ├── trait.RemAssign.js │ │ │ │ ├── trait.Shl.js │ │ │ │ ├── trait.ShlAssign.js │ │ │ │ ├── trait.Shr.js │ │ │ │ ├── trait.ShrAssign.js │ │ │ │ ├── trait.Sub.js │ │ │ │ └── trait.SubAssign.js │ │ │ ├── slice │ │ │ │ ├── trait.SliceExt.js │ │ │ │ └── trait.SliceIndex.js │ │ │ └── str │ │ │ │ ├── pattern │ │ │ │ ├── trait.DoubleEndedSearcher.js │ │ │ │ ├── trait.Pattern.js │ │ │ │ ├── trait.ReverseSearcher.js │ │ │ │ └── trait.Searcher.js │ │ │ │ └── trait.FromStr.js │ │ ├── dtoa │ │ │ └── trait.Floating.js │ │ ├── futures │ │ │ ├── future │ │ │ │ ├── trait.Future.js │ │ │ │ └── trait.IntoFuture.js │ │ │ ├── sink │ │ │ │ └── trait.Sink.js │ │ │ └── stream │ │ │ │ └── trait.Stream.js │ │ ├── handlebars │ │ │ ├── context │ │ │ │ └── trait.JsonRender.js │ │ │ ├── directives │ │ │ │ └── trait.DirectiveDef.js │ │ │ ├── helpers │ │ │ │ └── trait.HelperDef.js │ │ │ └── render │ │ │ │ ├── trait.Evaluable.js │ │ │ │ └── trait.Renderable.js │ │ ├── hyper │ │ │ ├── client │ │ │ │ └── connect │ │ │ │ │ └── trait.Connect.js │ │ │ └── header │ │ │ │ ├── common │ │ │ │ └── authorization │ │ │ │ │ └── trait.Scheme.js │ │ │ │ └── trait.Header.js │ │ ├── itoa │ │ │ └── trait.Integer.js │ │ ├── mio │ │ │ └── event_imp │ │ │ │ └── trait.Evented.js │ │ ├── net2 │ │ │ ├── ext │ │ │ │ ├── trait.TcpListenerExt.js │ │ │ │ ├── trait.TcpStreamExt.js │ │ │ │ └── trait.UdpSocketExt.js │ │ │ └── unix │ │ │ │ ├── trait.UnixTcpBuilderExt.js │ │ │ │ └── trait.UnixUdpBuilderExt.js │ │ ├── num_traits │ │ │ ├── bounds │ │ │ │ └── trait.Bounded.js │ │ │ ├── cast │ │ │ │ ├── trait.FromPrimitive.js │ │ │ │ ├── trait.NumCast.js │ │ │ │ └── trait.ToPrimitive.js │ │ │ ├── float │ │ │ │ ├── trait.Float.js │ │ │ │ └── trait.FloatConst.js │ │ │ ├── identities │ │ │ │ ├── trait.One.js │ │ │ │ └── trait.Zero.js │ │ │ ├── int │ │ │ │ └── trait.PrimInt.js │ │ │ ├── ops │ │ │ │ ├── checked │ │ │ │ │ ├── trait.CheckedAdd.js │ │ │ │ │ ├── trait.CheckedDiv.js │ │ │ │ │ ├── trait.CheckedMul.js │ │ │ │ │ └── trait.CheckedSub.js │ │ │ │ ├── saturating │ │ │ │ │ └── trait.Saturating.js │ │ │ │ └── wrapping │ │ │ │ │ ├── trait.WrappingAdd.js │ │ │ │ │ ├── trait.WrappingMul.js │ │ │ │ │ └── trait.WrappingSub.js │ │ │ ├── sign │ │ │ │ ├── trait.Signed.js │ │ │ │ └── trait.Unsigned.js │ │ │ └── trait.Num.js │ │ ├── pest │ │ │ └── input │ │ │ │ └── trait.Input.js │ │ ├── quick_error │ │ │ └── trait.ResultExt.js │ │ ├── rand │ │ │ ├── distributions │ │ │ │ ├── range │ │ │ │ │ └── trait.SampleRange.js │ │ │ │ ├── trait.IndependentSample.js │ │ │ │ └── trait.Sample.js │ │ │ ├── reseeding │ │ │ │ └── trait.Reseeder.js │ │ │ ├── trait.Rand.js │ │ │ ├── trait.Rng.js │ │ │ └── trait.SeedableRng.js │ │ ├── regex │ │ │ ├── re_bytes │ │ │ │ └── trait.Replacer.js │ │ │ └── re_unicode │ │ │ │ └── trait.Replacer.js │ │ ├── rigging │ │ │ └── endpoint │ │ │ │ └── trait.Endpoint.js │ │ ├── rustc_data_structures │ │ │ ├── array_vec │ │ │ │ └── trait.Array.js │ │ │ ├── bitslice │ │ │ │ ├── trait.BitSlice.js │ │ │ │ └── trait.BitwiseOperator.js │ │ │ ├── control_flow_graph │ │ │ │ ├── trait.ControlFlowGraph.js │ │ │ │ ├── trait.GraphPredecessors.js │ │ │ │ └── trait.GraphSuccessors.js │ │ │ ├── indexed_vec │ │ │ │ └── trait.Idx.js │ │ │ ├── snapshot_vec │ │ │ │ └── trait.SnapshotVecDelegate.js │ │ │ ├── stable_hasher │ │ │ │ ├── trait.HashStable.js │ │ │ │ └── trait.StableHasherResult.js │ │ │ ├── tuple_slice │ │ │ │ └── trait.TupleSlice.js │ │ │ └── unify │ │ │ │ └── trait.Combine.js │ │ ├── rustc_errors │ │ │ ├── emitter │ │ │ │ └── trait.Emitter.js │ │ │ └── trait.CodeMapper.js │ │ ├── serde │ │ │ ├── de │ │ │ │ ├── trait.Deserialize.js │ │ │ │ ├── trait.DeserializeOwned.js │ │ │ │ ├── trait.DeserializeSeed.js │ │ │ │ ├── trait.Deserializer.js │ │ │ │ ├── trait.EnumAccess.js │ │ │ │ ├── trait.Error.js │ │ │ │ ├── trait.Expected.js │ │ │ │ ├── trait.IntoDeserializer.js │ │ │ │ ├── trait.MapAccess.js │ │ │ │ ├── trait.SeqAccess.js │ │ │ │ └── trait.Visitor.js │ │ │ └── ser │ │ │ │ ├── trait.Error.js │ │ │ │ ├── trait.Serialize.js │ │ │ │ ├── trait.SerializeMap.js │ │ │ │ ├── trait.SerializeSeq.js │ │ │ │ ├── trait.SerializeStruct.js │ │ │ │ ├── trait.SerializeStructVariant.js │ │ │ │ ├── trait.SerializeTuple.js │ │ │ │ ├── trait.SerializeTupleStruct.js │ │ │ │ ├── trait.SerializeTupleVariant.js │ │ │ │ └── trait.Serializer.js │ │ ├── serde_json │ │ │ ├── read │ │ │ │ └── trait.Read.js │ │ │ ├── ser │ │ │ │ └── trait.Formatter.js │ │ │ └── value │ │ │ │ └── index │ │ │ │ └── trait.Index.js │ │ ├── serialize │ │ │ ├── hex │ │ │ │ ├── trait.FromHex.js │ │ │ │ └── trait.ToHex.js │ │ │ ├── json │ │ │ │ └── trait.ToJson.js │ │ │ └── serialize │ │ │ │ ├── trait.Decodable.js │ │ │ │ ├── trait.Decoder.js │ │ │ │ ├── trait.Encodable.js │ │ │ │ ├── trait.Encoder.js │ │ │ │ ├── trait.SpecializationError.js │ │ │ │ ├── trait.SpecializedDecoder.js │ │ │ │ ├── trait.SpecializedEncoder.js │ │ │ │ ├── trait.UseSpecializedDecodable.js │ │ │ │ └── trait.UseSpecializedEncodable.js │ │ ├── smallvec │ │ │ ├── trait.Array.js │ │ │ └── trait.VecLike.js │ │ ├── std │ │ │ ├── ascii │ │ │ │ └── trait.AsciiExt.js │ │ │ ├── error │ │ │ │ └── trait.Error.js │ │ │ ├── io │ │ │ │ ├── trait.BufRead.js │ │ │ │ ├── trait.Read.js │ │ │ │ ├── trait.Seek.js │ │ │ │ └── trait.Write.js │ │ │ ├── net │ │ │ │ └── addr │ │ │ │ │ └── trait.ToSocketAddrs.js │ │ │ ├── os │ │ │ │ └── linux │ │ │ │ │ └── fs │ │ │ │ │ └── trait.MetadataExt.js │ │ │ ├── panic │ │ │ │ ├── trait.RefUnwindSafe.js │ │ │ │ └── trait.UnwindSafe.js │ │ │ └── sys │ │ │ │ └── imp │ │ │ │ └── ext │ │ │ │ ├── ffi │ │ │ │ ├── trait.OsStrExt.js │ │ │ │ └── trait.OsStringExt.js │ │ │ │ ├── fs │ │ │ │ ├── trait.DirBuilderExt.js │ │ │ │ ├── trait.DirEntryExt.js │ │ │ │ ├── trait.FileExt.js │ │ │ │ ├── trait.FileTypeExt.js │ │ │ │ ├── trait.MetadataExt.js │ │ │ │ ├── trait.OpenOptionsExt.js │ │ │ │ └── trait.PermissionsExt.js │ │ │ │ ├── io │ │ │ │ ├── trait.AsRawFd.js │ │ │ │ ├── trait.FromRawFd.js │ │ │ │ └── trait.IntoRawFd.js │ │ │ │ ├── process │ │ │ │ ├── trait.CommandExt.js │ │ │ │ └── trait.ExitStatusExt.js │ │ │ │ └── thread │ │ │ │ └── trait.JoinHandleExt.js │ │ ├── std_unicode │ │ │ └── u_str │ │ │ │ └── trait.UnicodeStr.js │ │ ├── syntax │ │ │ ├── attr │ │ │ │ └── trait.HasAttrs.js │ │ │ ├── codemap │ │ │ │ └── trait.FileLoader.js │ │ │ ├── ext │ │ │ │ ├── base │ │ │ │ │ ├── trait.AttrProcMacro.js │ │ │ │ │ ├── trait.IdentMacroExpander.js │ │ │ │ │ ├── trait.MacResult.js │ │ │ │ │ ├── trait.MultiItemDecorator.js │ │ │ │ │ ├── trait.MultiItemModifier.js │ │ │ │ │ ├── trait.ProcMacro.js │ │ │ │ │ ├── trait.Resolver.js │ │ │ │ │ └── trait.TTMacroExpander.js │ │ │ │ ├── build │ │ │ │ │ └── trait.AstBuilder.js │ │ │ │ └── quote │ │ │ │ │ └── rt │ │ │ │ │ ├── trait.ExtParseUtils.js │ │ │ │ │ └── trait.ToTokens.js │ │ │ ├── fold │ │ │ │ └── trait.Folder.js │ │ │ ├── parse │ │ │ │ └── obsolete │ │ │ │ │ └── trait.ParserObsoleteMethods.js │ │ │ ├── print │ │ │ │ └── pprust │ │ │ │ │ ├── trait.PpAnn.js │ │ │ │ │ └── trait.PrintState.js │ │ │ ├── util │ │ │ │ └── move_map │ │ │ │ │ └── trait.MoveMap.js │ │ │ └── visit │ │ │ │ └── trait.Visitor.js │ │ ├── syntax_pos │ │ │ └── trait.Pos.js │ │ ├── term │ │ │ └── trait.Terminal.js │ │ ├── tokio_core │ │ │ └── io │ │ │ │ └── trait.Io.js │ │ ├── tokio_io │ │ │ ├── trait.AsyncRead.js │ │ │ └── trait.AsyncWrite.js │ │ ├── tokio_proto │ │ │ ├── streaming │ │ │ │ ├── multiplex │ │ │ │ │ └── trait.Transport.js │ │ │ │ └── pipeline │ │ │ │ │ ├── server │ │ │ │ │ └── trait.ServerProto.js │ │ │ │ │ └── trait.Transport.js │ │ │ ├── trait.BindClient.js │ │ │ └── trait.BindServer.js │ │ ├── tokio_redis │ │ │ └── types │ │ │ │ ├── trait.FromRedisValue.js │ │ │ │ └── trait.ToRedisArgs.js │ │ ├── toml │ │ │ └── value │ │ │ │ └── trait.Index.js │ │ ├── unicode_normalization │ │ │ └── trait.UnicodeNormalization.js │ │ ├── unreachable │ │ │ ├── trait.UncheckedOptionExt.js │ │ │ └── trait.UncheckedResultExt.js │ │ ├── url │ │ │ ├── form_urlencoded │ │ │ │ └── trait.Target.js │ │ │ └── percent_encoding │ │ │ │ └── trait.EncodeSet.js │ │ └── void │ │ │ ├── trait.ResultVoidErrExt.js │ │ │ └── trait.ResultVoidExt.js │ ├── main.css │ ├── main.js │ ├── normalize.css │ ├── rustdoc.css │ ├── search-index.js │ └── src │ │ └── cargonauts │ │ └── lib.rs.html ├── book.css ├── book.js ├── echo.html ├── favicon.png ├── highlight.css ├── highlight.js ├── index.html ├── intro.html ├── jquery.js ├── mvc.html ├── ping.html ├── print.html ├── routes.html ├── setup.html ├── structure.html └── tomorrow-night.css ├── examples ├── echo.rs └── setup.rs ├── src ├── asset-pipeline │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── cargonauts-config │ ├── Cargo.toml │ └── src │ │ ├── lib.rs │ │ └── tests.rs ├── cargonauts │ └── lib.rs ├── compass-rose │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ ├── ast.rs │ │ ├── gen │ │ ├── assets.rs │ │ ├── formats.rs │ │ ├── mod.rs │ │ ├── resource.rs │ │ ├── routes.rs │ │ └── setup.rs │ │ ├── lib.rs │ │ ├── parser.lalrpop │ │ └── parser.rs ├── jsonapi-derive │ ├── Cargo.toml │ └── src │ │ ├── de.rs │ │ ├── lib.rs │ │ └── ser.rs ├── mainsail │ ├── Cargo.toml │ └── src │ │ ├── formats │ │ ├── debug.rs │ │ ├── handlebars.rs │ │ ├── jsonapi │ │ │ ├── fieldset.rs │ │ │ ├── mod.rs │ │ │ ├── present │ │ │ │ ├── attributes.rs │ │ │ │ ├── document.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── rels.rs │ │ │ │ └── traits.rs │ │ │ └── receive │ │ │ │ ├── document.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── object.rs │ │ │ │ ├── rels.rs │ │ │ │ └── traits.rs │ │ └── mod.rs │ │ ├── lib.rs │ │ └── methods │ │ ├── delete.rs │ │ ├── delete_related.rs │ │ ├── get.rs │ │ ├── get_many.rs │ │ ├── get_one.rs │ │ ├── index.rs │ │ ├── mod.rs │ │ ├── patch.rs │ │ ├── post.rs │ │ ├── post_related.rs │ │ └── update_related.rs └── rigging │ ├── Cargo.toml │ └── src │ ├── connections │ ├── mock.rs │ ├── mod.rs │ └── redis.rs │ ├── endpoint.rs │ ├── environment.rs │ ├── error.rs │ ├── format.rs │ ├── http.rs │ ├── lib.rs │ ├── method.rs │ ├── resource.rs │ └── routes.rs └── tests └── server.rs /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | Cargo.lock 3 | demo/todomvc/target 4 | demo/todomvc/Cargo.lock 5 | demo/todomvc/frontend/dist 6 | demo/todomvc/frontend/node_modules 7 | demo/todomvc/frontend/tmp 8 | demo/todomvc/frontend/yarn.lock 9 | demo/colors/target 10 | demo/colors/Cargo.lock 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: rust 2 | rust: 3 | - nightly 4 | -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 The Rust Project Developers 2 | 3 | Permission is hereby granted, free of charge, to any 4 | person obtaining a copy of this software and associated 5 | documentation files (the "Software"), to deal in the 6 | Software without restriction, including without 7 | limitation the rights to use, copy, modify, merge, 8 | publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software 10 | is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice 14 | shall be included in all copies or substantial portions 15 | of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 18 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 19 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 20 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 24 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 | DEALINGS IN THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /book/src/SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | - [Welcome to cargonauts](./intro.md) 4 | - [Resources, methods and formats.](./mvc.md) 5 | - [A little cargonauts app](./echo.md) 6 | - [Setting up a new cargonauts project](./setup.md) 7 | - [The structure of our crate](./structure.md) 8 | - [Creating our first endpoint](./ping.md) 9 | - Using templates & static assets (TODO) 10 | - Adding a relationship endpoint (TODO) 11 | - [The routes! DSL Reference](./routes.md) 12 | -------------------------------------------------------------------------------- /book/src/echo.md: -------------------------------------------------------------------------------- 1 | # A little cargonauts app 2 | 3 | We're going to get to know cargonauts a bit better by creating a very small 4 | application. This will be a very small and stateless "echo" service: when 5 | you request a route like this: 6 | 7 | ``` 8 | GET /ping/$slug 9 | ``` 10 | 11 | It will return a response containing the slug you sent as well as a timestamp 12 | for the current time. 13 | -------------------------------------------------------------------------------- /book/src/intro.md: -------------------------------------------------------------------------------- 1 | # Welcome to cargonauts 2 | 3 | These docs are incomplete, but hopefully they will help you a little bit. 4 | 5 | In addition to the book, here are other resources: 6 | 7 | * [API documentation][apidocs] 8 | * [GitHub repository][github] 9 | * [Gitter room][gitter] 10 | 11 | 12 | [apidocs]: https://cargonauts-rs.github.io/cargonauts/api/cargonauts 13 | [github]: https://github.com/cargonauts-rs/cargonauts 14 | [gitter]: https://gitter.im/cargonauts-rs/cargonauts 15 | -------------------------------------------------------------------------------- /demo/colors/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Without Boats "] 3 | name = "colors" 4 | version = "0.1.0" 5 | 6 | [dependencies] 7 | rand = "0.3.15" 8 | serde = "1.0.7" 9 | serde_derive = "1.0.7" 10 | 11 | [dependencies.cargonauts] 12 | path = "../../" 13 | -------------------------------------------------------------------------------- /demo/colors/src/assets/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | See a random square. 4 | 5 | 6 | -------------------------------------------------------------------------------- /demo/colors/src/assets/style.css: -------------------------------------------------------------------------------- 1 | .square { 2 | width: 60vmin; 3 | height: 60vmin; 4 | } 5 | -------------------------------------------------------------------------------- /demo/colors/src/bin/server.rs: -------------------------------------------------------------------------------- 1 | // This is your actual server application. By default it just runs the app you 2 | // created with the `routes!` macro. You can edit it to have it do additional 3 | // set-up or tear-down as necesary. 4 | 5 | extern crate cargonauts; 6 | extern crate colors; 7 | 8 | fn main() { 9 | cargonauts::serve(colors::routes).unwrap(); 10 | } -------------------------------------------------------------------------------- /demo/colors/src/clients/mod.rs: -------------------------------------------------------------------------------- 1 | // The clients module is for defining your server's API clients. 2 | // 3 | // When your server establishes a connection to another service, it is good 4 | // practice to wrap that connection in a higher-level API. cargonauts provides 5 | // a pair of trait - `Client` and `ConnectClient` which you can use to write 6 | // these wrappers. 7 | // 8 | // These traits are also designed to support easily mocking the other service 9 | // when testing your client, which you can do with the MockConnection type. -------------------------------------------------------------------------------- /demo/colors/src/formats/mod.rs: -------------------------------------------------------------------------------- 1 | // The formats module is for defining custom formats for displaying your 2 | // resources. 3 | // 4 | // A Format, which implements the `Format` trait, encapsulates the logic for 5 | // displaying responses from that resource's methods as HTTP responses, and of 6 | // translating the body of an HTTP request into the semantic type supported 7 | // by a particular method. 8 | // 9 | // Usually, you will not need to define your own formats; cargonauts comes with 10 | // several formats built-in that should be satisfactory for most use cases. -------------------------------------------------------------------------------- /demo/colors/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![feature(associated_consts)] 2 | 3 | #[macro_use] extern crate cargonauts; 4 | #[macro_use] extern crate serde_derive; 5 | 6 | extern crate rand; 7 | extern crate serde; 8 | 9 | mod clients; 10 | mod formats; 11 | mod methods; 12 | mod middleware; 13 | mod resources; 14 | mod routing; 15 | 16 | pub use routing::routes; 17 | -------------------------------------------------------------------------------- /demo/colors/src/methods/mod.rs: -------------------------------------------------------------------------------- 1 | // The methods module is for defining custom methods you want your resources to 2 | // support. 3 | // 4 | // A method must implement the `Method` trait and either `ResourceMethod` or 5 | // `CollectionMethod` (but not both!). Methods are themselves traits, and can 6 | // be a bit tricky to implement correctly. Read the docs for more info. 7 | // 8 | // Usually, you will not need to define your own methods; cargonauts comes with 9 | // several methods built-in that should be satisfactory for most use cases. 10 | mod random; 11 | 12 | pub use self::random::Random; 13 | -------------------------------------------------------------------------------- /demo/colors/src/methods/random.rs: -------------------------------------------------------------------------------- 1 | use cargonauts::futures::Future; 2 | use cargonauts::methods::def::*; 3 | use cargonauts::resources::*; 4 | 5 | pub trait Random: Resource { 6 | fn random(env: Environment) -> Box> where Self: Sized; 7 | } 8 | 9 | impl Method for Random { 10 | const ROUTE: Route = Route { 11 | method: HttpMethod::Get, 12 | kind: Kind::Collection, 13 | }; 14 | 15 | type Request = (); 16 | type Response = T; 17 | type Future = Box>; 18 | } 19 | 20 | impl CollectionMethod for Random { 21 | fn call(_: Self::Request, env: Environment) -> Self::Future { 22 | T::random(env) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /demo/colors/src/middleware/mod.rs: -------------------------------------------------------------------------------- 1 | // The middleware module is for defining middleware you need in your server. 2 | // 3 | // Middleware let you wrap your endpoint in arbitrary code that can manipulate 4 | // an HTTP service. A middleware must implement the `Middleware` trait. 5 | -------------------------------------------------------------------------------- /demo/colors/src/resources/mod.rs: -------------------------------------------------------------------------------- 1 | // The resources module is for defining your application's resources. Every 2 | // app will have many resources. 3 | // 4 | // Each resource must implement the `Resource` trait. For every method you've 5 | // associated with the resource in your routing file, you must also implement 6 | // that method for your resource. 7 | mod square; 8 | 9 | pub use self::square::Square; 10 | -------------------------------------------------------------------------------- /demo/colors/src/routing.rs: -------------------------------------------------------------------------------- 1 | // This is your routing file, which contains the `routes!` macro that defines 2 | // the surface API for your application. 3 | // 4 | // Every time you add a new endpoint, you will need to modify this file to 5 | // declare how it will be used. 6 | use cargonauts::methods::*; 7 | use cargonauts::formats::*; 8 | 9 | use methods::*; 10 | use resources::*; 11 | 12 | routes! { 13 | resource Square { 14 | method Get in Handlebars; 15 | method Random in Handlebars; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /demo/colors/src/templates/square/get.html.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 |

{{resource.color}}

8 |
9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /demo/colors/src/templates/square/random.html.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 |

{{resource.color}}

8 |
9 |

permalink

10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /demo/todomvc/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Without Boats "] 3 | name = "todo" 4 | version = "0.1.0" 5 | 6 | [dependencies] 7 | serde = "1.0.0" 8 | serde_derive = "1.0.0" 9 | serde_json = "1.0.0" 10 | 11 | [dependencies.chrono] 12 | version = "0.3.1" 13 | features = ["serde"] 14 | 15 | [dependencies.uuid] 16 | version = "0.5.0" 17 | features = ["v4", "serde"] 18 | 19 | [dependencies.cargonauts] 20 | path = "../../" 21 | 22 | [dependencies.jsonapi-derive] 23 | path = "../../src/jsonapi-derive" 24 | 25 | [build-dependencies.asset-pipeline] 26 | path = "../../src/asset-pipeline" 27 | 28 | [features] 29 | proxy = [] 30 | 31 | [package.metadata.cargonauts] 32 | assets = "frontend" 33 | 34 | [package.metadata.cargonauts.env.dev] 35 | REDIS_HOST = "tcp://127.0.0.1:6379" 36 | -------------------------------------------------------------------------------- /demo/todomvc/README.md: -------------------------------------------------------------------------------- 1 | This is a todomvc demo. 2 | 3 | The frontend is implemented with ember and stored in the `frontend` directory. 4 | 5 | There are two recommended ways to run the app: 6 | 7 | * Using the ember hot reloading proxy: `cargo run server --features proxy` 8 | - The server will be available at `localhost:4200` 9 | * Building into a single binary (with optimizations): `cargo run server --release` 10 | - The server will be available at `localhost:7878` 11 | 12 | ## Dependencies 13 | 14 | You must have ember-cli installed to build cargonauts in either proxy or release 15 | mode. 16 | 17 | You also must have a redis instance running on your machine (this app persists 18 | to redis, a sort of bad idea but w/e, its a demo). The app is configured to 19 | assume the redis instance is running on port `6379`, if this is not the case 20 | you need to change the `REDIS_HOST` key in the Cargo.toml for this app. 21 | -------------------------------------------------------------------------------- /demo/todomvc/build.rs: -------------------------------------------------------------------------------- 1 | extern crate asset_pipeline; 2 | 3 | use std::process::Command; 4 | 5 | fn main() { 6 | asset_pipeline::build_assets(|src, dst| { 7 | // Only build ember if not in a 'proxy' build 8 | if !cfg!(feature = "proxy") { 9 | Command::new("ember").arg("build").arg("--prod") 10 | .current_dir(src) 11 | .arg("-o").arg(dst) 12 | .output()?; 13 | } 14 | 15 | Ok(()) 16 | }).unwrap(); 17 | } 18 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | indent_style = space 14 | indent_size = 2 15 | 16 | [*.hbs] 17 | insert_final_newline = false 18 | 19 | [*.{diff,md}] 20 | trim_trailing_whitespace = false 21 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false 9 | } 10 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parserOptions: { 4 | ecmaVersion: 2017, 5 | sourceType: 'module' 6 | }, 7 | extends: 'eslint:recommended', 8 | env: { 9 | browser: true 10 | }, 11 | rules: { 12 | } 13 | }; 14 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | 7 | # dependencies 8 | /node_modules 9 | /bower_components 10 | 11 | # misc 12 | /.sass-cache 13 | /connect.lock 14 | /coverage/* 15 | /libpeerconnection.log 16 | npm-debug.log* 17 | testem.log 18 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: node_js 3 | node_js: 4 | - "6" 5 | 6 | sudo: false 7 | 8 | cache: 9 | yarn: true 10 | 11 | before_install: 12 | - curl -o- -L https://yarnpkg.com/install.sh | bash 13 | - export PATH=$HOME/.yarn/bin:$PATH 14 | - yarn global add phantomjs-prebuilt 15 | - phantomjs --version 16 | 17 | install: 18 | - yarn install 19 | 20 | script: 21 | - yarn test 22 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/adapters/application.js: -------------------------------------------------------------------------------- 1 | import JSONAPIAdapter from 'ember-data/adapters/json-api'; 2 | 3 | export default JSONAPIAdapter.extend({ 4 | namespace: 'api', 5 | }); 6 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/app.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import Resolver from './resolver'; 3 | import loadInitializers from 'ember-load-initializers'; 4 | import config from './config/environment'; 5 | 6 | let App; 7 | 8 | Ember.MODEL_FACTORY_INJECTIONS = true; 9 | 10 | App = Ember.Application.extend({ 11 | modulePrefix: config.modulePrefix, 12 | podModulePrefix: config.podModulePrefix, 13 | Resolver 14 | }); 15 | 16 | loadInitializers(App, config.modulePrefix); 17 | 18 | export default App; 19 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/demo/todomvc/frontend/app/components/.gitkeep -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/controllers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/demo/todomvc/frontend/app/controllers/.gitkeep -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/helpers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/demo/todomvc/frontend/app/helpers/.gitkeep -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Todo 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | 12 | 13 | 14 | 15 | {{content-for "head-footer"}} 16 | 17 | 18 | {{content-for "body"}} 19 | 20 | 21 | 22 | 23 | {{content-for "body-footer"}} 24 | 25 | 26 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/models/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/demo/todomvc/frontend/app/models/.gitkeep -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/models/note.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | export default DS.Model.extend({ 4 | text: DS.attr('string'), 5 | completed: DS.attr('boolean'), 6 | created_at: DS.attr('date'), 7 | }); 8 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/resolver.js: -------------------------------------------------------------------------------- 1 | import Resolver from 'ember-resolver'; 2 | 3 | export default Resolver; 4 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/router.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import config from './config/environment'; 3 | 4 | const Router = Ember.Router.extend({ 5 | location: config.locationType, 6 | rootURL: config.rootURL 7 | }); 8 | 9 | Router.map(function() { 10 | this.route('todo'); 11 | }); 12 | 13 | export default Router; 14 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/routes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/demo/todomvc/frontend/app/routes/.gitkeep -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/routes/index.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | beforeModel() { 5 | this.replaceWith('todo'); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/serializers/application.js: -------------------------------------------------------------------------------- 1 | import JSONAPISerializer from 'ember-data/serializers/json-api'; 2 | 3 | export default JSONAPISerializer.extend({ 4 | keyForAttribute(key) { return key; }, 5 | 6 | payloadKeyFromModelName: function(modelName) { 7 | return modelName; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/templates/application.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/templates/components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/demo/todomvc/frontend/app/templates/components/.gitkeep -------------------------------------------------------------------------------- /demo/todomvc/frontend/app/templates/todo.hbs: -------------------------------------------------------------------------------- 1 |
2 | 6 | 7 |
8 |
    9 | {{#each model as |note|}} 10 |
  • 11 | 12 | 13 |
  • 14 | {{/each}} 15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/config/targets.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 3 | module.exports = { 4 | browsers: [ 5 | 'ie 9', 6 | 'last 1 Chrome versions', 7 | 'last 1 Firefox versions', 8 | 'last 1 Safari versions' 9 | ] 10 | }; 11 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/ember-cli-build.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | const EmberApp = require('ember-cli/lib/broccoli/ember-app'); 3 | 4 | module.exports = function(defaults) { 5 | var app = new EmberApp(defaults, { 6 | // Add options here 7 | }); 8 | 9 | // Use `app.import` to add additional libraries to the generated 10 | // output files. 11 | // 12 | // If you need to use different assets in different 13 | // environments, specify an object as the first parameter. That 14 | // object's keys should be the environment name and the values 15 | // should be the asset to use in that environment. 16 | // 17 | // If the library that you are including contains AMD or ES6 18 | // modules that you would like to import into your application 19 | // please specify an object with the list of modules as keys 20 | // along with the exports of each module as its value. 21 | 22 | return app.toTree(); 23 | }; 24 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/public/crossdomain.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/server/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 3 | // To use it create some files under `mocks/` 4 | // e.g. `server/mocks/ember-hamsters.js` 5 | // 6 | // module.exports = function(app) { 7 | // app.get('/ember-hamsters', function(req, res) { 8 | // res.send('hello'); 9 | // }); 10 | // }; 11 | 12 | module.exports = function(app) { 13 | const globSync = require('glob').sync; 14 | var mocks = globSync('./mocks/**/*.js', { cwd: __dirname }).map(require); 15 | var proxies = globSync('./proxies/**/*.js', { cwd: __dirname }).map(require); 16 | 17 | // Log proxy requests 18 | const morgan = require('morgan'); 19 | app.use(morgan('dev')); 20 | 21 | mocks.forEach(function(route) { route(app); }); 22 | proxies.forEach(function(route) { route(app); }); 23 | 24 | }; 25 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/server/proxies/api.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | var proxyPath = '/api'; 3 | 4 | module.exports = function(app) { 5 | // For options, see: 6 | // https://github.com/nodejitsu/node-http-proxy 7 | var proxy = require('http-proxy').createProxyServer({}); 8 | 9 | proxy.on('error', function(err, req) { 10 | console.error(err, req.url); 11 | }); 12 | 13 | app.use(proxyPath, function(req, res, next){ 14 | // include root path in proxied request 15 | req.url = proxyPath + '/' + req.url; 16 | proxy.web(req, res, { target: 'http://127.0.0.1:7878' }); 17 | }); 18 | }; 19 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/testem.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | module.exports = { 3 | "test_page": "tests/index.html?hidepassed", 4 | "disable_watching": true, 5 | "launch_in_ci": [ 6 | "PhantomJS" 7 | ], 8 | "launch_in_dev": [ 9 | "PhantomJS", 10 | "Chrome" 11 | ] 12 | }; 13 | -------------------------------------------------------------------------------- /demo/todomvc/frontend/vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/demo/todomvc/frontend/vendor/.gitkeep -------------------------------------------------------------------------------- /demo/todomvc/src/bin/server.rs: -------------------------------------------------------------------------------- 1 | extern crate cargonauts; 2 | extern crate todo; 3 | 4 | use std::panic; 5 | use std::process::Command; 6 | 7 | use cargonauts::config::CargonautsConfig; 8 | 9 | fn main() { 10 | if cfg!(feature = "proxy") { 11 | let cfg = CargonautsConfig::find_and_parse().unwrap(); 12 | let host = format!("http://{}", cfg.host()); 13 | println!("{}", host); 14 | let mut child = Command::new("ember").arg("server") 15 | .current_dir(cfg.assets()) 16 | .spawn().unwrap(); 17 | 18 | let _ = panic::catch_unwind(|| { 19 | cargonauts::serve(todo::routes).unwrap(); 20 | }); 21 | 22 | child.kill().unwrap(); 23 | } else { 24 | cargonauts::serve(todo::routes).unwrap(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /demo/todomvc/src/clients/mod.rs: -------------------------------------------------------------------------------- 1 | mod store; 2 | 3 | pub use self::store::RedisStore; 4 | -------------------------------------------------------------------------------- /demo/todomvc/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![feature(associated_consts, conservative_impl_trait)] 2 | 3 | #[macro_use] extern crate cargonauts; 4 | #[macro_use] extern crate jsonapi_derive; 5 | #[macro_use] extern crate serde_derive; 6 | 7 | extern crate chrono; 8 | extern crate uuid; 9 | extern crate serde; 10 | extern crate serde_json as json; 11 | 12 | mod clients; 13 | mod middleware; 14 | mod resources; 15 | mod routing; 16 | 17 | pub use routing::routes; 18 | -------------------------------------------------------------------------------- /demo/todomvc/src/middleware/mod.rs: -------------------------------------------------------------------------------- 1 | mod logging; 2 | 3 | pub use self::logging::Logging; 4 | -------------------------------------------------------------------------------- /demo/todomvc/src/resources/mod.rs: -------------------------------------------------------------------------------- 1 | mod note; 2 | 3 | pub use self::note::Note; 4 | -------------------------------------------------------------------------------- /demo/todomvc/src/routing.rs: -------------------------------------------------------------------------------- 1 | use cargonauts::methods::{Index, Post, Patch, Delete}; 2 | use cargonauts::formats::JsonApi; 3 | use cargonauts::redis::Redis; 4 | 5 | use resources::Note; 6 | use middleware::Logging; 7 | 8 | routes! { 9 | setup { 10 | connection to Redis; 11 | } 12 | 13 | mod api { 14 | resource Note as "notes" { 15 | #[middleware(Logging)] 16 | method Index, Post, Patch, Delete in JsonApi; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /deploy_docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -o errexit -o nounset 3 | 4 | # Book 5 | mdbook build -d ../docs/ book 6 | 7 | # API docs 8 | cargo doc --no-deps 9 | mv -T target/doc docs/api 10 | -------------------------------------------------------------------------------- /docs/_FontAwesome/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/_FontAwesome/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /docs/_FontAwesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/_FontAwesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/_FontAwesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/_FontAwesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/_FontAwesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/_FontAwesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/_FontAwesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/_FontAwesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/api/.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/api/.lock -------------------------------------------------------------------------------- /docs/api/FiraSans-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/api/FiraSans-Medium.woff -------------------------------------------------------------------------------- /docs/api/FiraSans-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/api/FiraSans-Regular.woff -------------------------------------------------------------------------------- /docs/api/Heuristica-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/api/Heuristica-Italic.woff -------------------------------------------------------------------------------- /docs/api/LICENSE-MIT.txt: -------------------------------------------------------------------------------- 1 | Permission is hereby granted, free of charge, to any 2 | person obtaining a copy of this software and associated 3 | documentation files (the "Software"), to deal in the 4 | Software without restriction, including without 5 | limitation the rights to use, copy, modify, merge, 6 | publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software 8 | is furnished to do so, subject to the following 9 | conditions: 10 | 11 | The above copyright notice and this permission notice 12 | shall be included in all copies or substantial portions 13 | of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 16 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 17 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 18 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 19 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 22 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /docs/api/SourceCodePro-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/api/SourceCodePro-Regular.woff -------------------------------------------------------------------------------- /docs/api/SourceCodePro-Semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/api/SourceCodePro-Semibold.woff -------------------------------------------------------------------------------- /docs/api/SourceSerifPro-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/api/SourceSerifPro-Bold.woff -------------------------------------------------------------------------------- /docs/api/SourceSerifPro-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/api/SourceSerifPro-Regular.woff -------------------------------------------------------------------------------- /docs/api/cargonauts/Environment.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Environment.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/Error.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Error.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/Relationship.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Relationship.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/Resource.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Resource.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/clients/Client.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Client.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/clients/Configure.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Configure.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/clients/Conn.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Conn.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/clients/ConnectClient.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.ConnectClient.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/clients/NewServiceLike.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.NewServiceLike.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/clients/PoolConfig.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.PoolConfig.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/clients/mock/MockConnection.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.MockConnection.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/clients/mock/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["MockConnection",""]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/clients/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"mod":[["mock",""]],"struct":[["Conn","A smart wrapper around a connection which stores it back in the pool when it is dropped."],["PoolConfig","The configuration for a connection pool."]],"trait":[["Client",""],["Configure",""],["ConnectClient",""],["NewServiceLike",""]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/config/CargonautsConfig.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.CargonautsConfig.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/config/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["CargonautsConfig",""]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/Debug.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Debug.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/Handlebars.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Handlebars.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/JsonApi.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.JsonApi.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/def/BuildFormat.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.BuildFormat.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/def/Format.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Format.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/def/Template.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Template.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/def/TemplateKey.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.TemplateKey.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/def/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["Template",""],["TemplateKey",""]],"trait":[["BuildFormat",""],["Format",""]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/jsonapi/ApiDeserialize.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.ApiDeserialize.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/jsonapi/ApiSerialize.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.ApiSerialize.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/jsonapi/ClientIdPolicy.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.ClientIdPolicy.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/jsonapi/Fields.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Fields.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/jsonapi/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"enum":[["ClientIdPolicy",""]],"struct":[["Fields",""]],"trait":[["ApiDeserialize",""],["ApiSerialize",""]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/formats/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"mod":[["def",""],["jsonapi",""]],"struct":[["Debug","Debug print your resource into the HTTP response."],["Handlebars","Render your response using a handlebars template."],["JsonApi","Generate a JSON response conforming to the JSON API spec."]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/macro.relation!.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to macro.relation.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/macro.routes!.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to macro.routes.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/Delete.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Delete.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/DeleteRelated.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.DeleteRelated.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/Get.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Get.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/GetMany.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.GetMany.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/GetOne.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.GetOne.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/Index.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Index.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/Patch.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Patch.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/Post.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Post.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/PostRelated.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.PostRelated.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/UpdateRelated.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.UpdateRelated.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/def/CollectionMethod.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.CollectionMethod.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/def/HttpMethod.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.HttpMethod.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/def/Kind.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.Kind.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/def/Method.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Method.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/def/ResourceMethod.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.ResourceMethod.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/def/Route.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Route.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/def/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"enum":[["HttpMethod","The Request Method (VERB)"],["Kind",""]],"struct":[["Route",""]],"trait":[["CollectionMethod",""],["Method",""],["ResourceMethod",""]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/methods/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"mod":[["def",""]],"trait":[["Delete","Delete an instance of this resource."],["DeleteRelated",""],["Get","Get a single instance of this resource."],["GetMany",""],["GetOne",""],["Index","Get the index of this resource. This will return multiple resources."],["Patch","Update an instance of this resource."],["Post","Post a new instance of a resource."],["PostRelated",""],["UpdateRelated",""]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/middleware/Middleware.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Middleware.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/middleware/Request.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Request.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/middleware/Service.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Service.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/middleware/http/BoxFuture.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.BoxFuture.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/middleware/http/Error.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.Error.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/middleware/http/Request.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Request.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/middleware/http/Response.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Response.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/middleware/http/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"enum":[["Error","A set of errors that can occur parsing HTTP streams."]],"struct":[["Request","A request bundles several parts of an incoming `NetworkStream`, given to a `Handler`."],["Response","The Response sent to a client after receiving a Request in a Service."]],"type":[["BoxFuture",""]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/middleware/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"mod":[["http",""]],"struct":[["Request",""]],"trait":[["Middleware",""],["Service","An asynchronous function from `Request` to a `Response`."]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/relation.m.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to macro.relation.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/routes.m.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to macro.routes.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/routing/HttpFuture.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to type.HttpFuture.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/routing/type.HttpFuture.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to ../../cargonauts/middleware/http/type.BoxFuture.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/serve.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.serve.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/Error.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.Error.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/Handle.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Handle.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/Method.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.Method.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/NewService.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.NewService.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/Request.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Request.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/Response.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Response.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/Service.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Service.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/StatusCode.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to enum.StatusCode.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/pool/Config.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Config.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/pool/Configure.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to trait.Configure.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/pool/Pool.t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to struct.Pool.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/pool/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"struct":[["Config","The configuration for a connection pool."],["Pool","An asynchronous, single-threaded connection pool."]],"trait":[["Configure",""]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/server/serve.v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Redirecting to fn.serve.html...

8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/api/cargonauts/server/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"enum":[["Error","A set of errors that can occur parsing HTTP streams."],["Method","The Request Method (VERB)"],["StatusCode","An HTTP status code (`status-code` in RFC 7230 et al.)."]],"fn":[["serve",""]],"mod":[["pool",""]],"struct":[["Handle","A non-sendable handle to an event loop, useful for manufacturing instances of `LoopData`."],["Request","A request bundles several parts of an incoming `NetworkStream`, given to a `Handler`."],["Response","The Response sent to a client after receiving a Request in a Service."]],"trait":[["NewService","Creates new `Service` values."],["Service","An asynchronous function from `Request` to a `Response`."]]}); -------------------------------------------------------------------------------- /docs/api/cargonauts/sidebar-items.js: -------------------------------------------------------------------------------- 1 | initSidebarItems({"fn":[["serve",""]],"macro":[["relation","This macro constructs a new relationship alias. The syntax is `relation!(NewRelation => ResourceType);`, which creates a new type called `NewRelation` that implements Relationship to `ResourceType`."],["routes","The routes DSL"]],"mod":[["clients","For defining high level clients to other services."],["config","Configuration of cargonauts."],["formats","For providing formats for methods and defining new ones."],["methods","For implementing methods on resources and defining new ones."],["middleware","For wrapping your endpoints in middleware."],["server","Raw HTTP types."]],"struct":[["Environment","The Environment in which an API endpoint runs."],["Error","The Error type for your application."]],"trait":[["Relationship","A relationship to another resource."],["Resource","The trait implemented by all resources."]]}); -------------------------------------------------------------------------------- /docs/api/implementors/aho_corasick/autiter/trait.Automaton.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/aho_corasick/trait.Transitions.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/alloc/boxed/trait.FnBox.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/anymap/any/trait.Any.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/anymap/any/trait.CloneAny.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/anymap/any/trait.UncheckedAnyExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/byteorder/new/trait.ReadBytesExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/byteorder/new/trait.WriteBytesExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/byteorder/trait.ByteOrder.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/bytes/buf/buf/trait.Buf.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/bytes/buf/buf_mut/trait.BufMut.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/bytes/buf/from_buf/trait.FromBuf.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/bytes/buf/into_buf/trait.IntoBuf.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/cargonauts/clients/trait.Configure.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/cargonauts/clients/trait.NewServiceLike.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/cargonauts/formats/def/trait.BuildFormat.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl BuildFormat for SimpleDebug","impl BuildFormat for Handlebars","impl BuildFormat for JsonApi",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/cargonauts/trait.Relationship.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/collections/range/trait.RangeArgument.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/collections/slice/trait.SliceConcatExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/collections/string/trait.ToString.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/any/trait.Any.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/array/trait.FixedSizeArray.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/convert/trait.TryFrom.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/convert/trait.TryInto.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/fmt/trait.Binary.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/fmt/trait.LowerExp.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/fmt/trait.LowerHex.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<'a> LowerHex for FmtWrap<&'a [u8]>",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/fmt/trait.Octal.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/fmt/trait.UpperExp.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/fmt/trait.UpperHex.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/fmt/trait.Write.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl Write for BytesMut","impl Write for String",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/hash/trait.BuildHasher.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl BuildHasher for RandomState",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/iter/range/trait.Step.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/iter/traits/trait.Product.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/iter/traits/trait.TrustedLen.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<T> TrustedLen for IntoIter<T>",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/nonzero/trait.Zeroable.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.BitAndAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl BitAndAssign<Restrictions> for Restrictions",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.BitOrAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl BitOrAssign<Restrictions> for Restrictions",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.BitXorAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl BitXorAssign<Restrictions> for Restrictions",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.BoxPlace.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<T> BoxPlace<T> for IntermediateBox<T>",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.Boxed.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<T> Boxed for Box<T>",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.Carrier.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.Div.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl Div<u32> for Duration","impl Div<i32> for Duration",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.DivAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl DivAssign<u32> for Duration",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.Fn.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.Mul.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl Mul<u32> for Duration","impl Mul<i32> for Duration",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.MulAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl MulAssign<u32> for Duration",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.Neg.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl Neg for Duration",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.Rem.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.RemAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.Shl.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.ShlAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.Shr.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/ops/trait.ShrAssign.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/slice/trait.SliceExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/slice/trait.SliceIndex.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/str/pattern/trait.DoubleEndedSearcher.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/str/pattern/trait.Pattern.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<'a, 'b> Pattern<'a> for &'b String",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/str/pattern/trait.ReverseSearcher.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/core/str/pattern/trait.Searcher.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/dtoa/trait.Floating.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/futures/future/trait.IntoFuture.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/handlebars/context/trait.JsonRender.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/handlebars/directives/trait.DirectiveDef.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/handlebars/helpers/trait.HelperDef.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/handlebars/render/trait.Evaluable.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/handlebars/render/trait.Renderable.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/hyper/client/connect/trait.Connect.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/hyper/header/common/authorization/trait.Scheme.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/hyper/header/trait.Header.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/itoa/trait.Integer.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/mio/event_imp/trait.Evented.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/net2/ext/trait.TcpListenerExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/net2/ext/trait.TcpStreamExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/net2/ext/trait.UdpSocketExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/net2/unix/trait.UnixTcpBuilderExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/net2/unix/trait.UnixUdpBuilderExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/bounds/trait.Bounded.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/cast/trait.FromPrimitive.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/cast/trait.NumCast.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/cast/trait.ToPrimitive.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/float/trait.Float.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/float/trait.FloatConst.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/identities/trait.One.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/identities/trait.Zero.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/int/trait.PrimInt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/ops/checked/trait.CheckedAdd.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/ops/checked/trait.CheckedDiv.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/ops/checked/trait.CheckedMul.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/ops/checked/trait.CheckedSub.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/ops/saturating/trait.Saturating.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/ops/wrapping/trait.WrappingAdd.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/ops/wrapping/trait.WrappingMul.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/ops/wrapping/trait.WrappingSub.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/sign/trait.Signed.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/sign/trait.Unsigned.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/num_traits/trait.Num.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/pest/input/trait.Input.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/quick_error/trait.ResultExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rand/distributions/range/trait.SampleRange.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rand/distributions/trait.IndependentSample.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rand/distributions/trait.Sample.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rand/reseeding/trait.Reseeder.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rand/trait.Rand.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rand/trait.Rng.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rand/trait.SeedableRng.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/regex/re_bytes/trait.Replacer.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/regex/re_unicode/trait.Replacer.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rigging/endpoint/trait.Endpoint.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/array_vec/trait.Array.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/bitslice/trait.BitSlice.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/bitslice/trait.BitwiseOperator.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/control_flow_graph/trait.ControlFlowGraph.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/control_flow_graph/trait.GraphPredecessors.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/control_flow_graph/trait.GraphSuccessors.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/indexed_vec/trait.Idx.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl Idx for NodeId",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/snapshot_vec/trait.SnapshotVecDelegate.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/stable_hasher/trait.StableHasherResult.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/tuple_slice/trait.TupleSlice.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_data_structures/unify/trait.Combine.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_errors/emitter/trait.Emitter.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl Emitter for JsonEmitter",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/rustc_errors/trait.CodeMapper.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl CodeMapper for CodeMap",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/de/trait.DeserializeOwned.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/de/trait.DeserializeSeed.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/de/trait.EnumAccess.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/de/trait.Error.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl Error for Error","impl Error for Error",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/de/trait.Expected.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/de/trait.IntoDeserializer.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/de/trait.MapAccess.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/de/trait.SeqAccess.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/de/trait.Visitor.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/ser/trait.Error.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl Error for Error","impl Error for Error","impl Error for Error",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/ser/trait.SerializeMap.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<'output, Target> SerializeMap for MapSerializer<'output, Target> where
    Target: 'output + Target, 
",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/ser/trait.SerializeSeq.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<'output, Target> SerializeSeq for SeqSerializer<'output, Target> where
    Target: 'output + Target, 
",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/ser/trait.SerializeStruct.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<'output, Target> SerializeStruct for StructSerializer<'output, Target> where
    Target: 'output + Target, 
",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/ser/trait.SerializeStructVariant.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<'output, Target> SerializeStructVariant for StructVariantSerializer<'output, Target> where
    Target: 'output + Target, 
",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/ser/trait.SerializeTuple.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<'output, Target> SerializeTuple for TupleSerializer<'output, Target> where
    Target: 'output + Target, 
",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/ser/trait.SerializeTupleStruct.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<'output, Target> SerializeTupleStruct for TupleStructSerializer<'output, Target> where
    Target: 'output + Target, 
",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde/ser/trait.SerializeTupleVariant.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<'output, Target> SerializeTupleVariant for TupleVariantSerializer<'output, Target> where
    Target: 'output + Target, 
",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde_json/read/trait.Read.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde_json/ser/trait.Formatter.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serde_json/value/index/trait.Index.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serialize/hex/trait.FromHex.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serialize/hex/trait.ToHex.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serialize/json/trait.ToJson.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serialize/serialize/trait.Decoder.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serialize/serialize/trait.Encoder.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serialize/serialize/trait.SpecializationError.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serialize/serialize/trait.SpecializedDecoder.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serialize/serialize/trait.SpecializedEncoder.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serialize/serialize/trait.UseSpecializedDecodable.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl UseSpecializedDecodable for Span","impl UseSpecializedDecodable for NodeId",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/serialize/serialize/trait.UseSpecializedEncodable.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl UseSpecializedEncodable for Span","impl UseSpecializedEncodable for NodeId",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/smallvec/trait.Array.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/smallvec/trait.VecLike.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/ascii/trait.AsciiExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/io/trait.BufRead.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/io/trait.Seek.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/net/addr/trait.ToSocketAddrs.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = ["impl<S> ToSocketAddrs for HostAndPort<S> where
    S: AsRef<str>, 
","impl ToSocketAddrs for Url",]; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/os/linux/fs/trait.MetadataExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/panic/trait.RefUnwindSafe.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/ffi/trait.OsStrExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/ffi/trait.OsStringExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/fs/trait.DirBuilderExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/fs/trait.DirEntryExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/fs/trait.FileExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/fs/trait.FileTypeExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/fs/trait.MetadataExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/fs/trait.OpenOptionsExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/fs/trait.PermissionsExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/process/trait.CommandExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/process/trait.ExitStatusExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std/sys/imp/ext/thread/trait.JoinHandleExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/std_unicode/u_str/trait.UnicodeStr.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/attr/trait.HasAttrs.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/codemap/trait.FileLoader.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/base/trait.AttrProcMacro.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/base/trait.IdentMacroExpander.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/base/trait.MacResult.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/base/trait.MultiItemDecorator.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/base/trait.MultiItemModifier.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/base/trait.ProcMacro.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/base/trait.Resolver.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/base/trait.TTMacroExpander.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/build/trait.AstBuilder.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/quote/rt/trait.ExtParseUtils.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/ext/quote/rt/trait.ToTokens.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/fold/trait.Folder.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/parse/obsolete/trait.ParserObsoleteMethods.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/print/pprust/trait.PpAnn.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/print/pprust/trait.PrintState.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/util/move_map/trait.MoveMap.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax/visit/trait.Visitor.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/syntax_pos/trait.Pos.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/term/trait.Terminal.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/tokio_core/io/trait.Io.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/tokio_proto/streaming/multiplex/trait.Transport.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/tokio_proto/streaming/pipeline/trait.Transport.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/tokio_proto/trait.BindClient.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/tokio_proto/trait.BindServer.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/tokio_redis/types/trait.FromRedisValue.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/tokio_redis/types/trait.ToRedisArgs.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/toml/value/trait.Index.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/unicode_normalization/trait.UnicodeNormalization.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/unreachable/trait.UncheckedOptionExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/unreachable/trait.UncheckedResultExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/url/form_urlencoded/trait.Target.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/url/percent_encoding/trait.EncodeSet.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/void/trait.ResultVoidErrExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/api/implementors/void/trait.ResultVoidExt.js: -------------------------------------------------------------------------------- 1 | (function() {var implementors = {}; 2 | implementors["cargonauts"] = []; 3 | 4 | if (window.register_implementors) { 5 | window.register_implementors(implementors); 6 | } else { 7 | window.pending_implementors = implementors; 8 | } 9 | 10 | })() 11 | -------------------------------------------------------------------------------- /docs/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cargonauts-rs/cargonauts/51d155bac23a3fa2483b3b6987beee25d978601b/docs/favicon.png -------------------------------------------------------------------------------- /examples/echo.rs: -------------------------------------------------------------------------------- 1 | #![feature(associated_consts)] 2 | 3 | #[macro_use] extern crate cargonauts; 4 | 5 | use cargonauts::formats::Debug; 6 | use cargonauts::methods::{Get, GetOne}; 7 | use cargonauts::{Resource, Environment, Error}; 8 | use cargonauts::futures::{Future, future}; 9 | 10 | #[derive(Debug)] 11 | pub struct Echo { 12 | echo: String, 13 | } 14 | 15 | impl Resource for Echo { 16 | type Identifier = String; 17 | } 18 | 19 | impl Get for Echo { 20 | fn get(echo: String, _: Environment) -> Box> { 21 | future::ok(Echo { echo }).boxed() 22 | } 23 | } 24 | 25 | relation!(AllCaps => Echo); 26 | 27 | impl GetOne for Echo { 28 | fn get_one(echo: String, _: Environment) -> Box> { 29 | future::ok(Echo { echo: echo.to_uppercase() }).boxed() 30 | } 31 | } 32 | 33 | routes! { 34 | resource Echo { 35 | method Get in Debug; 36 | 37 | has one AllCaps { 38 | method GetOne in Debug; 39 | } 40 | } 41 | } 42 | 43 | fn main() { 44 | cargonauts::server::serve(routes).unwrap(); 45 | } 46 | -------------------------------------------------------------------------------- /src/asset-pipeline/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Without Boats "] 3 | name = "asset-pipeline" 4 | version = "0.1.0" 5 | 6 | [dependencies.cargonauts-config] 7 | path = "../cargonauts-config" 8 | 9 | -------------------------------------------------------------------------------- /src/asset-pipeline/src/lib.rs: -------------------------------------------------------------------------------- 1 | extern crate cargonauts_config; 2 | 3 | use std::error::Error; 4 | use std::env; 5 | use std::fs; 6 | use std::path::{Path, PathBuf}; 7 | 8 | use cargonauts_config::CargonautsConfig; 9 | 10 | pub fn build_assets(f: F) -> Result<(), Box> 11 | where 12 | F: FnOnce(&Path, &Path) -> Result<(), Box> 13 | { 14 | let cfg = CargonautsConfig::find_and_parse()?; 15 | let output_path = { 16 | let out_dir: PathBuf = env::var("OUT_DIR")?.into(); 17 | out_dir.join("cargonauts/assets") 18 | }; 19 | fs::create_dir_all(&output_path)?; 20 | 21 | println!("cargo:rustc-cfg=used_cargonauts_asset_pipeline"); 22 | 23 | f(&cfg.assets(), &output_path) 24 | } 25 | -------------------------------------------------------------------------------- /src/cargonauts-config/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Without Boats "] 3 | name = "cargonauts-config" 4 | version = "0.1.0" 5 | 6 | [dependencies] 7 | serde = "1.0.0" 8 | serde_derive = "1.0.0" 9 | toml = "0.4.0" 10 | -------------------------------------------------------------------------------- /src/cargonauts-config/src/tests.rs: -------------------------------------------------------------------------------- 1 | use CargonautsConfig; 2 | 3 | #[test] 4 | fn toml_ctor() { 5 | assert!(CargonautsConfig::from_toml("[package.metadata.cargonauts]").is_ok()) 6 | } 7 | 8 | #[test] 9 | fn with_clients() { 10 | const TOML: &'static str = "[package.metadata.cargonauts.clients.foo]\nbar = 0"; 11 | 12 | let cfg = CargonautsConfig::from_toml(TOML).unwrap(); 13 | assert!(cfg.client_cfg("foo").is_some()); 14 | } 15 | -------------------------------------------------------------------------------- /src/compass-rose/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Without Boats "] 3 | build = "build.rs" 4 | name = "compass-rose" 5 | version = "0.1.0" 6 | 7 | [build-dependencies] 8 | lalrpop = "0.13.1" 9 | 10 | [dependencies] 11 | heck = "0.2.1" 12 | itertools = "0.6.0" 13 | lalrpop-util = "0.12.5" 14 | proc-macro-hack = "0.3.2" 15 | quote = "0.3.15" 16 | serde_json = "1.0.0" 17 | regex = "0.2.0" 18 | walkdir = "1.0.7" 19 | 20 | [dependencies.cargonauts-config] 21 | path = "../cargonauts-config" 22 | 23 | [lib] 24 | proc-macro = true 25 | -------------------------------------------------------------------------------- /src/compass-rose/build.rs: -------------------------------------------------------------------------------- 1 | extern crate lalrpop; 2 | 3 | fn main() { 4 | lalrpop::process_root().unwrap(); 5 | } 6 | -------------------------------------------------------------------------------- /src/compass-rose/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![recursion_limit="256"] 2 | 3 | #[macro_use] extern crate proc_macro_hack; 4 | #[macro_use] extern crate quote; 5 | 6 | extern crate cargonauts_config as cfg; 7 | extern crate heck; 8 | extern crate itertools; 9 | extern crate serde_json as json; 10 | extern crate walkdir; 11 | 12 | mod ast; 13 | mod gen; 14 | mod parser; 15 | 16 | proc_macro_item_impl! { 17 | pub fn routes_impl(input: &str) -> String { 18 | let cfg = cfg::CargonautsConfig::find_and_parse().unwrap_or_else(|_| cfg::CargonautsConfig::default()); 19 | gen::code_gen(parser::parse_routes(input).unwrap(), cfg) 20 | } 21 | } 22 | 23 | #[test] 24 | fn parse_resources() { 25 | assert_eq!(&*parser::parse_routes("resource Foo @ \"foo\";").unwrap().resources[0].header.ty, "Foo") 26 | } 27 | 28 | #[test] 29 | fn parse_resources_with_setup() { 30 | assert_eq!(&*parser::parse_routes("setup {} resource Foo;").unwrap().resources[0].header.ty, "Foo") 31 | } 32 | -------------------------------------------------------------------------------- /src/jsonapi-derive/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Without Boats "] 3 | name = "jsonapi-derive" 4 | version = "0.1.0" 5 | 6 | [dependencies] 7 | quote = "0.3.15" 8 | syn = "0.11.11" 9 | 10 | [lib] 11 | proc-macro = true 12 | -------------------------------------------------------------------------------- /src/jsonapi-derive/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![recursion_limit = "256"] 2 | 3 | extern crate proc_macro; 4 | extern crate syn; 5 | 6 | #[macro_use] extern crate quote; 7 | 8 | mod de; 9 | mod ser; 10 | 11 | use proc_macro::TokenStream; 12 | 13 | #[proc_macro_derive(ApiDeserialize, attributes(api_id, ignore_api_id))] 14 | pub fn api_deserialize(tokens: TokenStream) -> TokenStream { 15 | let ast = syn::parse_derive_input(&tokens.to_string()).unwrap(); 16 | de::deserialize(ast).to_string().parse().unwrap() 17 | } 18 | 19 | #[proc_macro_derive(ApiSerialize, attributes(api_id))] 20 | pub fn api_serialize(tokens: TokenStream) -> TokenStream { 21 | let ast = syn::parse_derive_input(&tokens.to_string()).unwrap(); 22 | ser::serialize(ast).to_string().parse().unwrap() 23 | } 24 | 25 | fn is_id(field: &syn::Field) -> bool { 26 | field.attrs.iter().any(|attr| match attr.value { 27 | syn::MetaItem::Word(ref ident) => ident.as_ref() == "api_id", 28 | _ => false, 29 | }) 30 | } 31 | -------------------------------------------------------------------------------- /src/mainsail/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Without Boats "] 3 | name = "mainsail" 4 | version = "0.1.0" 5 | 6 | [dependencies] 7 | futures = "0.1.13" 8 | handlebars = "0.26.2" 9 | serde = "1.0.0" 10 | serde_derive = "1.0.0" 11 | serde_json = "1.0.0" 12 | serde_urlencoded = "0.5.1" 13 | url = "1.4.0" 14 | 15 | [dependencies.rigging] 16 | path = "../rigging" 17 | -------------------------------------------------------------------------------- /src/mainsail/src/formats/jsonapi/fieldset.rs: -------------------------------------------------------------------------------- 1 | use rigging::http; 2 | use rigging::resource::ResourceEndpoint; 3 | 4 | pub struct Fields { 5 | fields: Vec, 6 | } 7 | 8 | impl Fields { 9 | pub fn new(req: &http::Request) -> Option { 10 | let q = req.query(); 11 | 12 | // Get only the query string for the fields of this resource 13 | let q = q.and_then(|q| q.split('&').filter(|q| q.starts_with("fields")).find(|q| { 14 | q.trim_left_matches("fields%5b").starts_with(T::RESOURCE) 15 | || q.trim_left_matches("fields%5B").starts_with(T::RESOURCE) 16 | })); 17 | 18 | // Get the fields from that list 19 | let fields = q.and_then(|q| q.splitn(2, '=').last()).map(|fields| { 20 | fields.split(',').map(String::from).collect() 21 | }); 22 | 23 | fields.map(|fields| Fields { fields }) 24 | } 25 | 26 | pub fn contains(&self, field: &str) -> bool { 27 | self.fields.iter().any(|f| f == field) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/mainsail/src/formats/jsonapi/present/attributes.rs: -------------------------------------------------------------------------------- 1 | use serde::{Serialize, Serializer}; 2 | 3 | use super::ApiSerialize; 4 | use super::super::Fields; 5 | 6 | pub struct Attributes<'a, T: 'a> { 7 | pub fields: Option<&'a Fields>, 8 | pub attributes: &'a T, 9 | } 10 | 11 | impl<'a, T: ApiSerialize> Serialize for Attributes<'a, T> { 12 | fn serialize(&self, serializer: S) -> Result { 13 | self.attributes.serialize(self.fields, serializer) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/mainsail/src/formats/jsonapi/receive/document.rs: -------------------------------------------------------------------------------- 1 | use std::fmt; 2 | use std::marker::PhantomData; 3 | 4 | use serde::de::{Deserialize, Visitor, MapAccess, IgnoredAny}; 5 | 6 | pub struct DocumentVisitor(pub PhantomData); 7 | 8 | impl<'d, D: Deserialize<'d>> Visitor<'d> for DocumentVisitor { 9 | type Value = D; 10 | 11 | fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result { 12 | write!(f, "an object with a \"data\" key") 13 | } 14 | 15 | fn visit_map>(self, mut map: A) -> Result { 16 | loop { 17 | if let Some("data") = map.next_key()? { 18 | return map.next_value() 19 | } else { 20 | map.next_value::()?; 21 | } 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /src/mainsail/src/formats/jsonapi/receive/traits.rs: -------------------------------------------------------------------------------- 1 | use std::str::FromStr; 2 | 3 | use serde::de::{Deserialize, Deserializer}; 4 | 5 | #[derive(Copy, Clone, Eq, PartialEq, Hash)] 6 | pub enum ClientIdPolicy { 7 | Accepted, 8 | Required, 9 | NotAccepted, 10 | Ignored, 11 | } 12 | 13 | pub trait ApiDeserialize<'d>: Sized + 'static { 14 | const CLIENT_ID_POLICY: ClientIdPolicy; 15 | type Identifier: FromStr; 16 | type Attributes: Deserialize<'d>; 17 | fn from_parts(id: Option, rest: Self::Attributes) -> Self; 18 | fn deserialize>(deserializer: D) -> Result; 19 | } 20 | -------------------------------------------------------------------------------- /src/mainsail/src/formats/mod.rs: -------------------------------------------------------------------------------- 1 | mod debug; 2 | pub mod handlebars; 3 | pub mod jsonapi; 4 | 5 | pub use self::debug::{SimpleDebug as Debug}; 6 | -------------------------------------------------------------------------------- /src/mainsail/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![feature(associated_consts)] 2 | 3 | extern crate handlebars as hbs; 4 | extern crate futures; 5 | extern crate rigging; 6 | extern crate serde; 7 | extern crate serde_json as json; 8 | extern crate serde_urlencoded as urlencoded; 9 | extern crate url; 10 | 11 | #[macro_use] extern crate serde_derive; 12 | 13 | pub mod methods; 14 | pub mod formats; 15 | -------------------------------------------------------------------------------- /src/mainsail/src/methods/delete.rs: -------------------------------------------------------------------------------- 1 | use futures::Future; 2 | 3 | use rigging::{Error, http}; 4 | use rigging::resource::Resource; 5 | use rigging::environment::Environment; 6 | use rigging::method::{Method, ResourceMethod}; 7 | use rigging::routes::{Route, Kind}; 8 | 9 | /// Delete an instance of this resource. 10 | /// 11 | /// This method corresponds to `DELETE /$resource-type/$identifier`. 12 | pub trait Delete: Resource { 13 | fn delete(id: Self::Identifier, env: Environment) -> Box> where Self: Sized; 14 | } 15 | 16 | impl Method for Delete { 17 | const ROUTE: Route = Route { 18 | kind: Kind::Resource, 19 | method: http::Method::Delete, 20 | }; 21 | 22 | type Request = (); 23 | type Response = (); 24 | type Future = Box>; 25 | } 26 | 27 | impl ResourceMethod for Delete { 28 | fn call(id: T::Identifier, _: Self::Request, env: Environment) -> Self::Future { 29 | T::delete(id, env) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/mainsail/src/methods/delete_related.rs: -------------------------------------------------------------------------------- 1 | use futures::Future; 2 | 3 | use rigging::{Error, http}; 4 | use rigging::resource::{Relationship, Resource}; 5 | use rigging::method::{ResourceMethod, Method}; 6 | use rigging::environment::Environment; 7 | use rigging::routes::{Route, Kind}; 8 | 9 | pub trait DeleteRelated: Resource { 10 | fn delete_related(id: Self::Identifier, env: Environment) -> Box> where Self: Sized; 11 | } 12 | 13 | impl, R: Relationship> Method for DeleteRelated { 14 | const ROUTE: Route = Route { 15 | kind: Kind::Relationship, 16 | method: http::Method::Delete, 17 | }; 18 | 19 | type Request = (); 20 | type Response = (); 21 | type Future = Box>; 22 | } 23 | 24 | impl, R: Relationship> ResourceMethod for DeleteRelated { 25 | fn call(id: T::Identifier, _: Self::Request, env: Environment) -> Self::Future { 26 | T::delete_related(id, env) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/mainsail/src/methods/get.rs: -------------------------------------------------------------------------------- 1 | use futures::Future; 2 | 3 | use rigging::{Error, http}; 4 | use rigging::resource::Resource; 5 | use rigging::method::{ResourceMethod, Method}; 6 | use rigging::environment::Environment; 7 | use rigging::routes::{Route, Kind}; 8 | 9 | /// Get a single instance of this resource. 10 | /// 11 | /// This method corresponds to `GET /$resource-type/$identifier`. 12 | pub trait Get: Resource { 13 | fn get(id: Self::Identifier, env: Environment) -> Box> where Self: Sized; 14 | } 15 | 16 | impl Method for Get { 17 | const ROUTE: Route = Route { 18 | kind: Kind::Resource, 19 | method: http::Method::Get, 20 | }; 21 | 22 | type Request = (); 23 | type Response = T; 24 | type Future = Box>; 25 | } 26 | 27 | impl ResourceMethod for Get { 28 | fn call(id: T::Identifier, _: Self::Request, env: Environment) -> Self::Future { 29 | T::get(id, env) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/mainsail/src/methods/get_many.rs: -------------------------------------------------------------------------------- 1 | use futures::Future; 2 | 3 | use rigging::{Error, http}; 4 | use rigging::resource::{Relationship, Resource}; 5 | use rigging::method::{ResourceMethod, Method}; 6 | use rigging::environment::Environment; 7 | use rigging::routes::{Route, Kind}; 8 | 9 | 10 | pub trait GetMany: Resource { 11 | fn get_many(id: Self::Identifier, env: Environment) -> Box, Error = Error>> where Self: Sized; 12 | } 13 | 14 | impl, R: Relationship> Method for GetMany { 15 | const ROUTE: Route = Route { 16 | kind: Kind::Relationship, 17 | method: http::Method::Get, 18 | }; 19 | 20 | type Request = (); 21 | type Response = Vec; 22 | type Future = Box, Error = Error>>; 23 | } 24 | 25 | impl, R: Relationship> ResourceMethod for GetMany { 26 | fn call(id: T::Identifier, _: Self::Request, env: Environment) -> Self::Future { 27 | T::get_many(id, env) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/mainsail/src/methods/get_one.rs: -------------------------------------------------------------------------------- 1 | use futures::Future; 2 | 3 | use rigging::{Error, http}; 4 | use rigging::resource::{Relationship, Resource}; 5 | use rigging::method::{ResourceMethod, Method}; 6 | use rigging::environment::Environment; 7 | use rigging::routes::{Route, Kind}; 8 | 9 | pub trait GetOne: Resource { 10 | fn get_one(id: Self::Identifier, env: Environment) -> Box> where Self: Sized; 11 | } 12 | 13 | impl, R: Relationship> Method for GetOne { 14 | const ROUTE: Route = Route { 15 | kind: Kind::Relationship, 16 | method: http::Method::Get, 17 | }; 18 | 19 | type Request = (); 20 | type Response = R::Related; 21 | type Future = Box>; 22 | } 23 | 24 | impl, R: Relationship> ResourceMethod for GetOne { 25 | fn call(id: T::Identifier, _: Self::Request, env: Environment) -> Self::Future { 26 | T::get_one(id, env) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/mainsail/src/methods/index.rs: -------------------------------------------------------------------------------- 1 | use futures::Future; 2 | 3 | use rigging::{Error, http}; 4 | use rigging::resource::Resource; 5 | use rigging::method::{Method, CollectionMethod}; 6 | use rigging::environment::Environment; 7 | use rigging::routes::{Route, Kind}; 8 | 9 | /// Get the index of this resource. This will return multiple resources. 10 | /// 11 | /// This method corresponds to `GET /$resource-type` 12 | pub trait Index: Resource { 13 | fn index(env: Environment) -> Box, Error = Error>> where Self: Sized; 14 | } 15 | 16 | impl Method for Index { 17 | const ROUTE: Route = Route { 18 | kind: Kind::Collection, 19 | method: http::Method::Get, 20 | }; 21 | 22 | type Request = (); 23 | type Response = Vec; 24 | type Future = Box, Error = Error>>; 25 | } 26 | 27 | impl CollectionMethod for Index { 28 | fn call(_: Self::Request, env: Environment) -> Self::Future { 29 | T::index(env) 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /src/mainsail/src/methods/mod.rs: -------------------------------------------------------------------------------- 1 | mod delete; 2 | mod delete_related; 3 | mod get; 4 | mod get_one; 5 | mod get_many; 6 | mod index; 7 | mod patch; 8 | mod post; 9 | mod post_related; 10 | mod update_related; 11 | 12 | pub use self::delete::Delete; 13 | pub use self::get::Get; 14 | pub use self::index::Index; 15 | pub use self::patch::Patch; 16 | pub use self::post::Post; 17 | 18 | pub use self::delete_related::DeleteRelated; 19 | pub use self::get_one::GetOne; 20 | pub use self::get_many::GetMany; 21 | pub use self::post_related::PostRelated; 22 | pub use self::update_related::UpdateRelated; 23 | -------------------------------------------------------------------------------- /src/mainsail/src/methods/patch.rs: -------------------------------------------------------------------------------- 1 | use futures::Future; 2 | 3 | use rigging::{Error, http}; 4 | use rigging::resource::Resource; 5 | use rigging::environment::Environment; 6 | use rigging::method::{Method, ResourceMethod}; 7 | use rigging::routes::{Route, Kind}; 8 | 9 | /// Update an instance of this resource. 10 | /// 11 | /// This method corresponds to `PATCH /$resource-type/$identifier`. 12 | pub trait Patch: Resource { 13 | /// The representation of this resource received with the Patch request. 14 | type Patch; 15 | fn patch(id: Self::Identifier, patch: Self::Patch, env: Environment) -> Box> where Self: Sized; 16 | } 17 | 18 | impl Method for Patch { 19 | const ROUTE: Route = Route { 20 | kind: Kind::Resource, 21 | method: http::Method::Patch, 22 | }; 23 | 24 | type Request = T::Patch; 25 | type Response = T; 26 | type Future = Box>; 27 | } 28 | 29 | impl ResourceMethod for Patch { 30 | fn call(id: T::Identifier, req: Self::Request, env: Environment) -> Self::Future { 31 | T::patch(id, req, env) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/mainsail/src/methods/post_related.rs: -------------------------------------------------------------------------------- 1 | use futures::Future; 2 | 3 | use rigging::{Error, http}; 4 | use rigging::resource::{Relationship, Resource}; 5 | use rigging::method::{ResourceMethod, Method}; 6 | use rigging::environment::Environment; 7 | use rigging::routes::{Route, Kind}; 8 | 9 | pub trait PostRelated: Resource { 10 | type Post; 11 | fn post_related(id: Self::Identifier, post: Self::Post, env: Environment) -> Box> where Self: Sized; 12 | } 13 | 14 | impl, R: Relationship> Method for PostRelated { 15 | const ROUTE: Route = Route { 16 | kind: Kind::Relationship, 17 | method: http::Method::Post, 18 | }; 19 | 20 | type Request = T::Post; 21 | type Response = R::Related; 22 | type Future = Box>; 23 | } 24 | 25 | impl, R: Relationship> ResourceMethod for PostRelated { 26 | fn call(id: T::Identifier, post: Self::Request, env: Environment) -> Self::Future { 27 | T::post_related(id, post, env) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/mainsail/src/methods/update_related.rs: -------------------------------------------------------------------------------- 1 | use futures::Future; 2 | 3 | use rigging::{Error, http}; 4 | use rigging::resource::{Relationship, Resource}; 5 | use rigging::method::{ResourceMethod, Method}; 6 | use rigging::environment::Environment; 7 | use rigging::routes::{Route, Kind}; 8 | 9 | pub trait UpdateRelated: Resource { 10 | type Update; 11 | fn update_related(id: Self::Identifier, update: Self::Update, env: Environment) -> Box> where Self: Sized; 12 | } 13 | 14 | impl, R: Relationship> Method for UpdateRelated { 15 | const ROUTE: Route = Route { 16 | kind: Kind::Relationship, 17 | method: http::Method::Patch, 18 | }; 19 | 20 | type Request = T::Update; 21 | type Response = R::Related; 22 | type Future = Box>; 23 | } 24 | 25 | impl, R: Relationship> ResourceMethod for UpdateRelated { 26 | fn call(id: T::Identifier, update: Self::Request, env: Environment) -> Self::Future { 27 | T::update_related(id, update, env) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/rigging/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Without Boats "] 3 | name = "rigging" 4 | version = "0.1.0" 5 | 6 | [dependencies] 7 | anymap = "0.12.1" 8 | backtrace = "0.3.0" 9 | futures = "0.1.13" 10 | futures-cpupool = "0.1.5" 11 | num_cpus = "1.5.1" 12 | route-recognizer = "0.1.12" 13 | serde = "1.0.0" 14 | tokio-core = "0.1.6" 15 | url = "1.4.0" 16 | 17 | [dependencies.c3po] 18 | branch = "singlethreaded" 19 | git = "https://github.com/withoutboats/c3po" 20 | 21 | [dependencies.hyper] 22 | branch = "new-new-service" 23 | git = "https://github.com/withoutboats/hyper" 24 | 25 | [dependencies.tokio-redis] 26 | git = "https://github.com/withoutboats/tokio-redis" 27 | 28 | [dependencies.tokio-service] 29 | branch = "new-new-service" 30 | git = "https://github.com/withoutboats/tokio-service" 31 | -------------------------------------------------------------------------------- /src/rigging/src/connections/mod.rs: -------------------------------------------------------------------------------- 1 | use core::reactor::Handle; 2 | use tokio::NewService; 3 | use c3po::Conn; 4 | use serde::de::DeserializeOwned; 5 | 6 | mod redis; 7 | pub mod mock; 8 | 9 | pub trait Configure: Sized { 10 | type Config: Default + DeserializeOwned; 11 | fn config(cfg: Self::Config, handle: Handle) -> Self; 12 | } 13 | 14 | pub trait NewServiceLike: 'static 15 | where Self: NewService 16 | {} 17 | 18 | impl NewServiceLike for S2 19 | where 20 | S1: NewService + 'static, 21 | S2: NewService + 'static, 22 | {} 23 | 24 | pub trait Client: 'static { 25 | const CONNECTION_NAME: &'static str; 26 | type Connection: Configure + NewService + 'static; 27 | } 28 | 29 | pub trait ConnectClient>: Client { 30 | fn connect(conn: Conn) -> Self; 31 | } 32 | -------------------------------------------------------------------------------- /src/rigging/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![feature(associated_consts)] 2 | 3 | extern crate anymap; 4 | extern crate backtrace; 5 | extern crate futures; 6 | extern crate futures_cpupool; 7 | extern crate hyper; 8 | extern crate tokio_service as tokio; 9 | extern crate tokio_core as core; 10 | extern crate c3po; 11 | extern crate num_cpus; 12 | extern crate route_recognizer as recognizer; 13 | extern crate serde; 14 | extern crate tokio_redis as redis; 15 | extern crate url; 16 | 17 | pub mod connections; 18 | pub mod endpoint; 19 | pub mod environment; 20 | pub mod error; 21 | pub mod format; 22 | pub mod http; 23 | pub mod method; 24 | pub mod resource; 25 | pub mod routes; 26 | 27 | pub use error::Error as Error; 28 | -------------------------------------------------------------------------------- /src/rigging/src/method.rs: -------------------------------------------------------------------------------- 1 | use futures::Future; 2 | 3 | use Error; 4 | use resource::Resource; 5 | use environment::Environment; 6 | use routes::Route; 7 | 8 | pub trait Method { 9 | const ROUTE: Route; 10 | 11 | type Request; 12 | type Response; 13 | type Future: Future + 'static; 14 | } 15 | 16 | pub trait ResourceMethod: Method { 17 | fn call(id: T::Identifier, req: Self::Request, env: Environment) -> Self::Future; 18 | } 19 | 20 | pub trait CollectionMethod: Method { 21 | fn call(req: Self::Request, env: Environment) -> Self::Future; 22 | } 23 | --------------------------------------------------------------------------------