\ No newline at end of file
diff --git a/main/dfw/errors/enum.DFWError.html b/main/dfw/errors/enum.DFWError.html
index da694a92..ee01a677 100644
--- a/main/dfw/errors/enum.DFWError.html
+++ b/main/dfw/errors/enum.DFWError.html
@@ -1,33 +1,33 @@
-DFWError in dfw::errors - Rust
\ No newline at end of file
diff --git a/main/dfw/errors/index.html b/main/dfw/errors/index.html
index f104b884..b4c8607e 100644
--- a/main/dfw/errors/index.html
+++ b/main/dfw/errors/index.html
@@ -1,2 +1,2 @@
-dfw::errors - Rust
\ No newline at end of file
diff --git a/main/dfw/errors/type.Result.html b/main/dfw/errors/type.Result.html
index ab7d1022..b3c52571 100644
--- a/main/dfw/errors/type.Result.html
+++ b/main/dfw/errors/type.Result.html
@@ -1,6 +1,6 @@
-Result in dfw::errors - Rust
\ No newline at end of file
diff --git a/main/dfw/index.html b/main/dfw/index.html
index a553ad7a..e1924da2 100644
--- a/main/dfw/index.html
+++ b/main/dfw/index.html
@@ -1,4 +1,5 @@
-dfw - Rust
\ No newline at end of file
diff --git a/main/dfw/iptables/enum.IptablesRuleDiscriminants.html b/main/dfw/iptables/enum.IptablesRuleDiscriminants.html
index f6fb977d..abf60099 100644
--- a/main/dfw/iptables/enum.IptablesRuleDiscriminants.html
+++ b/main/dfw/iptables/enum.IptablesRuleDiscriminants.html
@@ -1,30 +1,30 @@
-IptablesRuleDiscriminants in dfw::iptables - Rust
\ No newline at end of file
diff --git a/main/dfw/iptables/enum.PolicyOrRule.html b/main/dfw/iptables/enum.PolicyOrRule.html
index 457c4bec..24a58ff0 100644
--- a/main/dfw/iptables/enum.PolicyOrRule.html
+++ b/main/dfw/iptables/enum.PolicyOrRule.html
@@ -1,38 +1,38 @@
-PolicyOrRule in dfw::iptables - Rust
\ No newline at end of file
diff --git a/main/dfw/iptables/index.html b/main/dfw/iptables/index.html
index 8bed751e..92c62d6e 100644
--- a/main/dfw/iptables/index.html
+++ b/main/dfw/iptables/index.html
@@ -1,2 +1,2 @@
-dfw::iptables - Rust
Policy or rule representation for iptables firewall backend.
\ No newline at end of file
diff --git a/main/dfw/iptables/struct.Iptables.html b/main/dfw/iptables/struct.Iptables.html
index 5e18181e..c68caa88 100644
--- a/main/dfw/iptables/struct.Iptables.html
+++ b/main/dfw/iptables/struct.Iptables.html
@@ -1,74 +1,74 @@
-Iptables in dfw::iptables - Rust
\ No newline at end of file
diff --git a/main/dfw/iptables/types/index.html b/main/dfw/iptables/types/index.html
index f86f971c..6a904b14 100644
--- a/main/dfw/iptables/types/index.html
+++ b/main/dfw/iptables/types/index.html
@@ -1,4 +1,4 @@
-dfw::iptables::types - Rust
\ No newline at end of file
diff --git a/main/dfw/iptables/types/struct.Initialization.html b/main/dfw/iptables/types/struct.Initialization.html
index ce510d7b..6a9968c0 100644
--- a/main/dfw/iptables/types/struct.Initialization.html
+++ b/main/dfw/iptables/types/struct.Initialization.html
@@ -1,6 +1,6 @@
-Initialization in dfw::iptables::types - Rust
\ No newline at end of file
diff --git a/main/dfw/nftables/enum.Family.html b/main/dfw/nftables/enum.Family.html
index feb4f790..063a7587 100644
--- a/main/dfw/nftables/enum.Family.html
+++ b/main/dfw/nftables/enum.Family.html
@@ -1,4 +1,4 @@
-Family in dfw::nftables - Rust
\ No newline at end of file
diff --git a/main/dfw/nftables/enum.Hook.html b/main/dfw/nftables/enum.Hook.html
index 5a361d8d..1b6cb4c1 100644
--- a/main/dfw/nftables/enum.Hook.html
+++ b/main/dfw/nftables/enum.Hook.html
@@ -1,4 +1,4 @@
-Hook in dfw::nftables - Rust
\ No newline at end of file
diff --git a/main/dfw/nftables/enum.Type.html b/main/dfw/nftables/enum.Type.html
index 8f85d0bc..73726997 100644
--- a/main/dfw/nftables/enum.Type.html
+++ b/main/dfw/nftables/enum.Type.html
@@ -1,4 +1,4 @@
-Type in dfw::nftables - Rust
\ No newline at end of file
diff --git a/main/dfw/nftables/index.html b/main/dfw/nftables/index.html
index f5e7603b..6132b115 100644
--- a/main/dfw/nftables/index.html
+++ b/main/dfw/nftables/index.html
@@ -1,2 +1,2 @@
-dfw::nftables - Rust
\ No newline at end of file
diff --git a/main/dfw/nftables/struct.Nftables.html b/main/dfw/nftables/struct.Nftables.html
index 21cbf389..9006f2bb 100644
--- a/main/dfw/nftables/struct.Nftables.html
+++ b/main/dfw/nftables/struct.Nftables.html
@@ -1,73 +1,73 @@
-Nftables in dfw::nftables - Rust
\ No newline at end of file
diff --git a/main/dfw/nftables/types/index.html b/main/dfw/nftables/types/index.html
index b91d63a0..2637b055 100644
--- a/main/dfw/nftables/types/index.html
+++ b/main/dfw/nftables/types/index.html
@@ -1,4 +1,4 @@
-dfw::nftables::types - Rust
\ No newline at end of file
diff --git a/main/dfw/nftables/types/struct.Initialization.html b/main/dfw/nftables/types/struct.Initialization.html
index 25b698d9..29978b87 100644
--- a/main/dfw/nftables/types/struct.Initialization.html
+++ b/main/dfw/nftables/types/struct.Initialization.html
@@ -1,36 +1,36 @@
-Initialization in dfw::nftables::types - Rust
\ No newline at end of file
diff --git a/main/dfw/nftables/types/struct.Table.html b/main/dfw/nftables/types/struct.Table.html
index e7ede3ac..33022b43 100644
--- a/main/dfw/nftables/types/struct.Table.html
+++ b/main/dfw/nftables/types/struct.Table.html
@@ -1,35 +1,35 @@
-Table in dfw::nftables::types - Rust
\ No newline at end of file
diff --git a/main/dfw/process/enum.ContainerFilter.html b/main/dfw/process/enum.ContainerFilter.html
index 8f150770..67d1b4a5 100644
--- a/main/dfw/process/enum.ContainerFilter.html
+++ b/main/dfw/process/enum.ContainerFilter.html
@@ -1,30 +1,30 @@
-ContainerFilter in dfw::process - Rust
\ No newline at end of file
diff --git a/main/dfw/process/index.html b/main/dfw/process/index.html
index b22fdba3..6c1a3267 100644
--- a/main/dfw/process/index.html
+++ b/main/dfw/process/index.html
@@ -1,3 +1,3 @@
-dfw::process - Rust
This trait allows a type to define its own processing rules. It is expected to return a list
of rules that can be applied with nft.
\ No newline at end of file
diff --git a/main/dfw/process/struct.ProcessContext.html b/main/dfw/process/struct.ProcessContext.html
index de71d892..8ae24981 100644
--- a/main/dfw/process/struct.ProcessContext.html
+++ b/main/dfw/process/struct.ProcessContext.html
@@ -1,4 +1,4 @@
-ProcessContext in dfw::process - Rust
\ No newline at end of file
diff --git a/main/dfw/process/struct.ProcessingOptions.html b/main/dfw/process/struct.ProcessingOptions.html
index ba3c0c36..4139ab75 100644
--- a/main/dfw/process/struct.ProcessingOptions.html
+++ b/main/dfw/process/struct.ProcessingOptions.html
@@ -1,29 +1,29 @@
-ProcessingOptions in dfw::process - Rust
\ No newline at end of file
diff --git a/main/dfw/process/trait.Process.html b/main/dfw/process/trait.Process.html
index a8419a9b..fa8cfddd 100644
--- a/main/dfw/process/trait.Process.html
+++ b/main/dfw/process/trait.Process.html
@@ -1,10 +1,10 @@
-Process in dfw::process - Rust
\ No newline at end of file
diff --git a/main/dfw/trait.FirewallBackend.html b/main/dfw/trait.FirewallBackend.html
index d0872211..aec9eaf7 100644
--- a/main/dfw/trait.FirewallBackend.html
+++ b/main/dfw/trait.FirewallBackend.html
@@ -1,16 +1,16 @@
-FirewallBackend in dfw - Rust
\ No newline at end of file
diff --git a/main/dfw/types/enum.ChainPolicy.html b/main/dfw/types/enum.ChainPolicy.html
index b94052c2..0c268e10 100644
--- a/main/dfw/types/enum.ChainPolicy.html
+++ b/main/dfw/types/enum.ChainPolicy.html
@@ -1,4 +1,4 @@
-ChainPolicy in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/enum.ExposePortBuilderError.html b/main/dfw/types/enum.ExposePortBuilderError.html
index 6ded3fa3..2776a2bf 100644
--- a/main/dfw/types/enum.ExposePortBuilderError.html
+++ b/main/dfw/types/enum.ExposePortBuilderError.html
@@ -1,32 +1,32 @@
-ExposePortBuilderError in dfw::types - Rust
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
\ No newline at end of file
diff --git a/main/dfw/types/enum.RuleVerdict.html b/main/dfw/types/enum.RuleVerdict.html
index 47e3ad77..dc940562 100644
--- a/main/dfw/types/enum.RuleVerdict.html
+++ b/main/dfw/types/enum.RuleVerdict.html
@@ -1,4 +1,4 @@
-RuleVerdict in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/index.html b/main/dfw/types/index.html
index cb85924d..6ed600b6 100644
--- a/main/dfw/types/index.html
+++ b/main/dfw/types/index.html
@@ -1,4 +1,4 @@
-dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.ContainerDNATRule.html b/main/dfw/types/struct.ContainerDNATRule.html
index a5c263b6..3cce5f15 100644
--- a/main/dfw/types/struct.ContainerDNATRule.html
+++ b/main/dfw/types/struct.ContainerDNATRule.html
@@ -1,15 +1,15 @@
-ContainerDNATRule in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.ContainerToContainer.html b/main/dfw/types/struct.ContainerToContainer.html
index 939ba62d..2bb4c988 100644
--- a/main/dfw/types/struct.ContainerToContainer.html
+++ b/main/dfw/types/struct.ContainerToContainer.html
@@ -1,6 +1,6 @@
-ContainerToContainer in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.ContainerToContainerRule.html b/main/dfw/types/struct.ContainerToContainerRule.html
index f5881c86..6b5af134 100644
--- a/main/dfw/types/struct.ContainerToContainerRule.html
+++ b/main/dfw/types/struct.ContainerToContainerRule.html
@@ -1,49 +1,49 @@
-ContainerToContainerRule in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.ContainerToHost.html b/main/dfw/types/struct.ContainerToHost.html
index 311ba1e9..e968e8fe 100644
--- a/main/dfw/types/struct.ContainerToHost.html
+++ b/main/dfw/types/struct.ContainerToHost.html
@@ -1,9 +1,9 @@
-ContainerToHost in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.ContainerToHostRule.html b/main/dfw/types/struct.ContainerToHostRule.html
index 331c3332..eb0a54f2 100644
--- a/main/dfw/types/struct.ContainerToHostRule.html
+++ b/main/dfw/types/struct.ContainerToHostRule.html
@@ -1,46 +1,46 @@
-ContainerToHostRule in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.ContainerToWiderWorld.html b/main/dfw/types/struct.ContainerToWiderWorld.html
index e2654969..f3e517de 100644
--- a/main/dfw/types/struct.ContainerToWiderWorld.html
+++ b/main/dfw/types/struct.ContainerToWiderWorld.html
@@ -1,10 +1,10 @@
-ContainerToWiderWorld in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.ContainerToWiderWorldRule.html b/main/dfw/types/struct.ContainerToWiderWorldRule.html
index dc50c11c..51ada13f 100644
--- a/main/dfw/types/struct.ContainerToWiderWorldRule.html
+++ b/main/dfw/types/struct.ContainerToWiderWorldRule.html
@@ -1,48 +1,48 @@
-ContainerToWiderWorldRule in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.DFW.html b/main/dfw/types/struct.DFW.html
index cec59892..d0c76d41 100644
--- a/main/dfw/types/struct.DFW.html
+++ b/main/dfw/types/struct.DFW.html
@@ -1,84 +1,84 @@
-DFW in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.ExposePort.html b/main/dfw/types/struct.ExposePort.html
index 292fe4c4..f35d7886 100644
--- a/main/dfw/types/struct.ExposePort.html
+++ b/main/dfw/types/struct.ExposePort.html
@@ -1,14 +1,14 @@
-ExposePort in dfw::types - Rust
The string has to be in the format <HOST_PORT>[:<CONTAINER_PORT>]/<FAMILY>, i.e.
80:8080/tcp. If you don’t specify the container-port, it is assumed to be identical to the
host-port.
\ No newline at end of file
diff --git a/main/dfw/types/struct.ExposePortBuilder.html b/main/dfw/types/struct.ExposePortBuilder.html
index 8057fd74..8d7ae344 100644
--- a/main/dfw/types/struct.ExposePortBuilder.html
+++ b/main/dfw/types/struct.ExposePortBuilder.html
@@ -1,34 +1,34 @@
-ExposePortBuilder in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.GlobalDefaults.html b/main/dfw/types/struct.GlobalDefaults.html
index cca460e6..73804ff9 100644
--- a/main/dfw/types/struct.GlobalDefaults.html
+++ b/main/dfw/types/struct.GlobalDefaults.html
@@ -1,9 +1,9 @@
-GlobalDefaults in dfw::types - Rust
This defines the external network interfaces of the host to consider during building the
rules. The value can be non-existent, a string, or a sequence of strings.
\ No newline at end of file
diff --git a/main/dfw/types/struct.WiderWorldToContainer.html b/main/dfw/types/struct.WiderWorldToContainer.html
index 3610a807..e0961c04 100644
--- a/main/dfw/types/struct.WiderWorldToContainer.html
+++ b/main/dfw/types/struct.WiderWorldToContainer.html
@@ -1,7 +1,7 @@
-WiderWorldToContainer in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/types/struct.WiderWorldToContainerRule.html b/main/dfw/types/struct.WiderWorldToContainerRule.html
index c4b78f7e..ca84bc07 100644
--- a/main/dfw/types/struct.WiderWorldToContainerRule.html
+++ b/main/dfw/types/struct.WiderWorldToContainerRule.html
@@ -1,15 +1,15 @@
-WiderWorldToContainerRule in dfw::types - Rust
\ No newline at end of file
diff --git a/main/dfw/util/fn.load_file.html b/main/dfw/util/fn.load_file.html
index 781ab9dc..63fada8b 100644
--- a/main/dfw/util/fn.load_file.html
+++ b/main/dfw/util/fn.load_file.html
@@ -1,3 +1,3 @@
-load_file in dfw::util - Rust
Load single TOML-file from path and deserialize it into type T.
\ No newline at end of file
diff --git a/main/dfw/util/fn.load_path.html b/main/dfw/util/fn.load_path.html
index a93111c7..3545a366 100644
--- a/main/dfw/util/fn.load_path.html
+++ b/main/dfw/util/fn.load_path.html
@@ -1,4 +1,4 @@
-load_path in dfw::util - Rust
Load all TOML-files from a path, concatenate their contents and deserialize the result into
type T.
\ No newline at end of file
diff --git a/main/dfw/util/index.html b/main/dfw/util/index.html
index 3051b350..2d25df36 100644
--- a/main/dfw/util/index.html
+++ b/main/dfw/util/index.html
@@ -1,3 +1,3 @@
-dfw::util - Rust
Load all TOML-files from a path, concatenate their contents and deserialize the result into
type T.
\ No newline at end of file
diff --git a/main/dfw/util/trait.FutureExt.html b/main/dfw/util/trait.FutureExt.html
index 25025174..e99ef39c 100644
--- a/main/dfw/util/trait.FutureExt.html
+++ b/main/dfw/util/trait.FutureExt.html
@@ -1,8 +1,8 @@
-FutureExt in dfw::util - Rust
\ No newline at end of file
diff --git a/main/help.html b/main/help.html
index 78a602d3..55dad0d2 100644
--- a/main/help.html
+++ b/main/help.html
@@ -1 +1 @@
-Rustdoc help
\ No newline at end of file
diff --git a/main/implementors/core/clone/trait.Clone.js b/main/implementors/core/clone/trait.Clone.js
deleted file mode 100644
index dec78a1d..00000000
--- a/main/implementors/core/clone/trait.Clone.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl Clone for Family"],["impl<B> Clone for DFW<B>where\n B: FirewallBackend + Clone,\n DFW<B>: Process<B>,\n B::Defaults: Clone,"],["impl Clone for ChainPolicy"],["impl Clone for ExposePort"],["impl Clone for Type"],["impl Clone for PolicyOrRule"],["impl Clone for WiderWorldToContainerRule"],["impl Clone for ContainerToContainer"],["impl Clone for GlobalDefaults"],["impl Clone for Defaults"],["impl Clone for ContainerDNAT"],["impl Clone for ContainerToHostRule"],["impl Clone for ContainerToContainerRule"],["impl Clone for RuleVerdict"],["impl Clone for IptablesRuleDiscriminants"],["impl Clone for WiderWorldToContainer"],["impl Clone for ContainerFilter"],["impl Clone for ExposePortBuilder"],["impl Clone for Defaults"],["impl Clone for ProcessingOptions"],["impl Clone for ContainerToHost"],["impl Clone for Table"],["impl Clone for ContainerDNATRule"],["impl Clone for IptablesRule"],["impl Clone for Initialization"],["impl Clone for Initialization"],["impl Clone for Hook"],["impl Clone for ContainerToWiderWorldRule"],["impl Clone for ContainerToWiderWorld"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/cmp/trait.Eq.js b/main/implementors/core/cmp/trait.Eq.js
deleted file mode 100644
index 56107ad4..00000000
--- a/main/implementors/core/cmp/trait.Eq.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl Eq for ContainerToHostRule"],["impl Eq for Table"],["impl Eq for ContainerDNATRule"],["impl<B> Eq for DFW<B>where\n B: FirewallBackend + Eq,\n DFW<B>: Process<B>,\n B::Defaults: Eq,"],["impl Eq for ContainerToContainerRule"],["impl Eq for IptablesRuleDiscriminants"],["impl Eq for Defaults"],["impl Eq for ProcessingOptions"],["impl Eq for WiderWorldToContainerRule"],["impl Eq for RuleVerdict"],["impl Eq for ContainerToContainer"],["impl Eq for ExposePort"],["impl Eq for GlobalDefaults"],["impl Eq for ContainerToWiderWorldRule"],["impl Eq for Initialization"],["impl Eq for ContainerToHost"],["impl Eq for Initialization"],["impl Eq for ContainerFilter"],["impl Eq for ContainerToWiderWorld"],["impl Eq for WiderWorldToContainer"],["impl Eq for ContainerDNAT"],["impl Eq for Defaults"],["impl Eq for ChainPolicy"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/cmp/trait.PartialEq.js b/main/implementors/core/cmp/trait.PartialEq.js
deleted file mode 100644
index 85a1dfd3..00000000
--- a/main/implementors/core/cmp/trait.PartialEq.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl PartialEq<ContainerFilter> for ContainerFilter"],["impl PartialEq<RuleVerdict> for RuleVerdict"],["impl PartialEq<Table> for Table"],["impl PartialEq<ChainPolicy> for ChainPolicy"],["impl PartialEq<ContainerDNAT> for ContainerDNAT"],["impl PartialEq<Defaults> for Defaults"],["impl PartialEq<ContainerToContainerRule> for ContainerToContainerRule"],["impl PartialEq<ContainerToHostRule> for ContainerToHostRule"],["impl PartialEq<Initialization> for Initialization"],["impl PartialEq<ProcessingOptions> for ProcessingOptions"],["impl PartialEq<IptablesRuleDiscriminants> for IptablesRuleDiscriminants"],["impl PartialEq<ContainerDNATRule> for ContainerDNATRule"],["impl PartialEq<ContainerToWiderWorld> for ContainerToWiderWorld"],["impl PartialEq<ExposePort> for ExposePort"],["impl PartialEq<WiderWorldToContainerRule> for WiderWorldToContainerRule"],["impl PartialEq<WiderWorldToContainer> for WiderWorldToContainer"],["impl PartialEq<ContainerToHost> for ContainerToHost"],["impl PartialEq<Initialization> for Initialization"],["impl PartialEq<ContainerToWiderWorldRule> for ContainerToWiderWorldRule"],["impl PartialEq<ContainerToContainer> for ContainerToContainer"],["impl PartialEq<Defaults> for Defaults"],["impl PartialEq<GlobalDefaults> for GlobalDefaults"],["impl<B> PartialEq<DFW<B>> for DFW<B>where\n B: FirewallBackend + PartialEq,\n DFW<B>: Process<B>,\n B::Defaults: PartialEq,"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/convert/trait.From.js b/main/implementors/core/convert/trait.From.js
deleted file mode 100644
index 6b595d73..00000000
--- a/main/implementors/core/convert/trait.From.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl From<String> for ExposePortBuilderError"],["impl From<IptablesRule> for IptablesRuleDiscriminants"],["impl<'_enum> From<&'_enum IptablesRule> for IptablesRuleDiscriminants"],["impl From<UninitializedFieldError> for ExposePortBuilderError"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/default/trait.Default.js b/main/implementors/core/default/trait.Default.js
deleted file mode 100644
index 30d29fed..00000000
--- a/main/implementors/core/default/trait.Default.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl Default for ExposePort"],["impl Default for RuleVerdict"],["impl Default for Table"],["impl Default for Defaults"],["impl Default for ExposePortBuilder"],["impl Default for ProcessingOptions"],["impl Default for ChainPolicy"],["impl Default for Initialization"],["impl Default for GlobalDefaults"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/fmt/trait.Debug.js b/main/implementors/core/fmt/trait.Debug.js
deleted file mode 100644
index b3c91b00..00000000
--- a/main/implementors/core/fmt/trait.Debug.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl Debug for ContainerDNATRule"],["impl<B> Debug for DFW<B>where\n B: FirewallBackend + Debug,\n DFW<B>: Process<B>,\n B::Defaults: Debug,"],["impl Debug for IptablesRuleDiscriminants"],["impl Debug for ContainerToContainerRule"],["impl Debug for ContainerFilter"],["impl Debug for ExposePortBuilderError"],["impl Debug for Iptables"],["impl Debug for ProcessingOptions"],["impl Debug for Family"],["impl Debug for Defaults"],["impl Debug for ContainerToHostRule"],["impl Debug for ContainerToWiderWorld"],["impl Debug for ContainerToHost"],["impl Debug for Hook"],["impl Debug for PolicyOrRule"],["impl Debug for ExposePort"],["impl Debug for GlobalDefaults"],["impl Debug for ContainerDNAT"],["impl Debug for Initialization"],["impl Debug for ChainPolicy"],["impl Debug for Nftables"],["impl Debug for Defaults"],["impl Debug for DFWError"],["impl Debug for WiderWorldToContainerRule"],["impl Debug for Type"],["impl Debug for ContainerToWiderWorldRule"],["impl Debug for Initialization"],["impl Debug for IptablesRule"],["impl Debug for WiderWorldToContainer"],["impl Debug for RuleVerdict"],["impl Debug for Table"],["impl Debug for ContainerToContainer"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/fmt/trait.Display.js b/main/implementors/core/fmt/trait.Display.js
deleted file mode 100644
index 2225648c..00000000
--- a/main/implementors/core/fmt/trait.Display.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl Display for DFWError"],["impl Display for Family"],["impl Display for ChainPolicy"],["impl Display for ExposePortBuilderError"],["impl Display for Hook"],["impl Display for Type"],["impl Display for RuleVerdict"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/hash/trait.Hash.js b/main/implementors/core/hash/trait.Hash.js
deleted file mode 100644
index 14cdbc34..00000000
--- a/main/implementors/core/hash/trait.Hash.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl Hash for GlobalDefaults"],["impl Hash for ChainPolicy"],["impl Hash for ContainerDNAT"],["impl Hash for WiderWorldToContainer"],["impl Hash for ContainerToHostRule"],["impl Hash for ContainerToWiderWorld"],["impl Hash for ExposePort"],["impl Hash for RuleVerdict"],["impl Hash for Table"],["impl Hash for ContainerToContainer"],["impl Hash for WiderWorldToContainerRule"],["impl Hash for ContainerToHost"],["impl Hash for ContainerToContainerRule"],["impl Hash for ContainerToWiderWorldRule"],["impl Hash for ContainerDNATRule"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.Copy.js b/main/implementors/core/marker/trait.Copy.js
deleted file mode 100644
index 358d25ea..00000000
--- a/main/implementors/core/marker/trait.Copy.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl Copy for Hook"],["impl Copy for ChainPolicy"],["impl Copy for IptablesRuleDiscriminants"],["impl Copy for Type"],["impl Copy for Family"],["impl Copy for RuleVerdict"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.StructuralEq.js b/main/implementors/core/marker/trait.StructuralEq.js
deleted file mode 100644
index 82c8829b..00000000
--- a/main/implementors/core/marker/trait.StructuralEq.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl StructuralEq for ContainerFilter"],["impl StructuralEq for ContainerToContainer"],["impl StructuralEq for ContainerToHostRule"],["impl StructuralEq for IptablesRuleDiscriminants"],["impl StructuralEq for ContainerToWiderWorldRule"],["impl StructuralEq for ChainPolicy"],["impl StructuralEq for Defaults"],["impl StructuralEq for WiderWorldToContainerRule"],["impl StructuralEq for Table"],["impl StructuralEq for ContainerToWiderWorld"],["impl StructuralEq for Defaults"],["impl StructuralEq for ContainerToHost"],["impl StructuralEq for ContainerDNATRule"],["impl StructuralEq for GlobalDefaults"],["impl StructuralEq for Initialization"],["impl StructuralEq for ContainerToContainerRule"],["impl StructuralEq for RuleVerdict"],["impl<B> StructuralEq for DFW<B>where\n B: FirewallBackend,\n DFW<B>: Process<B>,"],["impl StructuralEq for ExposePort"],["impl StructuralEq for ContainerDNAT"],["impl StructuralEq for ProcessingOptions"],["impl StructuralEq for WiderWorldToContainer"],["impl StructuralEq for Initialization"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.StructuralPartialEq.js b/main/implementors/core/marker/trait.StructuralPartialEq.js
deleted file mode 100644
index bddd958e..00000000
--- a/main/implementors/core/marker/trait.StructuralPartialEq.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl StructuralPartialEq for RuleVerdict"],["impl StructuralPartialEq for ContainerToHost"],["impl StructuralPartialEq for WiderWorldToContainer"],["impl StructuralPartialEq for ContainerToHostRule"],["impl StructuralPartialEq for ContainerToWiderWorldRule"],["impl StructuralPartialEq for WiderWorldToContainerRule"],["impl StructuralPartialEq for Defaults"],["impl StructuralPartialEq for ProcessingOptions"],["impl StructuralPartialEq for ContainerToContainerRule"],["impl StructuralPartialEq for ContainerToWiderWorld"],["impl StructuralPartialEq for ContainerFilter"],["impl StructuralPartialEq for IptablesRuleDiscriminants"],["impl StructuralPartialEq for Defaults"],["impl StructuralPartialEq for Initialization"],["impl StructuralPartialEq for ContainerDNAT"],["impl<B> StructuralPartialEq for DFW<B>where\n B: FirewallBackend,\n DFW<B>: Process<B>,"],["impl StructuralPartialEq for ContainerToContainer"],["impl StructuralPartialEq for Initialization"],["impl StructuralPartialEq for ExposePort"],["impl StructuralPartialEq for GlobalDefaults"],["impl StructuralPartialEq for ContainerDNATRule"],["impl StructuralPartialEq for ChainPolicy"],["impl StructuralPartialEq for Table"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/serde/de/trait.Deserialize.js b/main/implementors/serde/de/trait.Deserialize.js
deleted file mode 100644
index 92860f95..00000000
--- a/main/implementors/serde/de/trait.Deserialize.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {
-"dfw":[["impl<'de> Deserialize<'de> for Defaults"],["impl<'de> Deserialize<'de> for ContainerToWiderWorld"],["impl<'de> Deserialize<'de> for ChainPolicy"],["impl<'de> Deserialize<'de> for ContainerToHost"],["impl<'de> Deserialize<'de> for ContainerDNAT"],["impl<'de> Deserialize<'de> for Defaults"],["impl<'de> Deserialize<'de> for Initialization"],["impl<'de> Deserialize<'de> for ExposePort"],["impl<'de> Deserialize<'de> for ContainerToHostRule"],["impl<'de> Deserialize<'de> for Table"],["impl<'de> Deserialize<'de> for WiderWorldToContainer"],["impl<'de> Deserialize<'de> for ContainerToContainer"],["impl<'de> Deserialize<'de> for ContainerToWiderWorldRule"],["impl<'de> Deserialize<'de> for GlobalDefaults"],["impl<'de> Deserialize<'de> for ContainerToContainerRule"],["impl<'de, B> Deserialize<'de> for DFW<B>where\n B: FirewallBackend,\n DFW<B>: Process<B>,"],["impl<'de> Deserialize<'de> for RuleVerdict"],["impl<'de> Deserialize<'de> for WiderWorldToContainerRule"],["impl<'de> Deserialize<'de> for Initialization"],["impl<'de> Deserialize<'de> for ContainerDNATRule"]]
-};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/search-index.js b/main/search-index.js
index 6aeb8f8a..235bfec4 100644
--- a/main/search-index.js
+++ b/main/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = JSON.parse('{\
-"dfw":{"doc":"DFW - Docker Firewall Framework in Rust","t":"QIQKAAAAAAENNNGNLLLLLLLLLLLLLLMMMDEENENNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAMMMMMMDDLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLMMNNENNENNNNNNNDNNNNELLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLADDDLLLLLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLMLLLMMLLLLLLLLLLLLNEIDDNLLLLLLLLLLMLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLNNEDDDDDDDDDNNDDEDNENNDDLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLMMMMMMLLLLLMMMMLLLLLLLLLLLLLLLMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMIFFL","n":["Defaults","FirewallBackend","Rule","apply","errors","iptables","nftables","process","types","util","DFWError","Err","NFTablesError","Ok","Result","TraitMethodUnimplemented","as_fail","backtrace","borrow","borrow_mut","cause","fmt","fmt","from","into","name","to_string","try_from","try_into","type_id","method","stderr","stdout","Iptables","IptablesRule","IptablesRuleDiscriminants","Policy","PolicyOrRule","Rule","V4","V4","V6","V6","apply","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_rules","into","into","into","into","process","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","types","chain","chain","policy","table","table","value","Defaults","Initialization","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deserialize","deserialize","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","initialization","into","into","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","v4","v6","Arp","Bridge","Family","Filter","Forward","Hook","Inet","Ingress","Input","Ip","Ip6","Nat","Netdev","Nftables","Output","Postrouting","Prerouting","Route","Type","apply","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","into","into","into","into","process","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","types","Defaults","Initialization","Table","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","chains","clone","clone","clone","clone_into","clone_into","clone_into","custom_tables","default","default","default","deserialize","deserialize","deserialize","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","from","hash","initialization","into","into","into","name","rules","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","All","ContainerFilter","Process","ProcessContext","ProcessingOptions","Running","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","container_filter","default","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","into","into","into","new","process","process","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Accept","Accept","ChainPolicy","ContainerDNAT","ContainerDNATRule","ContainerToContainer","ContainerToContainerRule","ContainerToHost","ContainerToHostRule","ContainerToWiderWorld","ContainerToWiderWorldRule","DFW","Drop","Drop","ExposePort","ExposePortBuilder","ExposePortBuilderError","GlobalDefaults","Reject","RuleVerdict","UninitializedField","ValidationError","WiderWorldToContainer","WiderWorldToContainerRule","as_fail","backend_defaults","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","container_dnat","container_port","container_port","container_port","container_to_container","container_to_host","container_to_wider_world","custom_tables","default","default","default","default","default","default_docker_bridge_to_host_policy","default_policy","default_policy","default_policy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","dst_container","dst_container","dst_container","dst_network","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","expose_port","expose_port","expose_via_ipv6","external_network_interface","external_network_interface","external_network_interfaces","family","family","family","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_str","from_str","from_str","global_defaults","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","host_port","host_port","host_port","initialization","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","matches","matches","matches","network","network","network","network","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","rules","rules","rules","rules","rules","serialize","serialize","source_cidr_v4","source_cidr_v6","src_container","src_container","src_container","src_container","src_network","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","verdict","verdict","verdict","wider_world_to_container","FutureExt","load_file","load_path","sync"],"q":[[0,"dfw"],[10,"dfw::errors"],[30,"dfw::errors::DFWError"],[33,"dfw::iptables"],[94,"dfw::iptables::PolicyOrRule"],[100,"dfw::iptables::types"],[137,"dfw::nftables"],[206,"dfw::nftables::types"],[266,"dfw::process"],[314,"dfw::types"],[710,"dfw::util"],[714,"alloc::vec"],[715,"failure"],[716,"failure::backtrace"],[717,"core::option"],[718,"core::fmt"],[719,"core::fmt"],[720,"core::result"],[721,"core::any"],[722,"serde::de"],[723,"core::fmt"],[724,"bollard::docker"],[725,"slog"],[726,"core::clone"],[727,"core::cmp"],[728,"core::fmt"],[729,"slog"],[730,"slog"]],"d":["Associated type representing the firewall backend …","This trait is used to distinguish between different …","Associated type identifying the rule-type returned.","Apply the processed rules.","Errors, using failure.","This module implements the iptables backend for DFW.","This module implements the nftables backend for DFW.","This module holds the types related to configuration …","The types in this module make up the structure of the …","Utilities module","","Contains the error value","","Contains the success value","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","Marker struct to implement iptables as a firewall backend.","Rule representation for iptables firewall backend.","Auto-generated discriminant enum variants","Rule specifying a chain policy.","Policy or rule representation for iptables firewall …","Actual filter rule that will be added to a chain.","IPv4","IPv4","IPv6","IPv6","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Retrieve the current text that would be passed to …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","The types in this module make up the structure of the …","Associated iptables chain.","Associated iptables chain.","Policy to set.","Associated iptables table.","Associated iptables table.","The rule itself in valid iptables syntax.","The defaults/configuration for the iptables backend.","The initialization section allows you to add custom rules …","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","The optional initialization section.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","Initialization rules for iptables (IPv4). Expects a map …","Initialization rules for ip6tables (IPv6). Expects a map …","ARP table family","Bridge table family","Representation of nftables table-families.","Is used to filter packets.","Forward allows traffic-filtering for packets that were not …","Representation of nftables chain hooks.","Dualstack IPv4/IPv6 table family","Ingress allows traffic-filtering before pre-routing, after …","Input allows traffic-filtering for packets that have been …","IPv4 table family","IPv6 table family","Is used to perform Networking Address Translation (NAT).","Netdev table family","Marker struct to implement nftables as a firewall backend.","Output allows traffic-filtering for packets leaving the …","Postrouting allows traffic-filtering for already routed …","Prerouting allows traffic-filtering before the packets …","Is used to reroute packets if any relevant IP header field …","Representation of nftables chain-types.","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","The types in this module make up the structure of the …","The defaults/configuration for the nftables backend.","The initialization section allows you to execute any …","Reference to an nftables table, specifically to the input- …","","","","","","","Names of the input and forward chains defined within the …","","","","","","","Specify the names of custom nft-tables that should be …","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","The optional initialization section.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Name of the custom table.","Initialization rules for nftables","","","","","","","","","","","","","Process all containers, i.e. don’t filter.","Option to filter the containers to be processed","This trait allows a type to define its own processing …","Enclosing struct to manage rule processing.","Options to configure the processing procedure.","Only process running containers.","","","","","","","","","","","Option to filter the containers to be processed, see …","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Create a new instance of ProcessDFW for rule processing.","Process the current type within the given ProcessContext, …","Start the processing using the configuration given at …","","","","","","","","","","","","The accept verdict means that the packet will keep …","The accept verdict means that the packet will keep …","Representation of chain policies.","The container-DNAT section, defining how containers can …","Definition for a rule to be used in the container-DNAT …","The container-to-container section, defining how …","Definition for a rule to be used in the …","The container-to-host section, defining how containers can …","Definition for a rule to be used in the container-to-host …","The container-to-wider-world section, defining how …","Definition for a rule to be used in the …","DFW is the parent type defining the complete configuration …","The drop verdict means that the packet is discarded if the …","The drop verdict means that the packet is discarded if the …","Struct to hold a port definition to expose on the …","Builder for ExposePort.","Error type for ExposePortBuilder","The default configuration section, used by DFW for rule …","The reject verdict means that the packet is responded to …","Representation of rule policies.","Uninitialized field","Custom validation error","The wider-world-to-container section, defining how …","Definition for a rule to be used in the …","","The backend_defaults configuration section","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Builds a new ExposePort.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The container_dnat configuration section","Port the host_port should map to into the container.","Port the host_port should map to into the container.","Port the host_port should map to into the container.","The container_to_container configuration section","The container_to_host configuration section","The container_to_wider_world configuration section","This field is DEPRECATED!","","","","","","This defines whether the default Docker bridge (usually …","The default_policy defines the default for when there is …","The default_policy defines the default for when there is …","The default_policy defines the default for when there is …","","","","","","","","","","","","","","","","Destination container to apply the rule to.","Destination container to apply the rule to.","Destination container to apply the rule to.","Network of the destination container to apply the rule to.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Ports to apply the rule to.","Ports to apply the rule to.","Configure if the container should be exposed via IPv6, …","Specific external network interface to target.","Specific external network interface to target.","This defines the external network interfaces of the host …","Family of the exposed port.","Family of the exposed port.","Family of the exposed port.","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert a formatted string into a ExposePort.","","","The defaults configuration section.","","","","","","","","","","","","","","","Port the container_port should be exposed to on the host.","Port the container_port should be exposed to on the host.","Port the container_port should be exposed to on the host.","This field is DEPRECATED!","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Additional match-string, which will be added to the …","Additional match-string, which will be added to the …","Additional match-string, which will be added to the …","Common network between the source container and the …","Network of the source container to apply the rule to.","Network of the source container to apply the rule to.","Network of the destination container to apply the rule to.","","","","","","","","","","","","","","","","","","","","","","","","","An optional list of rules, see ContainerToContainerRule.","An optional list of rules, see ContainerToWiderWorldRule.","An optional list of rules, see ContainerToHostRule.","An optional list of rules, see WiderWorldToContainerRule.","An optional list of rules, see ContainerDNATRule.","","","Source CIDRs (IPv4) to which incoming traffic should be …","Source CIDRs (IPv6) to which incoming traffic should be …","Source container to apply the rule to.","Source container to apply the rule to.","Source container to apply the rule to.","Source container to apply the rule to.","Network of the source container to apply the rule to.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Verdict for rule (accept, drop or reject).","Verdict for rule (accept, drop or reject).","Verdict for rule (accept, drop or reject).","The wider_world_to_container configuration section","An extension trait for Future allowing synchronized …","Load single TOML-file from path and deserialize it into …","Load all TOML-files from a path, concatenate their …","Execute future synchronously, blocking until a result can …"],"i":[37,0,37,37,0,0,0,0,0,0,0,4,6,4,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,64,65,65,0,0,0,18,0,18,16,17,16,17,15,15,16,17,18,15,16,17,18,16,17,18,16,17,18,17,17,17,17,15,16,17,18,15,16,17,17,17,18,15,15,16,17,18,15,16,17,18,15,16,17,18,15,16,17,18,15,16,17,18,0,66,67,66,66,67,67,0,0,20,21,20,21,20,21,20,21,20,21,20,21,20,20,20,21,21,21,20,21,20,21,20,20,21,20,21,20,21,20,21,20,21,21,21,24,24,0,25,26,0,24,26,26,24,24,25,24,0,26,26,26,25,0,23,23,24,25,26,23,24,25,26,24,25,26,24,25,26,23,24,24,25,25,26,26,23,24,25,26,23,24,25,26,23,24,25,26,24,25,26,23,24,25,26,23,24,25,26,23,24,25,26,0,0,0,0,28,29,30,28,29,30,29,28,29,30,28,29,30,28,28,29,30,28,29,30,28,29,30,28,28,28,29,29,29,30,30,30,28,29,30,28,29,30,29,28,28,29,30,29,30,28,29,30,28,29,30,28,29,30,28,29,30,32,0,0,0,0,32,2,32,33,2,32,33,32,33,32,33,33,33,32,33,32,32,32,33,33,33,32,33,2,32,33,2,32,33,2,68,2,32,33,2,32,33,2,32,33,2,32,33,53,54,0,0,0,0,0,0,0,0,0,0,53,54,0,0,0,0,54,0,40,40,0,0,40,35,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,54,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,54,38,35,42,43,44,45,46,47,48,49,50,38,39,51,52,53,54,35,42,43,44,45,46,47,48,49,50,38,39,51,52,53,54,35,38,38,39,35,35,35,42,42,38,39,53,54,42,43,45,47,35,42,43,44,45,46,47,48,49,50,39,51,52,53,54,44,50,52,52,35,42,43,44,45,46,47,48,49,50,39,51,52,53,54,35,35,35,42,42,42,43,43,43,44,44,44,45,45,45,46,46,46,47,47,47,48,48,48,49,49,49,50,50,50,39,39,39,51,51,51,52,52,52,53,53,53,54,54,54,50,52,50,46,50,42,38,38,39,35,42,43,44,45,46,47,48,49,50,40,40,39,51,52,53,53,54,54,35,42,43,44,45,46,47,48,49,50,38,40,40,40,39,51,52,53,54,39,53,54,35,42,43,44,45,46,47,48,49,50,39,51,52,53,54,38,38,39,35,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,54,44,46,48,44,46,48,50,35,35,42,42,43,43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51,51,52,52,43,45,47,49,51,53,54,50,50,44,46,48,52,52,35,42,43,44,45,46,47,48,49,50,38,39,51,52,53,54,40,53,54,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,53,54,54,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,54,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,54,44,46,48,35,0,0,0,69],"f":[0,0,0,[[1,[2,[-1]]],[[4,[3]]],[]],0,0,0,0,0,0,0,0,0,0,0,0,[-1,5,[]],[6,[[8,[7]]]],[-1,-2,[],[]],[-1,-2,[],[]],[6,[[8,[5]]]],[[6,9],10],[[6,9],10],[-1,-1,[]],[-1,-2,[],[]],[6,[[8,[11]]]],[-1,12,[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,[2,[15]]],[[4,[3]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[16,16],[17,17],[18,18],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[17,17],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[15,9],10],[[16,9],10],[[17,9],10],[[18,9],10],[-1,-1,[]],[-1,-1,[]],[16,17],[-1,-1,[]],[16,17],[-1,-1,[]],[[[1,[16]],17],[[1,[12]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[20,20],[21,21],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[-1,[[13,[20]]],22],[-1,[[13,[21]]],22],[[20,20],19],[[21,21],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[20,9],10],[[21,9],10],[-1,-1,[]],[-1,-1,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,[2,[23]]],[[4,[3]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[24,24],[25,25],[26,26],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[23,9],10],[[24,9],10],[[24,9],[[13,[3,27]]]],[[25,9],[[13,[3,27]]]],[[25,9],10],[[26,9],10],[[26,9],[[13,[3,27]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,12,[]],[-1,12,[]],[-1,12,[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[28,28],[29,29],[30,30],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],0,[[],28],[[],29],[[],30],[-1,[[13,[28]]],22],[-1,[[13,[29]]],22],[-1,[[13,[30]]],22],[[28,28],19],[[29,29],19],[[30,30],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[28,9],10],[[29,9],10],[[30,9],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[29,-1],3,31],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[32,32],[33,33],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],0,[[],33],[[32,32],19],[[33,33],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[32,9],10],[[33,9],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[34,[35,[-1]],33,36,19],[[4,[[2,[-1]]]]],37],[[-1,[2,[-2]]],[[4,[[8,[1]]]]],[],[]],[[[2,[-1]]],[[4,[3]]],37],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,5,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[38,[[13,[39,40]]]],[[[35,[-1]]],[[35,[-1]]],[37,41]],[42,42],[43,43],[44,44],[45,45],[46,46],[47,47],[48,48],[49,49],[50,50],[38,38],[39,39],[51,51],[52,52],[53,53],[54,54],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],0,[[38,[8,[55]]],38],0,0,0,0,0,0,[[],42],[[],38],[[],39],[[],53],[[],54],0,0,0,0,[-1,[[13,[[35,[-2]]]]],22,37],[-1,[[13,[42]]],22],[-1,[[13,[43]]],22],[-1,[[13,[44]]],22],[-1,[[13,[45]]],22],[-1,[[13,[46]]],22],[-1,[[13,[47]]],22],[-1,[[13,[48]]],22],[-1,[[13,[49]]],22],[-1,[[13,[50]]],22],[-1,[[13,[39]]],22],[-1,[[13,[51]]],22],[-1,[[13,[52]]],22],[-1,[[13,[53]]],22],[-1,[[13,[54]]],22],0,0,0,0,[[[35,[-1]],[35,[-1]]],19,[37,56]],[[42,42],19],[[43,43],19],[[44,44],19],[[45,45],19],[[46,46],19],[[47,47],19],[[48,48],19],[[49,49],19],[[50,50],19],[[39,39],19],[[51,51],19],[[52,52],19],[[53,53],19],[[54,54],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],0,0,0,0,0,0,[[38,12],38],0,0,[[[35,[-1]],9],10,[37,57]],[[42,9],10],[[43,9],10],[[44,9],10],[[45,9],10],[[46,9],10],[[47,9],10],[[48,9],10],[[49,9],10],[[50,9],10],[[40,9],10],[[40,9],10],[[39,9],10],[[51,9],10],[[52,9],10],[[53,9],10],[[53,9],[[13,[3,27]]]],[[54,9],10],[[54,9],[[13,[3,27]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[12,40],[58,40],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[11,[[13,[39]]]],[11,[[13,[53]]]],[11,[[13,[54]]]],0,[[42,-1],3,31],[[43,-1],3,31],[[44,-1],3,31],[[45,-1],3,31],[[46,-1],3,31],[[47,-1],3,31],[[48,-1],3,31],[[49,-1],3,31],[[50,-1],3,31],[[39,-1],3,31],[[51,-1],3,31],[[52,-1],3,31],[[53,-1],3,31],[[54,-1],3,31],[[38,55],38],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[[[35,[15]],[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[[35,[23]],[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[42,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[42,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[43,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[43,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[44,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[44,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[45,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[45,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[46,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[46,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[47,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[47,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[48,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[48,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[49,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[49,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[50,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[50,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[51,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[51,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[52,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[52,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],0,0,0,0,0,[[53,59,60,61],62],[[54,59,60,61],62],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,12,[]],[-1,12,[]],[-1,12,[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[11,[[13,[53]]]],[11,[[13,[54]]]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],0,0,0,0,0,[11,[[4,[-1]]],63],[11,[[4,[-1]]],63],[-1,[],[]]],"c":[414,571],"p":[[3,"Vec",714],[3,"ProcessContext",266],[15,"tuple"],[6,"Result",10],[8,"Fail",715],[4,"DFWError",10],[3,"Backtrace",716],[4,"Option",717],[3,"Formatter",718],[6,"Result",718],[15,"str"],[3,"String",719],[4,"Result",720],[3,"TypeId",721],[3,"Iptables",33],[4,"IptablesRule",33],[4,"IptablesRuleDiscriminants",33],[4,"PolicyOrRule",33],[15,"bool"],[3,"Defaults",100],[3,"Initialization",100],[8,"Deserializer",722],[3,"Nftables",137],[4,"Family",137],[4,"Type",137],[4,"Hook",137],[3,"Error",718],[3,"Defaults",206],[3,"Table",206],[3,"Initialization",206],[8,"Hasher",723],[4,"ContainerFilter",266],[3,"ProcessingOptions",266],[3,"Docker",724],[3,"DFW",314],[3,"Logger",725],[8,"FirewallBackend",0],[3,"ExposePortBuilder",314],[3,"ExposePort",314],[4,"ExposePortBuilderError",314],[8,"Clone",726],[3,"GlobalDefaults",314],[3,"ContainerToContainer",314],[3,"ContainerToContainerRule",314],[3,"ContainerToWiderWorld",314],[3,"ContainerToWiderWorldRule",314],[3,"ContainerToHost",314],[3,"ContainerToHostRule",314],[3,"WiderWorldToContainer",314],[3,"WiderWorldToContainerRule",314],[3,"ContainerDNAT",314],[3,"ContainerDNATRule",314],[4,"ChainPolicy",314],[4,"RuleVerdict",314],[15,"u16"],[8,"PartialEq",727],[8,"Debug",718],[3,"UninitializedFieldError",728],[3,"Record",725],[6,"Key",729],[8,"Serializer",725],[6,"Result",725],[8,"DeserializeOwned",722],[13,"TraitMethodUnimplemented",30],[13,"NFTablesError",30],[13,"Policy",94],[13,"Rule",94],[8,"Process",266],[8,"FutureExt",710]]}\
+"dfw":{"doc":"DFW - Docker Firewall Framework in Rust","t":"QIQKAAAAAAENNNGNLLLLLLLLLLLLLLMMMDEENENNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAMMMMMMDDLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLMMNNENNENNNNNNNDNNNNELLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLADDDLLLLLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLMLLLMMLLLLLLLLLLLLNEIDDNLLLLLLLLLLMLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLNNEDDDDDDDDDNNDDEDNENNDDLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLMMMMMMLLLLLMMMMLLLLLLLLLLLLLLLMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMIFFL","n":["Defaults","FirewallBackend","Rule","apply","errors","iptables","nftables","process","types","util","DFWError","Err","NFTablesError","Ok","Result","TraitMethodUnimplemented","as_fail","backtrace","borrow","borrow_mut","cause","fmt","fmt","from","into","name","to_string","try_from","try_into","type_id","method","stderr","stdout","Iptables","IptablesRule","IptablesRuleDiscriminants","Policy","PolicyOrRule","Rule","V4","V4","V6","V6","apply","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_rules","into","into","into","into","process","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","types","chain","chain","policy","table","table","value","Defaults","Initialization","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deserialize","deserialize","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","initialization","into","into","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","v4","v6","Arp","Bridge","Family","Filter","Forward","Hook","Inet","Ingress","Input","Ip","Ip6","Nat","Netdev","Nftables","Output","Postrouting","Prerouting","Route","Type","apply","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","into","into","into","into","process","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","types","Defaults","Initialization","Table","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","chains","clone","clone","clone","clone_into","clone_into","clone_into","custom_tables","default","default","default","deserialize","deserialize","deserialize","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","from","hash","initialization","into","into","into","name","rules","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","All","ContainerFilter","Process","ProcessContext","ProcessingOptions","Running","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","container_filter","default","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","into","into","into","new","process","process","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Accept","Accept","ChainPolicy","ContainerDNAT","ContainerDNATRule","ContainerToContainer","ContainerToContainerRule","ContainerToHost","ContainerToHostRule","ContainerToWiderWorld","ContainerToWiderWorldRule","DFW","Drop","Drop","ExposePort","ExposePortBuilder","ExposePortBuilderError","GlobalDefaults","Reject","RuleVerdict","UninitializedField","ValidationError","WiderWorldToContainer","WiderWorldToContainerRule","as_fail","backend_defaults","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","container_dnat","container_port","container_port","container_port","container_to_container","container_to_host","container_to_wider_world","custom_tables","default","default","default","default","default","default_docker_bridge_to_host_policy","default_policy","default_policy","default_policy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","dst_container","dst_container","dst_container","dst_network","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","expose_port","expose_port","expose_via_ipv6","external_network_interface","external_network_interface","external_network_interfaces","family","family","family","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_str","from_str","from_str","global_defaults","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","host_port","host_port","host_port","initialization","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","matches","matches","matches","network","network","network","network","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","process","rules","rules","rules","rules","rules","serialize","serialize","source_cidr_v4","source_cidr_v6","src_container","src_container","src_container","src_container","src_network","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","verdict","verdict","verdict","wider_world_to_container","FutureExt","load_file","load_path","sync"],"q":[[0,"dfw"],[10,"dfw::errors"],[30,"dfw::errors::DFWError"],[33,"dfw::iptables"],[94,"dfw::iptables::PolicyOrRule"],[100,"dfw::iptables::types"],[137,"dfw::nftables"],[206,"dfw::nftables::types"],[266,"dfw::process"],[314,"dfw::types"],[710,"dfw::util"],[714,"alloc::vec"],[715,"failure"],[716,"failure::backtrace"],[717,"core::option"],[718,"core::fmt"],[719,"core::fmt"],[720,"core::result"],[721,"core::any"],[722,"serde::de"],[723,"core::fmt"],[724,"bollard::docker"],[725,"slog"],[726,"core::clone"],[727,"core::cmp"],[728,"core::fmt"],[729,"slog"],[730,"slog"]],"d":["Associated type representing the firewall backend …","This trait is used to distinguish between different …","Associated type identifying the rule-type returned.","Apply the processed rules.","Errors, using failure.","This module implements the iptables backend for DFW.","This module implements the nftables backend for DFW.","This module holds the types related to configuration …","The types in this module make up the structure of the …","Utilities module","","Contains the error value","","Contains the success value","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","Marker struct to implement iptables as a firewall backend.","Rule representation for iptables firewall backend.","Auto-generated discriminant enum variants","Rule specifying a chain policy.","Policy or rule representation for iptables firewall …","Actual filter rule that will be added to a chain.","IPv4","IPv4","IPv6","IPv6","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Retrieve the current text that would be passed to …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","The types in this module make up the structure of the …","Associated iptables chain.","Associated iptables chain.","Policy to set.","Associated iptables table.","Associated iptables table.","The rule itself in valid iptables syntax.","The defaults/configuration for the iptables backend.","The initialization section allows you to add custom rules …","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","The optional initialization section.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","Initialization rules for iptables (IPv4). Expects a map …","Initialization rules for ip6tables (IPv6). Expects a map …","ARP table family","Bridge table family","Representation of nftables table-families.","Is used to filter packets.","Forward allows traffic-filtering for packets that were not …","Representation of nftables chain hooks.","Dualstack IPv4/IPv6 table family","Ingress allows traffic-filtering before pre-routing, after …","Input allows traffic-filtering for packets that have been …","IPv4 table family","IPv6 table family","Is used to perform Networking Address Translation (NAT).","Netdev table family","Marker struct to implement nftables as a firewall backend.","Output allows traffic-filtering for packets leaving the …","Postrouting allows traffic-filtering for already routed …","Prerouting allows traffic-filtering before the packets …","Is used to reroute packets if any relevant IP header field …","Representation of nftables chain-types.","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","The types in this module make up the structure of the …","The defaults/configuration for the nftables backend.","The initialization section allows you to execute any …","Reference to an nftables table, specifically to the input- …","","","","","","","Names of the input and forward chains defined within the …","","","","","","","Specify the names of custom nft-tables that should be …","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","The optional initialization section.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Name of the custom table.","Initialization rules for nftables","","","","","","","","","","","","","Process all containers, i.e. don’t filter.","Option to filter the containers to be processed","This trait allows a type to define its own processing …","Enclosing struct to manage rule processing.","Options to configure the processing procedure.","Only process running containers.","","","","","","","","","","","Option to filter the containers to be processed, see …","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Create a new instance of ProcessDFW for rule processing.","Process the current type within the given ProcessContext, …","Start the processing using the configuration given at …","","","","","","","","","","","","The accept verdict means that the packet will keep …","The accept verdict means that the packet will keep …","Representation of chain policies.","The container-DNAT section, defining how containers can …","Definition for a rule to be used in the container-DNAT …","The container-to-container section, defining how …","Definition for a rule to be used in the …","The container-to-host section, defining how containers can …","Definition for a rule to be used in the container-to-host …","The container-to-wider-world section, defining how …","Definition for a rule to be used in the …","DFW is the parent type defining the complete configuration …","The drop verdict means that the packet is discarded if the …","The drop verdict means that the packet is discarded if the …","Struct to hold a port definition to expose on the …","Builder for ExposePort.","Error type for ExposePortBuilder","The default configuration section, used by DFW for rule …","The reject verdict means that the packet is responded to …","Representation of rule policies.","Uninitialized field","Custom validation error","The wider-world-to-container section, defining how …","Definition for a rule to be used in the …","","The backend_defaults configuration section","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Builds a new ExposePort.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The container_dnat configuration section","Port the host_port should map to into the container.","Port the host_port should map to into the container.","Port the host_port should map to into the container.","The container_to_container configuration section","The container_to_host configuration section","The container_to_wider_world configuration section","This field is DEPRECATED!","","","","","","This defines whether the default Docker bridge (usually …","The default_policy defines the default for when there is …","The default_policy defines the default for when there is …","The default_policy defines the default for when there is …","","","","","","","","","","","","","","","","Destination container to apply the rule to.","Destination container to apply the rule to.","Destination container to apply the rule to.","Network of the destination container to apply the rule to.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Ports to apply the rule to.","Ports to apply the rule to.","Configure if the container should be exposed via IPv6, …","Specific external network interface to target.","Specific external network interface to target.","This defines the external network interfaces of the host …","Family of the exposed port.","Family of the exposed port.","Family of the exposed port.","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert a formatted string into a ExposePort.","","","The defaults configuration section.","","","","","","","","","","","","","","","Port the container_port should be exposed to on the host.","Port the container_port should be exposed to on the host.","Port the container_port should be exposed to on the host.","This field is DEPRECATED!","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Additional match-string, which will be added to the …","Additional match-string, which will be added to the …","Additional match-string, which will be added to the …","Common network between the source container and the …","Network of the source container to apply the rule to.","Network of the source container to apply the rule to.","Network of the destination container to apply the rule to.","","","","","","","","","","","","","","","","","","","","","","","","","An optional list of rules, see ContainerToContainerRule.","An optional list of rules, see ContainerToWiderWorldRule.","An optional list of rules, see ContainerToHostRule.","An optional list of rules, see WiderWorldToContainerRule.","An optional list of rules, see ContainerDNATRule.","","","Source CIDRs (IPv4) to which incoming traffic should be …","Source CIDRs (IPv6) to which incoming traffic should be …","Source container to apply the rule to.","Source container to apply the rule to.","Source container to apply the rule to.","Source container to apply the rule to.","Network of the source container to apply the rule to.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Verdict for rule (accept, drop or reject).","Verdict for rule (accept, drop or reject).","Verdict for rule (accept, drop or reject).","The wider_world_to_container configuration section","An extension trait for Future allowing synchronized …","Load single TOML-file from path and deserialize it into …","Load all TOML-files from a path, concatenate their …","Execute future synchronously, blocking until a result can …"],"i":[37,0,37,37,0,0,0,0,0,0,0,4,6,4,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,64,65,65,0,0,0,18,0,18,16,17,16,17,15,15,16,17,18,15,16,17,18,16,17,18,16,17,18,17,17,17,17,15,16,17,18,15,16,17,17,17,18,15,15,16,17,18,15,16,17,18,15,16,17,18,15,16,17,18,15,16,17,18,0,66,67,66,66,67,67,0,0,20,21,20,21,20,21,20,21,20,21,20,21,20,20,20,21,21,21,20,21,20,21,20,20,21,20,21,20,21,20,21,20,21,21,21,24,24,0,25,26,0,24,26,26,24,24,25,24,0,26,26,26,25,0,23,23,24,25,26,23,24,25,26,24,25,26,24,25,26,23,24,24,25,25,26,26,23,24,25,26,23,24,25,26,23,24,25,26,24,25,26,23,24,25,26,23,24,25,26,23,24,25,26,0,0,0,0,28,29,30,28,29,30,29,28,29,30,28,29,30,28,28,29,30,28,29,30,28,29,30,28,28,28,29,29,29,30,30,30,28,29,30,28,29,30,29,28,28,29,30,29,30,28,29,30,28,29,30,28,29,30,28,29,30,32,0,0,0,0,32,2,32,33,2,32,33,32,33,32,33,33,33,32,33,32,32,32,33,33,33,32,33,2,32,33,2,32,33,2,68,2,32,33,2,32,33,2,32,33,2,32,33,53,54,0,0,0,0,0,0,0,0,0,0,53,54,0,0,0,0,54,0,40,40,0,0,40,35,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,54,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,54,38,35,42,43,44,45,46,47,48,49,50,38,39,51,52,53,54,35,42,43,44,45,46,47,48,49,50,38,39,51,52,53,54,35,38,38,39,35,35,35,42,42,38,39,53,54,42,43,45,47,35,42,43,44,45,46,47,48,49,50,39,51,52,53,54,44,50,52,52,35,42,43,44,45,46,47,48,49,50,39,51,52,53,54,35,35,35,42,42,42,43,43,43,44,44,44,45,45,45,46,46,46,47,47,47,48,48,48,49,49,49,50,50,50,39,39,39,51,51,51,52,52,52,53,53,53,54,54,54,50,52,50,46,50,42,38,38,39,35,42,43,44,45,46,47,48,49,50,40,40,39,51,52,53,53,54,54,35,42,43,44,45,46,47,48,49,50,38,40,40,40,39,51,52,53,54,39,53,54,35,42,43,44,45,46,47,48,49,50,39,51,52,53,54,38,38,39,35,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,54,44,46,48,44,46,48,50,35,35,42,42,43,43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51,51,52,52,43,45,47,49,51,53,54,50,50,44,46,48,52,52,35,42,43,44,45,46,47,48,49,50,38,39,51,52,53,54,40,53,54,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,53,54,54,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,54,35,42,43,44,45,46,47,48,49,50,38,40,39,51,52,53,54,44,46,48,35,0,0,0,69],"f":[0,0,0,[[1,[2,[-1]]],[[4,[3]]],[]],0,0,0,0,0,0,0,0,0,0,0,0,[-1,5,[]],[6,[[8,[7]]]],[-1,-2,[],[]],[-1,-2,[],[]],[6,[[8,[5]]]],[[6,9],10],[[6,9],10],[-1,-1,[]],[-1,-2,[],[]],[6,[[8,[11]]]],[-1,12,[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,[2,[15]]],[[4,[3]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[16,16],[17,17],[18,18],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[17,17],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[15,9],10],[[16,9],10],[[17,9],10],[[18,9],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[16,17],[16,17],[-1,-1,[]],[[[1,[16]],17],[[1,[12]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[20,20],[21,21],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[-1,[[13,[20]]],22],[-1,[[13,[21]]],22],[[20,20],19],[[21,21],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[20,9],10],[[21,9],10],[-1,-1,[]],[-1,-1,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,[2,[23]]],[[4,[3]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[24,24],[25,25],[26,26],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[23,9],10],[[24,9],10],[[24,9],[[13,[3,27]]]],[[25,9],[[13,[3,27]]]],[[25,9],10],[[26,9],[[13,[3,27]]]],[[26,9],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,12,[]],[-1,12,[]],[-1,12,[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[28,28],[29,29],[30,30],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],0,[[],28],[[],29],[[],30],[-1,[[13,[28]]],22],[-1,[[13,[29]]],22],[-1,[[13,[30]]],22],[[28,28],19],[[29,29],19],[[30,30],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[28,9],10],[[29,9],10],[[30,9],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[29,-1],3,31],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[32,32],[33,33],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],0,[[],33],[[32,32],19],[[33,33],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[32,9],10],[[33,9],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[34,[35,[-1]],33,36,19],[[4,[[2,[-1]]]]],37],[[-1,[2,[-2]]],[[4,[[8,[1]]]]],[],[]],[[[2,[-1]]],[[4,[3]]],37],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,5,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[38,[[13,[39,40]]]],[[[35,[-1]]],[[35,[-1]]],[37,41]],[42,42],[43,43],[44,44],[45,45],[46,46],[47,47],[48,48],[49,49],[50,50],[38,38],[39,39],[51,51],[52,52],[53,53],[54,54],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],0,[[38,[8,[55]]],38],0,0,0,0,0,0,[[],42],[[],38],[[],39],[[],53],[[],54],0,0,0,0,[-1,[[13,[[35,[-2]]]]],22,37],[-1,[[13,[42]]],22],[-1,[[13,[43]]],22],[-1,[[13,[44]]],22],[-1,[[13,[45]]],22],[-1,[[13,[46]]],22],[-1,[[13,[47]]],22],[-1,[[13,[48]]],22],[-1,[[13,[49]]],22],[-1,[[13,[50]]],22],[-1,[[13,[39]]],22],[-1,[[13,[51]]],22],[-1,[[13,[52]]],22],[-1,[[13,[53]]],22],[-1,[[13,[54]]],22],0,0,0,0,[[[35,[-1]],[35,[-1]]],19,[37,56]],[[42,42],19],[[43,43],19],[[44,44],19],[[45,45],19],[[46,46],19],[[47,47],19],[[48,48],19],[[49,49],19],[[50,50],19],[[39,39],19],[[51,51],19],[[52,52],19],[[53,53],19],[[54,54],19],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],0,0,0,0,0,0,[[38,12],38],0,0,[[[35,[-1]],9],10,[37,57]],[[42,9],10],[[43,9],10],[[44,9],10],[[45,9],10],[[46,9],10],[[47,9],10],[[48,9],10],[[49,9],10],[[50,9],10],[[40,9],10],[[40,9],10],[[39,9],10],[[51,9],10],[[52,9],10],[[53,9],[[13,[3,27]]]],[[53,9],10],[[54,9],[[13,[3,27]]]],[[54,9],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[12,40],[-1,-1,[]],[58,40],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[11,[[13,[39]]]],[11,[[13,[53]]]],[11,[[13,[54]]]],0,[[42,-1],3,31],[[43,-1],3,31],[[44,-1],3,31],[[45,-1],3,31],[[46,-1],3,31],[[47,-1],3,31],[[48,-1],3,31],[[49,-1],3,31],[[50,-1],3,31],[[39,-1],3,31],[[51,-1],3,31],[[52,-1],3,31],[[53,-1],3,31],[[54,-1],3,31],[[38,55],38],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[[[35,[23]],[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[[35,[15]],[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[42,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[42,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[43,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[43,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[44,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[44,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[45,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[45,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[46,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[46,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[47,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[47,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[48,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[48,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[49,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[49,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[50,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[50,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[51,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[51,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],[[52,[2,[15]]],[[4,[[8,[[1,[16]]]]]]]],[[52,[2,[23]]],[[4,[[8,[[1,[12]]]]]]]],0,0,0,0,0,[[53,59,60,61],62],[[54,59,60,61],62],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,12,[]],[-1,12,[]],[-1,12,[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[11,[[13,[53]]]],[-1,[[13,[-2]]],[],[]],[11,[[13,[54]]]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],0,0,0,0,0,[11,[[4,[-1]]],63],[11,[[4,[-1]]],63],[-1,[],[]]],"c":[414,571],"p":[[3,"Vec",714],[3,"ProcessContext",266],[15,"tuple"],[6,"Result",10],[8,"Fail",715],[4,"DFWError",10],[3,"Backtrace",716],[4,"Option",717],[3,"Formatter",718],[6,"Result",718],[15,"str"],[3,"String",719],[4,"Result",720],[3,"TypeId",721],[3,"Iptables",33],[4,"IptablesRule",33],[4,"IptablesRuleDiscriminants",33],[4,"PolicyOrRule",33],[15,"bool"],[3,"Defaults",100],[3,"Initialization",100],[8,"Deserializer",722],[3,"Nftables",137],[4,"Family",137],[4,"Type",137],[4,"Hook",137],[3,"Error",718],[3,"Defaults",206],[3,"Table",206],[3,"Initialization",206],[8,"Hasher",723],[4,"ContainerFilter",266],[3,"ProcessingOptions",266],[3,"Docker",724],[3,"DFW",314],[3,"Logger",725],[8,"FirewallBackend",0],[3,"ExposePortBuilder",314],[3,"ExposePort",314],[4,"ExposePortBuilderError",314],[8,"Clone",726],[3,"GlobalDefaults",314],[3,"ContainerToContainer",314],[3,"ContainerToContainerRule",314],[3,"ContainerToWiderWorld",314],[3,"ContainerToWiderWorldRule",314],[3,"ContainerToHost",314],[3,"ContainerToHostRule",314],[3,"WiderWorldToContainer",314],[3,"WiderWorldToContainerRule",314],[3,"ContainerDNAT",314],[3,"ContainerDNATRule",314],[4,"ChainPolicy",314],[4,"RuleVerdict",314],[15,"u16"],[8,"PartialEq",727],[8,"Debug",718],[3,"UninitializedFieldError",728],[3,"Record",725],[6,"Key",729],[8,"Serializer",725],[6,"Result",725],[8,"DeserializeOwned",722],[13,"TraitMethodUnimplemented",30],[13,"NFTablesError",30],[13,"Policy",94],[13,"Rule",94],[8,"Process",266],[8,"FutureExt",710]],"b":[[21,"impl-Display-for-DFWError"],[22,"impl-Debug-for-DFWError"],[69,"impl-From%3CIptablesRule%3E-for-IptablesRuleDiscriminants"],[70,"impl-From%3C%26IptablesRule%3E-for-IptablesRuleDiscriminants"],[172,"impl-Debug-for-Family"],[173,"impl-Display-for-Family"],[174,"impl-Display-for-Type"],[175,"impl-Debug-for-Type"],[176,"impl-Display-for-Hook"],[177,"impl-Debug-for-Hook"],[522,"impl-Debug-for-ExposePortBuilderError"],[523,"impl-Display-for-ExposePortBuilderError"],[527,"impl-Display-for-ChainPolicy"],[528,"impl-Debug-for-ChainPolicy"],[529,"impl-Display-for-RuleVerdict"],[530,"impl-Debug-for-RuleVerdict"],[542,"impl-From%3CString%3E-for-ExposePortBuilderError"],[544,"impl-From%3CUninitializedFieldError%3E-for-ExposePortBuilderError"],[596,"impl-Process%3CNftables%3E-for-DFW%3CNftables%3E"],[597,"impl-Process%3CIptables%3E-for-DFW%3CIptables%3E"],[598,"impl-Process%3CIptables%3E-for-GlobalDefaults"],[599,"impl-Process%3CNftables%3E-for-GlobalDefaults"],[600,"impl-Process%3CIptables%3E-for-ContainerToContainer"],[601,"impl-Process%3CNftables%3E-for-ContainerToContainer"],[602,"impl-Process%3CIptables%3E-for-ContainerToContainerRule"],[603,"impl-Process%3CNftables%3E-for-ContainerToContainerRule"],[604,"impl-Process%3CNftables%3E-for-ContainerToWiderWorld"],[605,"impl-Process%3CIptables%3E-for-ContainerToWiderWorld"],[606,"impl-Process%3CNftables%3E-for-ContainerToWiderWorldRule"],[607,"impl-Process%3CIptables%3E-for-ContainerToWiderWorldRule"],[608,"impl-Process%3CNftables%3E-for-ContainerToHost"],[609,"impl-Process%3CIptables%3E-for-ContainerToHost"],[610,"impl-Process%3CIptables%3E-for-ContainerToHostRule"],[611,"impl-Process%3CNftables%3E-for-ContainerToHostRule"],[612,"impl-Process%3CNftables%3E-for-WiderWorldToContainer"],[613,"impl-Process%3CIptables%3E-for-WiderWorldToContainer"],[614,"impl-Process%3CIptables%3E-for-WiderWorldToContainerRule"],[615,"impl-Process%3CNftables%3E-for-WiderWorldToContainerRule"],[616,"impl-Process%3CIptables%3E-for-ContainerDNAT"],[617,"impl-Process%3CNftables%3E-for-ContainerDNAT"],[618,"impl-Process%3CIptables%3E-for-ContainerDNATRule"],[619,"impl-Process%3CNftables%3E-for-ContainerDNATRule"]]}\
}');
if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/main/settings.html b/main/settings.html
index 663ea526..d01a133c 100644
--- a/main/settings.html
+++ b/main/settings.html
@@ -1 +1 @@
-Rustdoc settings
\ No newline at end of file
diff --git a/main/src/dfw/de.rs.html b/main/src/dfw/de.rs.html
index 9eda767a..821a8198 100644
--- a/main/src/dfw/de.rs.html
+++ b/main/src/dfw/de.rs.html
@@ -1,4 +1,4 @@
-de.rs - source
"}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,e)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \
+the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \
+ restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \
+ enum, trait, type, macro, \
+ and const.","Search functions by type signature (e.g., vec -> usize or \
+ -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \
+ your request: \"string\"","Look for functions that accept or return \
+ slices and \
+ arrays by writing \
+ square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"
";searchState.showResults(search)},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}const current_page=document.location.href.split("/").pop();const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("union","unions","Unions");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","));for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";if(window.rootPath!=="./"&&crate===window.currentCrate){link.className="current"}link.textContent=crate;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
"+window.NOTABLE_TRAITS[notable_ty]+"
"}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,e)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \
-the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \
- restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \
- enum, trait, type, macro, \
- and const.","Search functions by type signature (e.g., vec -> usize or \
- -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \
- your request: \"string\"","Look for functions that accept or return \
- slices and \
- arrays by writing \
- square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"
"}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
"}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
"+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.
`}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}function search(e,forced){if(e){e.preventDefault()}const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));showResults(execQuery(query,searchWords,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.map(type=>buildItemSearchType(type,lowercasePaths))}function buildItemSearchType(type,lowercasePaths){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;let pathIndex,generics;if(typeof type==="number"){pathIndex=type;generics=[]}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths)}if(pathIndex<0){return{id:pathIndex,ty:TY_GENERIC,path:null,generics,}}if(pathIndex===0){return{id:null,ty:null,path:null,generics,}}const item=lowercasePaths[pathIndex-1];return{id:buildTypeMapIndex(item.name),ty:item.ty,path:item.path,generics,}}function buildFunctionSearchType(functionSearchType,lowercasePaths){const INPUTS_DATA=0;const OUTPUT_DATA=1;if(functionSearchType===0){return null}let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}lowercasePaths.push({ty:ty,name:name.toLowerCase(),path:path});paths[i]={ty:ty,name:name,path:path}}lastPath="";len=itemTypes.length;for(let i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:buildFunctionSearchType(itemFunctionSearchTypes[i],lowercasePaths),id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),deprecated:deprecatedItems.has(i),implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=crateSize}return searchWords}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(undefined,true)}const searchWords=buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}return searchWords}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch({})}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/clone/trait.Clone.js b/main/trait.impl/core/clone/trait.Clone.js
new file mode 100644
index 00000000..023571d5
--- /dev/null
+++ b/main/trait.impl/core/clone/trait.Clone.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl Clone for ContainerToHost"],["impl Clone for Table"],["impl Clone for IptablesRule"],["impl<B> Clone for DFW<B>where\n B: FirewallBackend + Clone,\n DFW<B>: Process<B>,\n B::Defaults: Clone,"],["impl Clone for Family"],["impl Clone for ContainerToContainer"],["impl Clone for ContainerToWiderWorld"],["impl Clone for WiderWorldToContainer"],["impl Clone for ExposePort"],["impl Clone for Type"],["impl Clone for Initialization"],["impl Clone for ChainPolicy"],["impl Clone for Defaults"],["impl Clone for WiderWorldToContainerRule"],["impl Clone for ContainerDNATRule"],["impl Clone for GlobalDefaults"],["impl Clone for ContainerDNAT"],["impl Clone for Initialization"],["impl Clone for RuleVerdict"],["impl Clone for ExposePortBuilder"],["impl Clone for ContainerFilter"],["impl Clone for IptablesRuleDiscriminants"],["impl Clone for PolicyOrRule"],["impl Clone for ContainerToWiderWorldRule"],["impl Clone for ContainerToContainerRule"],["impl Clone for Defaults"],["impl Clone for Hook"],["impl Clone for ContainerToHostRule"],["impl Clone for ProcessingOptions"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/cmp/trait.Eq.js b/main/trait.impl/core/cmp/trait.Eq.js
new file mode 100644
index 00000000..60439e83
--- /dev/null
+++ b/main/trait.impl/core/cmp/trait.Eq.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl Eq for ContainerDNAT"],["impl Eq for ContainerToHost"],["impl Eq for ContainerToWiderWorld"],["impl Eq for Initialization"],["impl Eq for ExposePort"],["impl Eq for ProcessingOptions"],["impl Eq for GlobalDefaults"],["impl Eq for WiderWorldToContainerRule"],["impl Eq for RuleVerdict"],["impl Eq for ContainerToHostRule"],["impl Eq for ContainerToContainerRule"],["impl Eq for ContainerToContainer"],["impl Eq for ChainPolicy"],["impl Eq for IptablesRuleDiscriminants"],["impl Eq for Initialization"],["impl Eq for ContainerFilter"],["impl<B> Eq for DFW<B>where\n B: FirewallBackend + Eq,\n DFW<B>: Process<B>,\n B::Defaults: Eq,"],["impl Eq for Table"],["impl Eq for Defaults"],["impl Eq for ContainerDNATRule"],["impl Eq for ContainerToWiderWorldRule"],["impl Eq for WiderWorldToContainer"],["impl Eq for Defaults"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/cmp/trait.PartialEq.js b/main/trait.impl/core/cmp/trait.PartialEq.js
new file mode 100644
index 00000000..21179edd
--- /dev/null
+++ b/main/trait.impl/core/cmp/trait.PartialEq.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl PartialEq for WiderWorldToContainerRule"],["impl PartialEq for Initialization"],["impl PartialEq for ContainerToContainer"],["impl PartialEq for RuleVerdict"],["impl PartialEq for ContainerDNATRule"],["impl PartialEq for Table"],["impl PartialEq for WiderWorldToContainer"],["impl PartialEq for ContainerToHost"],["impl PartialEq for ContainerToWiderWorldRule"],["impl PartialEq for ContainerToWiderWorld"],["impl<B> PartialEq for DFW<B>where\n B: FirewallBackend + PartialEq,\n DFW<B>: Process<B>,\n B::Defaults: PartialEq,"],["impl PartialEq for ContainerDNAT"],["impl PartialEq for ContainerFilter"],["impl PartialEq for Defaults"],["impl PartialEq for ContainerToContainerRule"],["impl PartialEq for GlobalDefaults"],["impl PartialEq for Initialization"],["impl PartialEq for ContainerToHostRule"],["impl PartialEq for IptablesRuleDiscriminants"],["impl PartialEq for ProcessingOptions"],["impl PartialEq for ExposePort"],["impl PartialEq for ChainPolicy"],["impl PartialEq for Defaults"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/convert/trait.From.js b/main/trait.impl/core/convert/trait.From.js
new file mode 100644
index 00000000..697bfc76
--- /dev/null
+++ b/main/trait.impl/core/convert/trait.From.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl From<IptablesRule> for IptablesRuleDiscriminants"],["impl From<UninitializedFieldError> for ExposePortBuilderError"],["impl<'_enum> From<&'_enum IptablesRule> for IptablesRuleDiscriminants"],["impl From<String> for ExposePortBuilderError"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/convert/trait.TryFrom.js b/main/trait.impl/core/convert/trait.TryFrom.js
similarity index 72%
rename from main/implementors/core/convert/trait.TryFrom.js
rename to main/trait.impl/core/convert/trait.TryFrom.js
index 870b47cc..519748e0 100644
--- a/main/implementors/core/convert/trait.TryFrom.js
+++ b/main/trait.impl/core/convert/trait.TryFrom.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"dfw":[["impl TryFrom<&str> for RuleVerdict"],["impl TryFrom<&str> for ChainPolicy"]]
+"dfw":[["impl TryFrom<&str> for RuleVerdict"],["impl TryFrom<&str> for ChainPolicy"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/default/trait.Default.js b/main/trait.impl/core/default/trait.Default.js
new file mode 100644
index 00000000..d23675ff
--- /dev/null
+++ b/main/trait.impl/core/default/trait.Default.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl Default for ChainPolicy"],["impl Default for Table"],["impl Default for Initialization"],["impl Default for ExposePort"],["impl Default for ProcessingOptions"],["impl Default for ExposePortBuilder"],["impl Default for GlobalDefaults"],["impl Default for Defaults"],["impl Default for RuleVerdict"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/error/trait.Error.js b/main/trait.impl/core/error/trait.Error.js
similarity index 86%
rename from main/implementors/core/error/trait.Error.js
rename to main/trait.impl/core/error/trait.Error.js
index 90745128..9dd83d74 100644
--- a/main/implementors/core/error/trait.Error.js
+++ b/main/trait.impl/core/error/trait.Error.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"dfw":[["impl Error for ExposePortBuilderError"]]
+"dfw":[["impl Error for ExposePortBuilderError"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/fmt/trait.Debug.js b/main/trait.impl/core/fmt/trait.Debug.js
new file mode 100644
index 00000000..aeefc7db
--- /dev/null
+++ b/main/trait.impl/core/fmt/trait.Debug.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl Debug for GlobalDefaults"],["impl Debug for Type"],["impl Debug for PolicyOrRule"],["impl Debug for IptablesRule"],["impl Debug for ContainerToContainer"],["impl Debug for ContainerDNATRule"],["impl Debug for Initialization"],["impl Debug for Defaults"],["impl Debug for Family"],["impl Debug for Initialization"],["impl Debug for ProcessingOptions"],["impl Debug for ContainerFilter"],["impl Debug for ExposePortBuilderError"],["impl Debug for ContainerToWiderWorld"],["impl Debug for ExposePort"],["impl Debug for WiderWorldToContainer"],["impl Debug for Hook"],["impl Debug for ChainPolicy"],["impl Debug for Nftables"],["impl Debug for WiderWorldToContainerRule"],["impl Debug for ContainerToHost"],["impl Debug for RuleVerdict"],["impl Debug for ContainerToContainerRule"],["impl<B> Debug for DFW<B>where\n B: FirewallBackend + Debug,\n DFW<B>: Process<B>,\n B::Defaults: Debug,"],["impl Debug for ContainerToWiderWorldRule"],["impl Debug for ContainerToHostRule"],["impl Debug for IptablesRuleDiscriminants"],["impl Debug for ContainerDNAT"],["impl Debug for Table"],["impl Debug for DFWError"],["impl Debug for Defaults"],["impl Debug for Iptables"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/fmt/trait.Display.js b/main/trait.impl/core/fmt/trait.Display.js
new file mode 100644
index 00000000..852ab16f
--- /dev/null
+++ b/main/trait.impl/core/fmt/trait.Display.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl Display for ChainPolicy"],["impl Display for RuleVerdict"],["impl Display for Family"],["impl Display for Type"],["impl Display for Hook"],["impl Display for ExposePortBuilderError"],["impl Display for DFWError"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/hash/trait.Hash.js b/main/trait.impl/core/hash/trait.Hash.js
new file mode 100644
index 00000000..53060dcc
--- /dev/null
+++ b/main/trait.impl/core/hash/trait.Hash.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl Hash for ContainerToContainerRule"],["impl Hash for ContainerToContainer"],["impl Hash for WiderWorldToContainer"],["impl Hash for ExposePort"],["impl Hash for ChainPolicy"],["impl Hash for ContainerToWiderWorld"],["impl Hash for ContainerDNAT"],["impl Hash for GlobalDefaults"],["impl Hash for ContainerToHostRule"],["impl Hash for RuleVerdict"],["impl Hash for ContainerToWiderWorldRule"],["impl Hash for WiderWorldToContainerRule"],["impl Hash for Table"],["impl Hash for ContainerToHost"],["impl Hash for ContainerDNATRule"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/marker/trait.Copy.js b/main/trait.impl/core/marker/trait.Copy.js
new file mode 100644
index 00000000..40ce21c4
--- /dev/null
+++ b/main/trait.impl/core/marker/trait.Copy.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl Copy for RuleVerdict"],["impl Copy for Type"],["impl Copy for Family"],["impl Copy for ChainPolicy"],["impl Copy for Hook"],["impl Copy for IptablesRuleDiscriminants"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.Freeze.js b/main/trait.impl/core/marker/trait.Freeze.js
similarity index 100%
rename from main/implementors/core/marker/trait.Freeze.js
rename to main/trait.impl/core/marker/trait.Freeze.js
diff --git a/main/implementors/core/marker/trait.Send.js b/main/trait.impl/core/marker/trait.Send.js
similarity index 79%
rename from main/implementors/core/marker/trait.Send.js
rename to main/trait.impl/core/marker/trait.Send.js
index 41166a2f..9d002734 100644
--- a/main/implementors/core/marker/trait.Send.js
+++ b/main/trait.impl/core/marker/trait.Send.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"dfw":[["impl Send for DFWError",1,["dfw::errors::DFWError"]],["impl Send for Defaults",1,["dfw::iptables::types::Defaults"]],["impl Send for Initialization",1,["dfw::iptables::types::Initialization"]],["impl Send for Iptables",1,["dfw::iptables::Iptables"]],["impl Send for IptablesRule",1,["dfw::iptables::IptablesRule"]],["impl Send for IptablesRuleDiscriminants",1,["dfw::iptables::IptablesRuleDiscriminants"]],["impl Send for PolicyOrRule",1,["dfw::iptables::PolicyOrRule"]],["impl Send for Defaults",1,["dfw::nftables::types::Defaults"]],["impl Send for Table",1,["dfw::nftables::types::Table"]],["impl Send for Initialization",1,["dfw::nftables::types::Initialization"]],["impl Send for Nftables",1,["dfw::nftables::Nftables"]],["impl Send for Family",1,["dfw::nftables::Family"]],["impl Send for Type",1,["dfw::nftables::Type"]],["impl Send for Hook",1,["dfw::nftables::Hook"]],["impl<'a, B> Send for ProcessContext<'a, B>where\n <B as FirewallBackend>::Defaults: Sync,",1,["dfw::process::ProcessContext"]],["impl Send for ContainerFilter",1,["dfw::process::ContainerFilter"]],["impl Send for ProcessingOptions",1,["dfw::process::ProcessingOptions"]],["impl<B> Send for DFW<B>where\n <B as FirewallBackend>::Defaults: Send,",1,["dfw::types::DFW"]],["impl Send for GlobalDefaults",1,["dfw::types::GlobalDefaults"]],["impl Send for ContainerToContainer",1,["dfw::types::ContainerToContainer"]],["impl Send for ContainerToContainerRule",1,["dfw::types::ContainerToContainerRule"]],["impl Send for ContainerToWiderWorld",1,["dfw::types::ContainerToWiderWorld"]],["impl Send for ContainerToWiderWorldRule",1,["dfw::types::ContainerToWiderWorldRule"]],["impl Send for ContainerToHost",1,["dfw::types::ContainerToHost"]],["impl Send for ContainerToHostRule",1,["dfw::types::ContainerToHostRule"]],["impl Send for WiderWorldToContainer",1,["dfw::types::WiderWorldToContainer"]],["impl Send for WiderWorldToContainerRule",1,["dfw::types::WiderWorldToContainerRule"]],["impl Send for ExposePort",1,["dfw::types::ExposePort"]],["impl Send for ExposePortBuilder",1,["dfw::types::ExposePortBuilder"]],["impl Send for ExposePortBuilderError",1,["dfw::types::ExposePortBuilderError"]],["impl Send for ContainerDNAT",1,["dfw::types::ContainerDNAT"]],["impl Send for ContainerDNATRule",1,["dfw::types::ContainerDNATRule"]],["impl Send for ChainPolicy",1,["dfw::types::ChainPolicy"]],["impl Send for RuleVerdict",1,["dfw::types::RuleVerdict"]]]
+"dfw":[["impl Send for DFWError",1,["dfw::errors::DFWError"]],["impl Send for Defaults",1,["dfw::iptables::types::Defaults"]],["impl Send for Initialization",1,["dfw::iptables::types::Initialization"]],["impl Send for Iptables",1,["dfw::iptables::Iptables"]],["impl Send for IptablesRule",1,["dfw::iptables::IptablesRule"]],["impl Send for IptablesRuleDiscriminants",1,["dfw::iptables::IptablesRuleDiscriminants"]],["impl Send for PolicyOrRule",1,["dfw::iptables::PolicyOrRule"]],["impl Send for Defaults",1,["dfw::nftables::types::Defaults"]],["impl Send for Table",1,["dfw::nftables::types::Table"]],["impl Send for Initialization",1,["dfw::nftables::types::Initialization"]],["impl Send for Nftables",1,["dfw::nftables::Nftables"]],["impl Send for Family",1,["dfw::nftables::Family"]],["impl Send for Type",1,["dfw::nftables::Type"]],["impl Send for Hook",1,["dfw::nftables::Hook"]],["impl<'a, B> Send for ProcessContext<'a, B>where\n <B as FirewallBackend>::Defaults: Sync,",1,["dfw::process::ProcessContext"]],["impl Send for ContainerFilter",1,["dfw::process::ContainerFilter"]],["impl Send for ProcessingOptions",1,["dfw::process::ProcessingOptions"]],["impl<B> Send for DFW<B>where\n <B as FirewallBackend>::Defaults: Send,",1,["dfw::types::DFW"]],["impl Send for GlobalDefaults",1,["dfw::types::GlobalDefaults"]],["impl Send for ContainerToContainer",1,["dfw::types::ContainerToContainer"]],["impl Send for ContainerToContainerRule",1,["dfw::types::ContainerToContainerRule"]],["impl Send for ContainerToWiderWorld",1,["dfw::types::ContainerToWiderWorld"]],["impl Send for ContainerToWiderWorldRule",1,["dfw::types::ContainerToWiderWorldRule"]],["impl Send for ContainerToHost",1,["dfw::types::ContainerToHost"]],["impl Send for ContainerToHostRule",1,["dfw::types::ContainerToHostRule"]],["impl Send for WiderWorldToContainer",1,["dfw::types::WiderWorldToContainer"]],["impl Send for WiderWorldToContainerRule",1,["dfw::types::WiderWorldToContainerRule"]],["impl Send for ExposePort",1,["dfw::types::ExposePort"]],["impl Send for ExposePortBuilder",1,["dfw::types::ExposePortBuilder"]],["impl Send for ExposePortBuilderError",1,["dfw::types::ExposePortBuilderError"]],["impl Send for ContainerDNAT",1,["dfw::types::ContainerDNAT"]],["impl Send for ContainerDNATRule",1,["dfw::types::ContainerDNATRule"]],["impl Send for ChainPolicy",1,["dfw::types::ChainPolicy"]],["impl Send for RuleVerdict",1,["dfw::types::RuleVerdict"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/marker/trait.StructuralEq.js b/main/trait.impl/core/marker/trait.StructuralEq.js
new file mode 100644
index 00000000..7fe73d09
--- /dev/null
+++ b/main/trait.impl/core/marker/trait.StructuralEq.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl StructuralEq for ContainerToWiderWorld"],["impl StructuralEq for ChainPolicy"],["impl StructuralEq for ContainerToHostRule"],["impl StructuralEq for WiderWorldToContainer"],["impl StructuralEq for Table"],["impl StructuralEq for ContainerDNATRule"],["impl StructuralEq for IptablesRuleDiscriminants"],["impl StructuralEq for Initialization"],["impl StructuralEq for ContainerToHost"],["impl StructuralEq for ContainerToContainerRule"],["impl StructuralEq for RuleVerdict"],["impl<B> StructuralEq for DFW<B>where\n B: FirewallBackend,\n DFW<B>: Process<B>,"],["impl StructuralEq for Initialization"],["impl StructuralEq for WiderWorldToContainerRule"],["impl StructuralEq for ContainerToWiderWorldRule"],["impl StructuralEq for Defaults"],["impl StructuralEq for ExposePort"],["impl StructuralEq for ContainerDNAT"],["impl StructuralEq for ContainerToContainer"],["impl StructuralEq for Defaults"],["impl StructuralEq for ProcessingOptions"],["impl StructuralEq for ContainerFilter"],["impl StructuralEq for GlobalDefaults"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/trait.impl/core/marker/trait.StructuralPartialEq.js b/main/trait.impl/core/marker/trait.StructuralPartialEq.js
new file mode 100644
index 00000000..f23dc2e1
--- /dev/null
+++ b/main/trait.impl/core/marker/trait.StructuralPartialEq.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl StructuralPartialEq for ContainerToWiderWorld"],["impl StructuralPartialEq for ContainerToHostRule"],["impl StructuralPartialEq for RuleVerdict"],["impl StructuralPartialEq for IptablesRuleDiscriminants"],["impl StructuralPartialEq for Table"],["impl StructuralPartialEq for ContainerToHost"],["impl StructuralPartialEq for ExposePort"],["impl StructuralPartialEq for ProcessingOptions"],["impl StructuralPartialEq for Initialization"],["impl StructuralPartialEq for WiderWorldToContainerRule"],["impl StructuralPartialEq for Defaults"],["impl<B> StructuralPartialEq for DFW<B>where\n B: FirewallBackend,\n DFW<B>: Process<B>,"],["impl StructuralPartialEq for ContainerToContainerRule"],["impl StructuralPartialEq for ContainerDNATRule"],["impl StructuralPartialEq for GlobalDefaults"],["impl StructuralPartialEq for ContainerToContainer"],["impl StructuralPartialEq for Defaults"],["impl StructuralPartialEq for ChainPolicy"],["impl StructuralPartialEq for ContainerFilter"],["impl StructuralPartialEq for ContainerDNAT"],["impl StructuralPartialEq for WiderWorldToContainer"],["impl StructuralPartialEq for Initialization"],["impl StructuralPartialEq for ContainerToWiderWorldRule"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.Sync.js b/main/trait.impl/core/marker/trait.Sync.js
similarity index 79%
rename from main/implementors/core/marker/trait.Sync.js
rename to main/trait.impl/core/marker/trait.Sync.js
index b1d571a3..a23a50ff 100644
--- a/main/implementors/core/marker/trait.Sync.js
+++ b/main/trait.impl/core/marker/trait.Sync.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"dfw":[["impl Sync for DFWError",1,["dfw::errors::DFWError"]],["impl Sync for Defaults",1,["dfw::iptables::types::Defaults"]],["impl Sync for Initialization",1,["dfw::iptables::types::Initialization"]],["impl Sync for Iptables",1,["dfw::iptables::Iptables"]],["impl Sync for IptablesRule",1,["dfw::iptables::IptablesRule"]],["impl Sync for IptablesRuleDiscriminants",1,["dfw::iptables::IptablesRuleDiscriminants"]],["impl Sync for PolicyOrRule",1,["dfw::iptables::PolicyOrRule"]],["impl Sync for Defaults",1,["dfw::nftables::types::Defaults"]],["impl Sync for Table",1,["dfw::nftables::types::Table"]],["impl Sync for Initialization",1,["dfw::nftables::types::Initialization"]],["impl Sync for Nftables",1,["dfw::nftables::Nftables"]],["impl Sync for Family",1,["dfw::nftables::Family"]],["impl Sync for Type",1,["dfw::nftables::Type"]],["impl Sync for Hook",1,["dfw::nftables::Hook"]],["impl<'a, B> Sync for ProcessContext<'a, B>where\n <B as FirewallBackend>::Defaults: Sync,",1,["dfw::process::ProcessContext"]],["impl Sync for ContainerFilter",1,["dfw::process::ContainerFilter"]],["impl Sync for ProcessingOptions",1,["dfw::process::ProcessingOptions"]],["impl<B> Sync for DFW<B>where\n <B as FirewallBackend>::Defaults: Sync,",1,["dfw::types::DFW"]],["impl Sync for GlobalDefaults",1,["dfw::types::GlobalDefaults"]],["impl Sync for ContainerToContainer",1,["dfw::types::ContainerToContainer"]],["impl Sync for ContainerToContainerRule",1,["dfw::types::ContainerToContainerRule"]],["impl Sync for ContainerToWiderWorld",1,["dfw::types::ContainerToWiderWorld"]],["impl Sync for ContainerToWiderWorldRule",1,["dfw::types::ContainerToWiderWorldRule"]],["impl Sync for ContainerToHost",1,["dfw::types::ContainerToHost"]],["impl Sync for ContainerToHostRule",1,["dfw::types::ContainerToHostRule"]],["impl Sync for WiderWorldToContainer",1,["dfw::types::WiderWorldToContainer"]],["impl Sync for WiderWorldToContainerRule",1,["dfw::types::WiderWorldToContainerRule"]],["impl Sync for ExposePort",1,["dfw::types::ExposePort"]],["impl Sync for ExposePortBuilder",1,["dfw::types::ExposePortBuilder"]],["impl Sync for ExposePortBuilderError",1,["dfw::types::ExposePortBuilderError"]],["impl Sync for ContainerDNAT",1,["dfw::types::ContainerDNAT"]],["impl Sync for ContainerDNATRule",1,["dfw::types::ContainerDNATRule"]],["impl Sync for ChainPolicy",1,["dfw::types::ChainPolicy"]],["impl Sync for RuleVerdict",1,["dfw::types::RuleVerdict"]]]
+"dfw":[["impl Sync for DFWError",1,["dfw::errors::DFWError"]],["impl Sync for Defaults",1,["dfw::iptables::types::Defaults"]],["impl Sync for Initialization",1,["dfw::iptables::types::Initialization"]],["impl Sync for Iptables",1,["dfw::iptables::Iptables"]],["impl Sync for IptablesRule",1,["dfw::iptables::IptablesRule"]],["impl Sync for IptablesRuleDiscriminants",1,["dfw::iptables::IptablesRuleDiscriminants"]],["impl Sync for PolicyOrRule",1,["dfw::iptables::PolicyOrRule"]],["impl Sync for Defaults",1,["dfw::nftables::types::Defaults"]],["impl Sync for Table",1,["dfw::nftables::types::Table"]],["impl Sync for Initialization",1,["dfw::nftables::types::Initialization"]],["impl Sync for Nftables",1,["dfw::nftables::Nftables"]],["impl Sync for Family",1,["dfw::nftables::Family"]],["impl Sync for Type",1,["dfw::nftables::Type"]],["impl Sync for Hook",1,["dfw::nftables::Hook"]],["impl<'a, B> Sync for ProcessContext<'a, B>where\n <B as FirewallBackend>::Defaults: Sync,",1,["dfw::process::ProcessContext"]],["impl Sync for ContainerFilter",1,["dfw::process::ContainerFilter"]],["impl Sync for ProcessingOptions",1,["dfw::process::ProcessingOptions"]],["impl<B> Sync for DFW<B>where\n <B as FirewallBackend>::Defaults: Sync,",1,["dfw::types::DFW"]],["impl Sync for GlobalDefaults",1,["dfw::types::GlobalDefaults"]],["impl Sync for ContainerToContainer",1,["dfw::types::ContainerToContainer"]],["impl Sync for ContainerToContainerRule",1,["dfw::types::ContainerToContainerRule"]],["impl Sync for ContainerToWiderWorld",1,["dfw::types::ContainerToWiderWorld"]],["impl Sync for ContainerToWiderWorldRule",1,["dfw::types::ContainerToWiderWorldRule"]],["impl Sync for ContainerToHost",1,["dfw::types::ContainerToHost"]],["impl Sync for ContainerToHostRule",1,["dfw::types::ContainerToHostRule"]],["impl Sync for WiderWorldToContainer",1,["dfw::types::WiderWorldToContainer"]],["impl Sync for WiderWorldToContainerRule",1,["dfw::types::WiderWorldToContainerRule"]],["impl Sync for ExposePort",1,["dfw::types::ExposePort"]],["impl Sync for ExposePortBuilder",1,["dfw::types::ExposePortBuilder"]],["impl Sync for ExposePortBuilderError",1,["dfw::types::ExposePortBuilderError"]],["impl Sync for ContainerDNAT",1,["dfw::types::ContainerDNAT"]],["impl Sync for ContainerDNATRule",1,["dfw::types::ContainerDNATRule"]],["impl Sync for ChainPolicy",1,["dfw::types::ChainPolicy"]],["impl Sync for RuleVerdict",1,["dfw::types::RuleVerdict"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.Unpin.js b/main/trait.impl/core/marker/trait.Unpin.js
similarity index 80%
rename from main/implementors/core/marker/trait.Unpin.js
rename to main/trait.impl/core/marker/trait.Unpin.js
index 43af8e0c..64960217 100644
--- a/main/implementors/core/marker/trait.Unpin.js
+++ b/main/trait.impl/core/marker/trait.Unpin.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"dfw":[["impl Unpin for DFWError",1,["dfw::errors::DFWError"]],["impl Unpin for Defaults",1,["dfw::iptables::types::Defaults"]],["impl Unpin for Initialization",1,["dfw::iptables::types::Initialization"]],["impl Unpin for Iptables",1,["dfw::iptables::Iptables"]],["impl Unpin for IptablesRule",1,["dfw::iptables::IptablesRule"]],["impl Unpin for IptablesRuleDiscriminants",1,["dfw::iptables::IptablesRuleDiscriminants"]],["impl Unpin for PolicyOrRule",1,["dfw::iptables::PolicyOrRule"]],["impl Unpin for Defaults",1,["dfw::nftables::types::Defaults"]],["impl Unpin for Table",1,["dfw::nftables::types::Table"]],["impl Unpin for Initialization",1,["dfw::nftables::types::Initialization"]],["impl Unpin for Nftables",1,["dfw::nftables::Nftables"]],["impl Unpin for Family",1,["dfw::nftables::Family"]],["impl Unpin for Type",1,["dfw::nftables::Type"]],["impl Unpin for Hook",1,["dfw::nftables::Hook"]],["impl<'a, B> Unpin for ProcessContext<'a, B>",1,["dfw::process::ProcessContext"]],["impl Unpin for ContainerFilter",1,["dfw::process::ContainerFilter"]],["impl Unpin for ProcessingOptions",1,["dfw::process::ProcessingOptions"]],["impl<B> Unpin for DFW<B>where\n <B as FirewallBackend>::Defaults: Unpin,",1,["dfw::types::DFW"]],["impl Unpin for GlobalDefaults",1,["dfw::types::GlobalDefaults"]],["impl Unpin for ContainerToContainer",1,["dfw::types::ContainerToContainer"]],["impl Unpin for ContainerToContainerRule",1,["dfw::types::ContainerToContainerRule"]],["impl Unpin for ContainerToWiderWorld",1,["dfw::types::ContainerToWiderWorld"]],["impl Unpin for ContainerToWiderWorldRule",1,["dfw::types::ContainerToWiderWorldRule"]],["impl Unpin for ContainerToHost",1,["dfw::types::ContainerToHost"]],["impl Unpin for ContainerToHostRule",1,["dfw::types::ContainerToHostRule"]],["impl Unpin for WiderWorldToContainer",1,["dfw::types::WiderWorldToContainer"]],["impl Unpin for WiderWorldToContainerRule",1,["dfw::types::WiderWorldToContainerRule"]],["impl Unpin for ExposePort",1,["dfw::types::ExposePort"]],["impl Unpin for ExposePortBuilder",1,["dfw::types::ExposePortBuilder"]],["impl Unpin for ExposePortBuilderError",1,["dfw::types::ExposePortBuilderError"]],["impl Unpin for ContainerDNAT",1,["dfw::types::ContainerDNAT"]],["impl Unpin for ContainerDNATRule",1,["dfw::types::ContainerDNATRule"]],["impl Unpin for ChainPolicy",1,["dfw::types::ChainPolicy"]],["impl Unpin for RuleVerdict",1,["dfw::types::RuleVerdict"]]]
+"dfw":[["impl Unpin for DFWError",1,["dfw::errors::DFWError"]],["impl Unpin for Defaults",1,["dfw::iptables::types::Defaults"]],["impl Unpin for Initialization",1,["dfw::iptables::types::Initialization"]],["impl Unpin for Iptables",1,["dfw::iptables::Iptables"]],["impl Unpin for IptablesRule",1,["dfw::iptables::IptablesRule"]],["impl Unpin for IptablesRuleDiscriminants",1,["dfw::iptables::IptablesRuleDiscriminants"]],["impl Unpin for PolicyOrRule",1,["dfw::iptables::PolicyOrRule"]],["impl Unpin for Defaults",1,["dfw::nftables::types::Defaults"]],["impl Unpin for Table",1,["dfw::nftables::types::Table"]],["impl Unpin for Initialization",1,["dfw::nftables::types::Initialization"]],["impl Unpin for Nftables",1,["dfw::nftables::Nftables"]],["impl Unpin for Family",1,["dfw::nftables::Family"]],["impl Unpin for Type",1,["dfw::nftables::Type"]],["impl Unpin for Hook",1,["dfw::nftables::Hook"]],["impl<'a, B> Unpin for ProcessContext<'a, B>",1,["dfw::process::ProcessContext"]],["impl Unpin for ContainerFilter",1,["dfw::process::ContainerFilter"]],["impl Unpin for ProcessingOptions",1,["dfw::process::ProcessingOptions"]],["impl<B> Unpin for DFW<B>where\n <B as FirewallBackend>::Defaults: Unpin,",1,["dfw::types::DFW"]],["impl Unpin for GlobalDefaults",1,["dfw::types::GlobalDefaults"]],["impl Unpin for ContainerToContainer",1,["dfw::types::ContainerToContainer"]],["impl Unpin for ContainerToContainerRule",1,["dfw::types::ContainerToContainerRule"]],["impl Unpin for ContainerToWiderWorld",1,["dfw::types::ContainerToWiderWorld"]],["impl Unpin for ContainerToWiderWorldRule",1,["dfw::types::ContainerToWiderWorldRule"]],["impl Unpin for ContainerToHost",1,["dfw::types::ContainerToHost"]],["impl Unpin for ContainerToHostRule",1,["dfw::types::ContainerToHostRule"]],["impl Unpin for WiderWorldToContainer",1,["dfw::types::WiderWorldToContainer"]],["impl Unpin for WiderWorldToContainerRule",1,["dfw::types::WiderWorldToContainerRule"]],["impl Unpin for ExposePort",1,["dfw::types::ExposePort"]],["impl Unpin for ExposePortBuilder",1,["dfw::types::ExposePortBuilder"]],["impl Unpin for ExposePortBuilderError",1,["dfw::types::ExposePortBuilderError"]],["impl Unpin for ContainerDNAT",1,["dfw::types::ContainerDNAT"]],["impl Unpin for ContainerDNATRule",1,["dfw::types::ContainerDNATRule"]],["impl Unpin for ChainPolicy",1,["dfw::types::ChainPolicy"]],["impl Unpin for RuleVerdict",1,["dfw::types::RuleVerdict"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/main/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
similarity index 81%
rename from main/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
rename to main/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
index beacb156..7a36fbcc 100644
--- a/main/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/main/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"dfw":[["impl RefUnwindSafe for DFWError",1,["dfw::errors::DFWError"]],["impl RefUnwindSafe for Defaults",1,["dfw::iptables::types::Defaults"]],["impl RefUnwindSafe for Initialization",1,["dfw::iptables::types::Initialization"]],["impl RefUnwindSafe for Iptables",1,["dfw::iptables::Iptables"]],["impl RefUnwindSafe for IptablesRule",1,["dfw::iptables::IptablesRule"]],["impl RefUnwindSafe for IptablesRuleDiscriminants",1,["dfw::iptables::IptablesRuleDiscriminants"]],["impl RefUnwindSafe for PolicyOrRule",1,["dfw::iptables::PolicyOrRule"]],["impl RefUnwindSafe for Defaults",1,["dfw::nftables::types::Defaults"]],["impl RefUnwindSafe for Table",1,["dfw::nftables::types::Table"]],["impl RefUnwindSafe for Initialization",1,["dfw::nftables::types::Initialization"]],["impl RefUnwindSafe for Nftables",1,["dfw::nftables::Nftables"]],["impl RefUnwindSafe for Family",1,["dfw::nftables::Family"]],["impl RefUnwindSafe for Type",1,["dfw::nftables::Type"]],["impl RefUnwindSafe for Hook",1,["dfw::nftables::Hook"]],["impl<'a, B> !RefUnwindSafe for ProcessContext<'a, B>",1,["dfw::process::ProcessContext"]],["impl RefUnwindSafe for ContainerFilter",1,["dfw::process::ContainerFilter"]],["impl RefUnwindSafe for ProcessingOptions",1,["dfw::process::ProcessingOptions"]],["impl<B> RefUnwindSafe for DFW<B>where\n <B as FirewallBackend>::Defaults: RefUnwindSafe,",1,["dfw::types::DFW"]],["impl RefUnwindSafe for GlobalDefaults",1,["dfw::types::GlobalDefaults"]],["impl RefUnwindSafe for ContainerToContainer",1,["dfw::types::ContainerToContainer"]],["impl RefUnwindSafe for ContainerToContainerRule",1,["dfw::types::ContainerToContainerRule"]],["impl RefUnwindSafe for ContainerToWiderWorld",1,["dfw::types::ContainerToWiderWorld"]],["impl RefUnwindSafe for ContainerToWiderWorldRule",1,["dfw::types::ContainerToWiderWorldRule"]],["impl RefUnwindSafe for ContainerToHost",1,["dfw::types::ContainerToHost"]],["impl RefUnwindSafe for ContainerToHostRule",1,["dfw::types::ContainerToHostRule"]],["impl RefUnwindSafe for WiderWorldToContainer",1,["dfw::types::WiderWorldToContainer"]],["impl RefUnwindSafe for WiderWorldToContainerRule",1,["dfw::types::WiderWorldToContainerRule"]],["impl RefUnwindSafe for ExposePort",1,["dfw::types::ExposePort"]],["impl RefUnwindSafe for ExposePortBuilder",1,["dfw::types::ExposePortBuilder"]],["impl RefUnwindSafe for ExposePortBuilderError",1,["dfw::types::ExposePortBuilderError"]],["impl RefUnwindSafe for ContainerDNAT",1,["dfw::types::ContainerDNAT"]],["impl RefUnwindSafe for ContainerDNATRule",1,["dfw::types::ContainerDNATRule"]],["impl RefUnwindSafe for ChainPolicy",1,["dfw::types::ChainPolicy"]],["impl RefUnwindSafe for RuleVerdict",1,["dfw::types::RuleVerdict"]]]
+"dfw":[["impl RefUnwindSafe for DFWError",1,["dfw::errors::DFWError"]],["impl RefUnwindSafe for Defaults",1,["dfw::iptables::types::Defaults"]],["impl RefUnwindSafe for Initialization",1,["dfw::iptables::types::Initialization"]],["impl RefUnwindSafe for Iptables",1,["dfw::iptables::Iptables"]],["impl RefUnwindSafe for IptablesRule",1,["dfw::iptables::IptablesRule"]],["impl RefUnwindSafe for IptablesRuleDiscriminants",1,["dfw::iptables::IptablesRuleDiscriminants"]],["impl RefUnwindSafe for PolicyOrRule",1,["dfw::iptables::PolicyOrRule"]],["impl RefUnwindSafe for Defaults",1,["dfw::nftables::types::Defaults"]],["impl RefUnwindSafe for Table",1,["dfw::nftables::types::Table"]],["impl RefUnwindSafe for Initialization",1,["dfw::nftables::types::Initialization"]],["impl RefUnwindSafe for Nftables",1,["dfw::nftables::Nftables"]],["impl RefUnwindSafe for Family",1,["dfw::nftables::Family"]],["impl RefUnwindSafe for Type",1,["dfw::nftables::Type"]],["impl RefUnwindSafe for Hook",1,["dfw::nftables::Hook"]],["impl<'a, B> !RefUnwindSafe for ProcessContext<'a, B>",1,["dfw::process::ProcessContext"]],["impl RefUnwindSafe for ContainerFilter",1,["dfw::process::ContainerFilter"]],["impl RefUnwindSafe for ProcessingOptions",1,["dfw::process::ProcessingOptions"]],["impl<B> RefUnwindSafe for DFW<B>where\n <B as FirewallBackend>::Defaults: RefUnwindSafe,",1,["dfw::types::DFW"]],["impl RefUnwindSafe for GlobalDefaults",1,["dfw::types::GlobalDefaults"]],["impl RefUnwindSafe for ContainerToContainer",1,["dfw::types::ContainerToContainer"]],["impl RefUnwindSafe for ContainerToContainerRule",1,["dfw::types::ContainerToContainerRule"]],["impl RefUnwindSafe for ContainerToWiderWorld",1,["dfw::types::ContainerToWiderWorld"]],["impl RefUnwindSafe for ContainerToWiderWorldRule",1,["dfw::types::ContainerToWiderWorldRule"]],["impl RefUnwindSafe for ContainerToHost",1,["dfw::types::ContainerToHost"]],["impl RefUnwindSafe for ContainerToHostRule",1,["dfw::types::ContainerToHostRule"]],["impl RefUnwindSafe for WiderWorldToContainer",1,["dfw::types::WiderWorldToContainer"]],["impl RefUnwindSafe for WiderWorldToContainerRule",1,["dfw::types::WiderWorldToContainerRule"]],["impl RefUnwindSafe for ExposePort",1,["dfw::types::ExposePort"]],["impl RefUnwindSafe for ExposePortBuilder",1,["dfw::types::ExposePortBuilder"]],["impl RefUnwindSafe for ExposePortBuilderError",1,["dfw::types::ExposePortBuilderError"]],["impl RefUnwindSafe for ContainerDNAT",1,["dfw::types::ContainerDNAT"]],["impl RefUnwindSafe for ContainerDNATRule",1,["dfw::types::ContainerDNATRule"]],["impl RefUnwindSafe for ChainPolicy",1,["dfw::types::ChainPolicy"]],["impl RefUnwindSafe for RuleVerdict",1,["dfw::types::RuleVerdict"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/main/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
similarity index 82%
rename from main/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
rename to main/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
index bd870b38..299038bd 100644
--- a/main/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/main/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"dfw":[["impl UnwindSafe for DFWError",1,["dfw::errors::DFWError"]],["impl UnwindSafe for Defaults",1,["dfw::iptables::types::Defaults"]],["impl UnwindSafe for Initialization",1,["dfw::iptables::types::Initialization"]],["impl UnwindSafe for Iptables",1,["dfw::iptables::Iptables"]],["impl UnwindSafe for IptablesRule",1,["dfw::iptables::IptablesRule"]],["impl UnwindSafe for IptablesRuleDiscriminants",1,["dfw::iptables::IptablesRuleDiscriminants"]],["impl UnwindSafe for PolicyOrRule",1,["dfw::iptables::PolicyOrRule"]],["impl UnwindSafe for Defaults",1,["dfw::nftables::types::Defaults"]],["impl UnwindSafe for Table",1,["dfw::nftables::types::Table"]],["impl UnwindSafe for Initialization",1,["dfw::nftables::types::Initialization"]],["impl UnwindSafe for Nftables",1,["dfw::nftables::Nftables"]],["impl UnwindSafe for Family",1,["dfw::nftables::Family"]],["impl UnwindSafe for Type",1,["dfw::nftables::Type"]],["impl UnwindSafe for Hook",1,["dfw::nftables::Hook"]],["impl<'a, B> !UnwindSafe for ProcessContext<'a, B>",1,["dfw::process::ProcessContext"]],["impl UnwindSafe for ContainerFilter",1,["dfw::process::ContainerFilter"]],["impl UnwindSafe for ProcessingOptions",1,["dfw::process::ProcessingOptions"]],["impl<B> UnwindSafe for DFW<B>where\n <B as FirewallBackend>::Defaults: UnwindSafe,",1,["dfw::types::DFW"]],["impl UnwindSafe for GlobalDefaults",1,["dfw::types::GlobalDefaults"]],["impl UnwindSafe for ContainerToContainer",1,["dfw::types::ContainerToContainer"]],["impl UnwindSafe for ContainerToContainerRule",1,["dfw::types::ContainerToContainerRule"]],["impl UnwindSafe for ContainerToWiderWorld",1,["dfw::types::ContainerToWiderWorld"]],["impl UnwindSafe for ContainerToWiderWorldRule",1,["dfw::types::ContainerToWiderWorldRule"]],["impl UnwindSafe for ContainerToHost",1,["dfw::types::ContainerToHost"]],["impl UnwindSafe for ContainerToHostRule",1,["dfw::types::ContainerToHostRule"]],["impl UnwindSafe for WiderWorldToContainer",1,["dfw::types::WiderWorldToContainer"]],["impl UnwindSafe for WiderWorldToContainerRule",1,["dfw::types::WiderWorldToContainerRule"]],["impl UnwindSafe for ExposePort",1,["dfw::types::ExposePort"]],["impl UnwindSafe for ExposePortBuilder",1,["dfw::types::ExposePortBuilder"]],["impl UnwindSafe for ExposePortBuilderError",1,["dfw::types::ExposePortBuilderError"]],["impl UnwindSafe for ContainerDNAT",1,["dfw::types::ContainerDNAT"]],["impl UnwindSafe for ContainerDNATRule",1,["dfw::types::ContainerDNATRule"]],["impl UnwindSafe for ChainPolicy",1,["dfw::types::ChainPolicy"]],["impl UnwindSafe for RuleVerdict",1,["dfw::types::RuleVerdict"]]]
+"dfw":[["impl UnwindSafe for DFWError",1,["dfw::errors::DFWError"]],["impl UnwindSafe for Defaults",1,["dfw::iptables::types::Defaults"]],["impl UnwindSafe for Initialization",1,["dfw::iptables::types::Initialization"]],["impl UnwindSafe for Iptables",1,["dfw::iptables::Iptables"]],["impl UnwindSafe for IptablesRule",1,["dfw::iptables::IptablesRule"]],["impl UnwindSafe for IptablesRuleDiscriminants",1,["dfw::iptables::IptablesRuleDiscriminants"]],["impl UnwindSafe for PolicyOrRule",1,["dfw::iptables::PolicyOrRule"]],["impl UnwindSafe for Defaults",1,["dfw::nftables::types::Defaults"]],["impl UnwindSafe for Table",1,["dfw::nftables::types::Table"]],["impl UnwindSafe for Initialization",1,["dfw::nftables::types::Initialization"]],["impl UnwindSafe for Nftables",1,["dfw::nftables::Nftables"]],["impl UnwindSafe for Family",1,["dfw::nftables::Family"]],["impl UnwindSafe for Type",1,["dfw::nftables::Type"]],["impl UnwindSafe for Hook",1,["dfw::nftables::Hook"]],["impl<'a, B> !UnwindSafe for ProcessContext<'a, B>",1,["dfw::process::ProcessContext"]],["impl UnwindSafe for ContainerFilter",1,["dfw::process::ContainerFilter"]],["impl UnwindSafe for ProcessingOptions",1,["dfw::process::ProcessingOptions"]],["impl<B> UnwindSafe for DFW<B>where\n <B as FirewallBackend>::Defaults: UnwindSafe,",1,["dfw::types::DFW"]],["impl UnwindSafe for GlobalDefaults",1,["dfw::types::GlobalDefaults"]],["impl UnwindSafe for ContainerToContainer",1,["dfw::types::ContainerToContainer"]],["impl UnwindSafe for ContainerToContainerRule",1,["dfw::types::ContainerToContainerRule"]],["impl UnwindSafe for ContainerToWiderWorld",1,["dfw::types::ContainerToWiderWorld"]],["impl UnwindSafe for ContainerToWiderWorldRule",1,["dfw::types::ContainerToWiderWorldRule"]],["impl UnwindSafe for ContainerToHost",1,["dfw::types::ContainerToHost"]],["impl UnwindSafe for ContainerToHostRule",1,["dfw::types::ContainerToHostRule"]],["impl UnwindSafe for WiderWorldToContainer",1,["dfw::types::WiderWorldToContainer"]],["impl UnwindSafe for WiderWorldToContainerRule",1,["dfw::types::WiderWorldToContainerRule"]],["impl UnwindSafe for ExposePort",1,["dfw::types::ExposePort"]],["impl UnwindSafe for ExposePortBuilder",1,["dfw::types::ExposePortBuilder"]],["impl UnwindSafe for ExposePortBuilderError",1,["dfw::types::ExposePortBuilderError"]],["impl UnwindSafe for ContainerDNAT",1,["dfw::types::ContainerDNAT"]],["impl UnwindSafe for ContainerDNATRule",1,["dfw::types::ContainerDNATRule"]],["impl UnwindSafe for ChainPolicy",1,["dfw::types::ChainPolicy"]],["impl UnwindSafe for RuleVerdict",1,["dfw::types::RuleVerdict"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/str/traits/trait.FromStr.js b/main/trait.impl/core/str/traits/trait.FromStr.js
similarity index 60%
rename from main/implementors/core/str/traits/trait.FromStr.js
rename to main/trait.impl/core/str/traits/trait.FromStr.js
index 5c5c293f..72597f9e 100644
--- a/main/implementors/core/str/traits/trait.FromStr.js
+++ b/main/trait.impl/core/str/traits/trait.FromStr.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"dfw":[["impl FromStr for ExposePort"],["impl FromStr for RuleVerdict"],["impl FromStr for ChainPolicy"]]
+"dfw":[["impl FromStr for ExposePort"],["impl FromStr for ChainPolicy"],["impl FromStr for RuleVerdict"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/dfw/process/trait.Process.js b/main/trait.impl/dfw/process/trait.Process.js
similarity index 100%
rename from main/implementors/dfw/process/trait.Process.js
rename to main/trait.impl/dfw/process/trait.Process.js
diff --git a/main/implementors/dfw/trait.FirewallBackend.js b/main/trait.impl/dfw/trait.FirewallBackend.js
similarity index 100%
rename from main/implementors/dfw/trait.FirewallBackend.js
rename to main/trait.impl/dfw/trait.FirewallBackend.js
diff --git a/main/implementors/dfw/util/trait.FutureExt.js b/main/trait.impl/dfw/util/trait.FutureExt.js
similarity index 100%
rename from main/implementors/dfw/util/trait.FutureExt.js
rename to main/trait.impl/dfw/util/trait.FutureExt.js
diff --git a/main/implementors/failure/trait.Fail.js b/main/trait.impl/failure/trait.Fail.js
similarity index 100%
rename from main/implementors/failure/trait.Fail.js
rename to main/trait.impl/failure/trait.Fail.js
diff --git a/main/trait.impl/serde/de/trait.Deserialize.js b/main/trait.impl/serde/de/trait.Deserialize.js
new file mode 100644
index 00000000..4eaaef72
--- /dev/null
+++ b/main/trait.impl/serde/de/trait.Deserialize.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"dfw":[["impl<'de> Deserialize<'de> for GlobalDefaults"],["impl<'de> Deserialize<'de> for Table"],["impl<'de> Deserialize<'de> for ExposePort"],["impl<'de> Deserialize<'de> for ContainerToHost"],["impl<'de> Deserialize<'de> for ContainerToWiderWorldRule"],["impl<'de> Deserialize<'de> for ChainPolicy"],["impl<'de> Deserialize<'de> for ContainerToHostRule"],["impl<'de> Deserialize<'de> for WiderWorldToContainerRule"],["impl<'de> Deserialize<'de> for Initialization"],["impl<'de> Deserialize<'de> for WiderWorldToContainer"],["impl<'de> Deserialize<'de> for ContainerDNATRule"],["impl<'de> Deserialize<'de> for Defaults"],["impl<'de> Deserialize<'de> for RuleVerdict"],["impl<'de> Deserialize<'de> for ContainerToContainerRule"],["impl<'de> Deserialize<'de> for Initialization"],["impl<'de, B> Deserialize<'de> for DFW<B>where\n B: FirewallBackend,\n DFW<B>: Process<B>,"],["impl<'de> Deserialize<'de> for ContainerDNAT"],["impl<'de> Deserialize<'de> for ContainerToContainer"],["impl<'de> Deserialize<'de> for ContainerToWiderWorld"],["impl<'de> Deserialize<'de> for Defaults"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/slog/trait.Value.js b/main/trait.impl/slog/trait.Value.js
similarity index 100%
rename from main/implementors/slog/trait.Value.js
rename to main/trait.impl/slog/trait.Value.js
diff --git a/main/type.impl/core/result/enum.Result.js b/main/type.impl/core/result/enum.Result.js
new file mode 100644
index 00000000..2b5ceac0
--- /dev/null
+++ b/main/type.impl/core/result/enum.Result.js
@@ -0,0 +1,3 @@
+(function() {var type_impls = {
+"dfw":[["source§
Print the numbers on each line of a string multiplied by two.
\n\n
let line = "1\\n2\\n3\\n4\\n";\n\nfor num in line.lines() {\n match num.parse::<i32>().map(|i| i * 2) {\n Ok(n) => println!("{n}"),\n Err(..) => {}\n }\n}
pub fn map_or<U, F>(self, default: U, f: F) -> Uwhere\n F: FnOnce(T) -> U,
Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).
\n
Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.
let k = 21;\n\nlet x : Result<_, &str> = Ok("foo");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err("bar");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
Returns the contained Ok value, consuming the self value.
\n
Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.
let path = std::env::var("IMPORTANT_PATH")\n .expect("env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`");
\n
Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.
\n
For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.
Returns the contained Ok value, consuming the self value.
\n
Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.
Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.
Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.
🔬This is a nightly-only experimental API. (unwrap_infallible)
Returns the contained Err value, but never panics.
\n
Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.
Returns res if the result is Ok, otherwise returns the Err value of self.
\n
Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n x.checked_mul(x).map(|sq| sq.to_string()).ok_or("overflowed")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err("overflowed"));\nassert_eq!(Err("not a number").and_then(sq_then_to_string), Err("not a number"));
\n
Often used to chain fallible operations that may return Err.
\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows "/" maps to "C:\\"\nlet root_modified_time = Path::new("/").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new("/bad/path").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
Returns res if the result is Err, otherwise returns the Ok value of self.
\n
Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.
Returns the contained Ok value or a provided default.
\n
Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.
🔬This is a nightly-only experimental API. (try_trait_v2)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.
\n
Here is an example which increments every integer in a vector,\nchecking for overflow:
\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n x.checked_add(1).ok_or("Overflow!")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n
Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:
\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n x.checked_sub(1).ok_or("Underflow!")\n).collect();\nassert_eq!(res, Err("Underflow!"));
\n
Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.
Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.
This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:
\n\n
let f = |&x: &i32| if x < 0 { Err("Negative element found") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err("Negative element found"));
Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.
Serialize this value into the given Serde serializer.
","SerializeAs>","dfw::errors::Result"]]
+};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file