turns out that one *can* use 'extern crate' in submodules
authorRalf Jung <post@ralfj.de>
Thu, 16 Jul 2015 20:29:52 +0000 (22:29 +0200)
committerRalf Jung <post@ralfj.de>
Thu, 16 Jul 2015 20:29:52 +0000 (22:29 +0200)
Cargo.lock
Cargo.toml
src/main.rs
src/part13.rs
workspace/src/part13.rs

index 67ade175cd91c0faad002fd4de32f99651470793..b44a2877d741023dfedc90ce4256990e6fc2b84c 100644 (file)
@@ -1,63 +1,4 @@
 [root]
 name = "rust-101"
 version = "0.1.0"
-dependencies = [
- "docopt 0.6.67 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "aho-corasick"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "memchr 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "docopt"
-version = "0.6.67"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "regex 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc-serialize 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "strsim 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "libc"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "memchr"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "regex"
-version = "0.1.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "aho-corasick 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "memchr 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "regex-syntax 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "rustc-serialize"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "strsim"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
 
index e590353dd50401d27fb99d3810e97f7ba3608204..bbc666bc8d82dd58012c2a04ea8012cdf00a91d9 100644 (file)
@@ -3,5 +3,5 @@ name = "rust-101"
 version = "0.1.0"
 authors = ["Ralf Jung <post@ralfj.de>"]
 
-[dependencies]
-docopt = "*"
+#[dependencies]
+#docopt = "*"
index 901e70d15447a6dac0f000982e5660e688332c1d..4290e1e138dfb7fef6f15ededf7dd59805f87a18 100644 (file)
@@ -87,7 +87,6 @@
 // * (to be continued)
 // 
 #![allow(dead_code, unused_imports, unused_variables, unused_mut, unreachable_code)]
-/* extern crate docopt; */
 mod part00;
 mod part01;
 mod part02;
index d6483d4bf5109fec519e0d2e9b44fdb8d9f11e9c..29647ea60a3504e4d86a8fa562e864f26435940f 100644 (file)
@@ -87,13 +87,13 @@ fn sort_array() {
 //@ Note that crates.io is only the default location for dependencies, you can also give it the URL of a git repository or some local
 //@ path. All of this is explained in the [Cargo Guide](http://doc.crates.io/guide.html).
 
-// I disabled the following module (using a rather bad hack), because it only compiles if `docopt` is linked. However, before enabling it,
-// you still have get the external library into the global namespace. This is done with `extern crate docopt`, and that statement *has* to be
-// in `main.rs`. So please go there, and enable this commented-out line. Then remove the attribute of the `rgrep` module.
+// I disabled the following module (using a rather bad hack), because it only compiles if `docopt` is linked.
+// Remove the attribute of the `rgrep` module to enable compilation.
 #[cfg(feature = "disabled")]
 pub mod rgrep {
-    // Now that `docopt` is linked and declared in `main.rs`, we can import it with `use`. We also import some other pieces that we will need.
-    use docopt::Docopt;
+    // Now that `docopt` is linked, we can first root it in the namespace and then import it with `use`. We also import some other pieces that we will need.
+    extern crate docopt;
+    use self::docopt::Docopt;
     use part12::{run, Options, OutputMode};
     use std::process;
 
index 88d1ea6f7755d40efc96940c72174cc0b5622028..2be43536e20a4b299e019bb409bbbdadb5c905b9 100644 (file)
@@ -45,13 +45,13 @@ fn sort_array() {
 // ## External Dependencies
 
 
-// I disabled the following module (using a rather bad hack), because it only compiles if `docopt` is linked. However, before enabling it,
-// you still have get the external library into the global namespace. This is done with `extern crate docopt`, and that statement *has* to be
-// in `main.rs`. So please go there, and enable this commented-out line. Then remove the attribute of the `rgrep` module.
+// I disabled the following module (using a rather bad hack), because it only compiles if `docopt` is linked.
+// Remove the attribute of the `rgrep` module to enable compilation.
 #[cfg(feature = "disabled")]
 pub mod rgrep {
-    // Now that `docopt` is linked and declared in `main.rs`, we can import it with `use`. We also import some other pieces that we will need.
-    use docopt::Docopt;
+    // Now that `docopt` is linked, we can first root it in the namespace and then import it with `use`. We also import some other pieces that we will need.
+    extern crate docopt;
+    use self::docopt::Docopt;
     use part12::{run, Options, OutputMode};
     use std::process;