summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rottmann <a.rottmann@gmx.at>2019-01-09 00:44:18 +0100
committerAndreas Rottmann <a.rottmann@gmx.at>2019-01-09 00:44:18 +0100
commitc826a94f698fcc8302e549e737d5cb01c766a5d9 (patch)
tree2cf44eec00f163cbb9226b904d71d942ec56484d
parentfa70ca6fdb7d0d98a04961c1a74105e4f797661d (diff)
Fix macros for selective import via `use`
Allow the import of any macro with `use` while not requiring the user to import macros that are invoked by the imported macro. This feature was add with Rust 1.30, so adjust the travis build and README accordingly. This fixes issue #99.
-rw-r--r--.travis.yml5
-rw-r--r--README.md2
-rw-r--r--src/cell.rs2
-rw-r--r--src/lib.rs4
-rw-r--r--src/row.rs18
5 files changed, 14 insertions, 17 deletions
diff --git a/.travis.yml b/.travis.yml
index b9a554a..2ac8945 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,9 +1,6 @@
language: rust
rust:
-- 1.26.2
-- 1.27.2
-- 1.28.0
-- 1.29.0
+- 1.30.0
- stable
- beta
- nightly
diff --git a/README.md b/README.md
index 7f3d2de..337f4c2 100644
--- a/README.md
+++ b/README.md
@@ -39,7 +39,7 @@ Include the library as a dependency to your project by adding the following line
prettytable-rs = "^0.8"
```
-The library requires at least `rust v1.26.0`.
+The library requires at least `rust v1.30.0`.
## Basic usage
diff --git a/src/cell.rs b/src/cell.rs
index f27b1bd..61e71ca 100644
--- a/src/cell.rs
+++ b/src/cell.rs
@@ -314,7 +314,7 @@ macro_rules! cell {
$crate::Cell::new(&$value.to_string())
};
($style:ident -> $value:expr) => {
- cell!($value).style_spec(stringify!($style))
+ $crate::cell!($value).style_spec(stringify!($style))
};
}
diff --git a/src/lib.rs b/src/lib.rs
index 0674793..cc9dd0b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -567,7 +567,7 @@ impl<'a, T, E> Slice<'a, E> for T
#[macro_export]
macro_rules! table {
($([$($content:tt)*]), *) => (
- $crate::Table::init(vec![$(row![$($content)*]), *])
+ $crate::Table::init(vec![$($crate::row![$($content)*]), *])
);
}
@@ -578,7 +578,7 @@ macro_rules! table {
macro_rules! ptable {
($($content:tt)*) => (
{
- let tab = table!($($content)*);
+ let tab = $crate::table!($($content)*);
tab.printstd();
tab
}
diff --git a/src/row.rs b/src/row.rs
index 5f34a24..94c0d8e 100644
--- a/src/row.rs
+++ b/src/row.rs
@@ -304,15 +304,15 @@ impl <S: ToString> Extend<S> for Row {
#[macro_export]
macro_rules! row {
(($($out:tt)*);) => (vec![$($out)*]);
- (($($out:tt)*); $value:expr) => (vec![$($out)* cell!($value)]);
- (($($out:tt)*); $value:expr, $($n:tt)*) => (row!(($($out)* cell!($value),); $($n)*));
- (($($out:tt)*); $style:ident -> $value:expr) => (vec![$($out)* cell!($style -> $value)]);
- (($($out:tt)*); $style:ident -> $value:expr, $($n: tt)*) => (row!(($($out)* cell!($style -> $value),); $($n)*));
-
- ($($content:expr), *) => ($crate::Row::new(vec![$(cell!($content)), *])); // This line may not be needed starting from Rust 1.20
- ($style:ident => $($content:expr), *) => ($crate::Row::new(vec![$(cell!($style -> $content)), *]));
- ($style:ident => $($content:expr,) *) => ($crate::Row::new(vec![$(cell!($style -> $content)), *]));
- ($($content:tt)*) => ($crate::Row::new(row!((); $($content)*)));
+ (($($out:tt)*); $value:expr) => (vec![$($out)* $crate::cell!($value)]);
+ (($($out:tt)*); $value:expr, $($n:tt)*) => ($crate::row!(($($out)* $crate::cell!($value),); $($n)*));
+ (($($out:tt)*); $style:ident -> $value:expr) => (vec![$($out)* $crate::cell!($style -> $value)]);
+ (($($out:tt)*); $style:ident -> $value:expr, $($n: tt)*) => ($crate::row!(($($out)* $crate::cell!($style -> $value),); $($n)*));
+
+ ($($content:expr), *) => ($crate::Row::new(vec![$($crate::cell!($content)), *])); // This line may not be needed starting from Rust 1.20
+ ($style:ident => $($content:expr), *) => ($crate::Row::new(vec![$($crate::cell!($style -> $content)), *]));
+ ($style:ident => $($content:expr,) *) => ($crate::Row::new(vec![$($crate::cell!($style -> $content)), *]));
+ ($($content:tt)*) => ($crate::Row::new($crate::row!((); $($content)*)));
}
#[cfg(test)]