diff options
author | John Hodge <tpg@ucc.asn.au> | 2019-11-02 11:07:23 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2019-11-02 11:07:23 +0800 |
commit | 1d02810c3cf908bfba7c15ae50eb5314603b9d85 (patch) | |
tree | 79dd5e4ef4c3ff79db0912ba546f08e61a7a8c10 /src/slice.hpp | |
parent | 7111acba04d72fe4084b1a1f3209ff83efe8614d (diff) | |
parent | 8b53b38f40625ab0510f541d69db3f83332a830a (diff) | |
download | mrust-1d02810c3cf908bfba7c15ae50eb5314603b9d85.tar.gz |
Merge branch 'nightly-1.29' - #95 Working support for rustc 1.29
Diffstat (limited to 'src/slice.hpp')
-rw-r--r-- | src/slice.hpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/slice.hpp b/src/slice.hpp new file mode 100644 index 00000000..2011e8c2 --- /dev/null +++ b/src/slice.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include <stddef.h> + +template<typename T> +class slice +{ + T* ptr; + size_t len; +public: + slice(T* ptr, size_t len): ptr(ptr), len(len) {} + + T* begin() { return ptr; } + T* end() { return ptr + len; } + const T* begin() const { return ptr; } + const T* end() const { return ptr + len; } +}; + +namespace std { + template<typename T> + ostream& operator<<(ostream& os, const slice<T>& x) { + os << "["; + bool first = true; + for(const auto& e : x) + { + if(!first) + os << ","; + first = false; + os << e; + } + os << "]"; + return os; + } +} + |