Skip to content

Commit

Permalink
imporve expand performance
Browse files Browse the repository at this point in the history
  • Loading branch information
sagiegurari committed Nov 12, 2019
1 parent 3bce423 commit 97ba2a9
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 4 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
## CHANGELOG

### v0.7.4 (2019-11-12)

* Imporve **expand** performance.

### v0.7.3 (2019-11-08)

* New **expand** function #15
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "envmnt"
version = "0.7.3"
version = "0.7.4"
authors = ["Sagie Gur-Ari <sagiegurari@gmail.com>"]
description = "Environment variables utility functions."
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion docs/api/envmnt/types/enum.ExpansionType.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</div><span id="variant.UnixBrackets" class="variant small-section-header"><a href="#variant.UnixBrackets" class="anchor field"></a><code id='UnixBrackets.v'>UnixBrackets</code></span><div class='docblock'><p>Unix brackets environment style, for example: ${MY_ENV}</p>
</div><span id="variant.Unix" class="variant small-section-header"><a href="#variant.Unix" class="anchor field"></a><code id='Unix.v'>Unix</code></span><div class='docblock'><p>All unix supported styles</p>
</div><span id="variant.Windows" class="variant small-section-header"><a href="#variant.Windows" class="anchor field"></a><code id='Windows.v'>Windows</code></span><div class='docblock'><p>Windows environment style, for example: %MY_ENV%</p>
</div><span id="variant.OS" class="variant small-section-header"><a href="#variant.OS" class="anchor field"></a><code id='OS.v'>OS</code></span><div class='docblock'><p>Current OS supported styles (UnixAll/Windows)</p>
</div><span id="variant.OS" class="variant small-section-header"><a href="#variant.OS" class="anchor field"></a><code id='OS.v'>OS</code></span><div class='docblock'><p>Current OS supported styles (Unix/Windows)</p>
</div><span id="variant.All" class="variant small-section-header"><a href="#variant.All" class="anchor field"></a><code id='All.v'>All</code></span><div class='docblock'><p>All supported styles for all platforms</p>
</div><h2 id='implementations' class='small-section-header'>Trait Implementations<a href='#implementations' class='anchor'></a></h2><div id='implementations-list'><h3 id='impl-PartialEq%3CExpansionType%3E' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>&lt;<a class="enum" href="../../envmnt/types/enum.ExpansionType.html" title="enum envmnt::types::ExpansionType">ExpansionType</a>&gt; for <a class="enum" href="../../envmnt/types/enum.ExpansionType.html" title="enum envmnt::types::ExpansionType">ExpansionType</a></code><a href='#impl-PartialEq%3CExpansionType%3E' class='anchor'></a><a class='srclink' href='../../src/envmnt/types.rs.html#30' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.eq' class="method hidden"><code id='eq.v'>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq' class='fnname'>eq</a>(&amp;self, other: &amp;<a class="enum" href="../../envmnt/types/enum.ExpansionType.html" title="enum envmnt::types::ExpansionType">ExpansionType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><a class='srclink' href='../../src/envmnt/types.rs.html#30' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
</div><h4 id='method.ne' class="method"><code id='ne.v'><span class="docblock attributes">#[must_use]
Expand Down
2 changes: 1 addition & 1 deletion docs/api/search-index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions docs/api/src/envmnt/environment.rs.html
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,10 @@
<span id="249">249</span>
<span id="250">250</span>
<span id="251">251</span>
<span id="252">252</span>
<span id="253">253</span>
<span id="254">254</span>
<span id="255">255</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="doccomment">//! # environment</span>
<span class="doccomment">//!</span>
Expand Down Expand Up @@ -456,6 +460,10 @@
}

<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">expand</span>(<span class="ident">value</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">options</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">ExpandOptions</span><span class="op">&gt;</span>) <span class="op">-&gt;</span> <span class="ident">String</span> {
<span class="kw">if</span> <span class="ident">value</span>.<span class="ident">len</span>() <span class="op">==</span> <span class="number">0</span> {
<span class="kw">return</span> <span class="ident">value</span>.<span class="ident">to_string</span>();
}

<span class="kw">let</span> <span class="ident">expand_options</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">options</span> {
<span class="prelude-val">Some</span>(<span class="ident">value</span>) <span class="op">=&gt;</span> <span class="ident">value</span>,
<span class="prelude-val">None</span> <span class="op">=&gt;</span> <span class="ident">ExpandOptions</span>::<span class="ident">new</span>(),
Expand Down
2 changes: 1 addition & 1 deletion docs/api/src/envmnt/types.rs.html
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@
<span class="ident">Unix</span>,
<span class="doccomment">/// Windows environment style, for example: %MY_ENV%</span>
<span class="ident">Windows</span>,
<span class="doccomment">/// Current OS supported styles (UnixAll/Windows)</span>
<span class="doccomment">/// Current OS supported styles (Unix/Windows)</span>
<span class="ident">OS</span>,
<span class="doccomment">/// All supported styles for all platforms</span>
<span class="ident">All</span>,
Expand Down
4 changes: 4 additions & 0 deletions src/environment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,10 @@ pub(crate) fn get_list_with_options<K: AsRef<OsStr>>(
}

pub(crate) fn expand(value: &str, options: Option<ExpandOptions>) -> String {
if value.len() == 0 {
return value.to_string();
}

let expand_options = match options {
Some(value) => value,
None => ExpandOptions::new(),
Expand Down
7 changes: 7 additions & 0 deletions src/environment_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -558,6 +558,13 @@ fn get_list_with_options_multiple() {
);
}

#[test]
fn expand_empty_string() {
let output = expand("", None);

assert_eq!(output.len(), 0);
}

#[test]
fn expand_unix_prefix_none() {
let mut options = ExpandOptions::new();
Expand Down

0 comments on commit 97ba2a9

Please sign in to comment.