Skip to content

Instantly share code, notes, and snippets.

@izderadicka
Last active June 3, 2021 10:18
Show Gist options
  • Save izderadicka/0b606e5000ddfa89bc0794a11ec67dc1 to your computer and use it in GitHub Desktop.
Save izderadicka/0b606e5000ddfa89bc0794a11ec67dc1 to your computer and use it in GitHub Desktop.
Coverage for dstream project
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
<!doctype html><html><head><meta name='viewport' content='width=device-width,initial-scale=1'><meta charset='UTF-8'><style>.red {
background-color: #ffd0d0;
}
.cyan {
background-color: cyan;
}
body {
font-family: -apple-system, sans-serif;
}
pre {
margin-top: 0px !important;
margin-bottom: 0px !important;
}
.source-name-title {
padding: 5px 10px;
border-bottom: 1px solid #dbdbdb;
background-color: #eee;
line-height: 35px;
}
.centered {
display: table;
margin-left: left;
margin-right: auto;
border: 1px solid #dbdbdb;
border-radius: 3px;
}
.expansion-view {
background-color: rgba(0, 0, 0, 0);
margin-left: 0px;
margin-top: 5px;
margin-right: 5px;
margin-bottom: 5px;
border: 1px solid #dbdbdb;
border-radius: 3px;
}
table {
border-collapse: collapse;
}
.light-row {
background: #ffffff;
border: 1px solid #dbdbdb;
}
.light-row-bold {
background: #ffffff;
border: 1px solid #dbdbdb;
font-weight: bold;
}
.column-entry {
text-align: left;
}
.column-entry-bold {
font-weight: bold;
text-align: left;
}
.column-entry-yellow {
text-align: left;
background-color: #ffffd0;
}
.column-entry-yellow:hover {
background-color: #fffff0;
}
.column-entry-red {
text-align: left;
background-color: #ffd0d0;
}
.column-entry-red:hover {
background-color: #fff0f0;
}
.column-entry-green {
text-align: left;
background-color: #d0ffd0;
}
.column-entry-green:hover {
background-color: #f0fff0;
}
.line-number {
text-align: right;
color: #aaa;
}
.covered-line {
text-align: right;
color: #0080ff;
}
.uncovered-line {
text-align: right;
color: #ff3300;
}
.tooltip {
position: relative;
display: inline;
background-color: #b3e6ff;
text-decoration: none;
}
.tooltip span.tooltip-content {
position: absolute;
width: 100px;
margin-left: -50px;
color: #FFFFFF;
background: #000000;
height: 30px;
line-height: 30px;
text-align: center;
visibility: hidden;
border-radius: 6px;
}
.tooltip span.tooltip-content:after {
content: '';
position: absolute;
top: 100%;
left: 50%;
margin-left: -8px;
width: 0; height: 0;
border-top: 8px solid #000000;
border-right: 8px solid transparent;
border-left: 8px solid transparent;
}
:hover.tooltip span.tooltip-content {
visibility: visible;
opacity: 0.8;
bottom: 30px;
left: 50%;
z-index: 999;
}
th, td {
vertical-align: top;
padding: 2px 8px;
border-collapse: collapse;
border-right: solid 1px #eee;
border-left: solid 1px #eee;
text-align: left;
}
td pre {
display: inline-block;
}
td:first-child {
border-left: none;
}
td:last-child {
border-right: none;
}
tr:hover {
background-color: #f0f0f0;
}
</style></head><body><div class='centered'><table><div class='source-name-title'><pre>src/lib.rs</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source (<a href='#L112'>jump to first uncovered line</a>)</pre></td></td></tr><tr><td class='line-number'><a name='L1' href='#L1'><pre>1</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre>use futures::{Future, Stream};<span class='cyan'></span>use futures::{Future, Stream};</pre></td></tr><tr><td class='line-number'><a name='L2' href='#L2'><pre>2</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>use linked_hash_map::LinkedHashMap;</pre></td></tr><tr><td class='line-number'><a name='L3' href='#L3'><pre>3</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>use std::{</pre></td></tr><tr><td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> hash::Hash,</pre></td></tr><tr><td class='line-number'><a name='L5' href='#L5'><pre>5</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> pin::Pin,</pre></td></tr><tr><td class='line-number'><a name='L6' href='#L6'><pre>6</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> task::{Context, Poll},</pre></td></tr><tr><td class='line-number'><a name='L7' href='#L7'><pre>7</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> time::{Duration, Instant},</pre></td></tr><tr><td class='line-number'><a name='L8' href='#L8'><pre>8</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>};</pre></td></tr><tr><td class='line-number'><a name='L9' href='#L9'><pre>9</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L10' href='#L10'><pre>10</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>struct TimedItem&lt;V&gt; {</pre></td></tr><tr><td class='line-number'><a name='L11' href='#L11'><pre>11</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> ts: Instant,</pre></td></tr><tr><td class='line-number'><a name='L12' href='#L12'><pre>12</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> value: V,</pre></td></tr><tr><td class='line-number'><a name='L13' href='#L13'><pre>13</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>}</pre></td></tr><tr><td class='line-number'><a name='L14' href='#L14'><pre>14</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L15' href='#L15'><pre>15</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>impl&lt;V&gt; TimedItem&lt;V&gt; {</pre></td></tr><tr><td class='line-number'><a name='L16' href='#L16'><pre>16</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> fn new(value: V) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L17' href='#L17'><pre>17</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> TimedItem {</pre></td></tr><tr><td class='line-number'><a name='L18' href='#L18'><pre>18</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> ts: Instant::now(),</pre></td></tr><tr><td class='line-number'><a name='L19' href='#L19'><pre>19</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> value,</pre></td></tr><tr><td class='line-number'><a name='L20' href='#L20'><pre>20</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L21' href='#L21'><pre>21</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> }</pre><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::TimedItem&lt;usize&gt;&gt;::new</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L16' href='#L16'><pre>16</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> fn new(value: V) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L17' href='#L17'><pre>17</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> TimedItem {</pre></td></tr><tr><td class='line-number'><a name='L18' href='#L18'><pre>18</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> ts: Instant::now(),</pre></td></tr><tr><td class='line-number'><a name='L19' href='#L19'><pre>19</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> value,</pre></td></tr><tr><td class='line-number'><a name='L20' href='#L20'><pre>20</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L21' href='#L21'><pre>21</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::TimedItem&lt;i32&gt;&gt;::new</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L16' href='#L16'><pre>16</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> fn new(value: V) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L17' href='#L17'><pre>17</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> TimedItem {</pre></td></tr><tr><td class='line-number'><a name='L18' href='#L18'><pre>18</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> ts: Instant::now(),</pre></td></tr><tr><td class='line-number'><a name='L19' href='#L19'><pre>19</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> value,</pre></td></tr><tr><td class='line-number'><a name='L20' href='#L20'><pre>20</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L21' href='#L21'><pre>21</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::TimedItem&lt;u32&gt;&gt;::new</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L16' href='#L16'><pre>16</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> fn new(value: V) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L17' href='#L17'><pre>17</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> TimedItem {</pre></td></tr><tr><td class='line-number'><a name='L18' href='#L18'><pre>18</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> ts: Instant::now(),</pre></td></tr><tr><td class='line-number'><a name='L19' href='#L19'><pre>19</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> value,</pre></td></tr><tr><td class='line-number'><a name='L20' href='#L20'><pre>20</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L21' href='#L21'><pre>21</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div></td></tr><tr><td class='line-number'><a name='L22' href='#L22'><pre>22</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>}</pre></td></tr><tr><td class='line-number'><a name='L23' href='#L23'><pre>23</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L24' href='#L24'><pre>24</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>pub trait KeyValue&lt;K, V&gt; {</pre></td></tr><tr><td class='line-number'><a name='L25' href='#L25'><pre>25</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> fn split(self) -&gt; (K, V);</pre></td></tr><tr><td class='line-number'><a name='L26' href='#L26'><pre>26</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> fn unsplit(k: K, v: V) -&gt; Self;</pre></td></tr><tr><td class='line-number'><a name='L27' href='#L27'><pre>27</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>}</pre></td></tr><tr><td class='line-number'><a name='L28' href='#L28'><pre>28</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L29' href='#L29'><pre>29</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>impl&lt;K, V&gt; KeyValue&lt;K, V&gt; for (K, V) {</pre></td></tr><tr><td class='line-number'><a name='L30' href='#L30'><pre>30</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> fn split(self) -&gt; (K, V) {</pre></td></tr><tr><td class='line-number'><a name='L31' href='#L31'><pre>31</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> self</pre></td></tr><tr><td class='line-number'><a name='L32' href='#L32'><pre>32</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> }</pre><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;(&amp;str, i32) as dstream::KeyValue&lt;&amp;str, i32&gt;&gt;::split</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L30' href='#L30'><pre>30</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> fn split(self) -&gt; (K, V) {</pre></td></tr><tr><td class='line-number'><a name='L31' href='#L31'><pre>31</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> self</pre></td></tr><tr><td class='line-number'><a name='L32' href='#L32'><pre>32</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;(&amp;str, u32) as dstream::KeyValue&lt;&amp;str, u32&gt;&gt;::split</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L30' href='#L30'><pre>30</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> fn split(self) -&gt; (K, V) {</pre></td></tr><tr><td class='line-number'><a name='L31' href='#L31'><pre>31</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> self</pre></td></tr><tr><td class='line-number'><a name='L32' href='#L32'><pre>32</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;(char, usize) as dstream::KeyValue&lt;char, usize&gt;&gt;::split</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L30' href='#L30'><pre>30</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> fn split(self) -&gt; (K, V) {</pre></td></tr><tr><td class='line-number'><a name='L31' href='#L31'><pre>31</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> self</pre></td></tr><tr><td class='line-number'><a name='L32' href='#L32'><pre>32</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div></td></tr><tr><td class='line-number'><a name='L33' href='#L33'><pre>33</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L34' href='#L34'><pre>34</pre></a></td><td class='covered-line'><pre>77</pre></td><td class='code'><pre> fn unsplit(k: K, v: V) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L35' href='#L35'><pre>35</pre></a></td><td class='covered-line'><pre>77</pre></td><td class='code'><pre> (k, v)</pre></td></tr><tr><td class='line-number'><a name='L36' href='#L36'><pre>36</pre></a></td><td class='covered-line'><pre>77</pre></td><td class='code'><pre> }</pre><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;(&amp;str, u32) as dstream::KeyValue&lt;&amp;str, u32&gt;&gt;::unsplit</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L34' href='#L34'><pre>34</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> fn unsplit(k: K, v: V) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L35' href='#L35'><pre>35</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> (k, v)</pre></td></tr><tr><td class='line-number'><a name='L36' href='#L36'><pre>36</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;(char, usize) as dstream::KeyValue&lt;char, usize&gt;&gt;::unsplit</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L34' href='#L34'><pre>34</pre></a></td><td class='covered-line'><pre>69</pre></td><td class='code'><pre> fn unsplit(k: K, v: V) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L35' href='#L35'><pre>35</pre></a></td><td class='covered-line'><pre>69</pre></td><td class='code'><pre> (k, v)</pre></td></tr><tr><td class='line-number'><a name='L36' href='#L36'><pre>36</pre></a></td><td class='covered-line'><pre>69</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;(&amp;str, i32) as dstream::KeyValue&lt;&amp;str, i32&gt;&gt;::unsplit</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L34' href='#L34'><pre>34</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> fn unsplit(k: K, v: V) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L35' href='#L35'><pre>35</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> (k, v)</pre></td></tr><tr><td class='line-number'><a name='L36' href='#L36'><pre>36</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div></td></tr><tr><td class='line-number'><a name='L37' href='#L37'><pre>37</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>}</pre></td></tr><tr><td class='line-number'><a name='L38' href='#L38'><pre>38</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L39' href='#L39'><pre>39</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>pub struct DelayedStream&lt;T, K, V, S&gt;</pre></td></tr><tr><td class='line-number'><a name='L40' href='#L40'><pre>40</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>where</pre></td></tr><tr><td class='line-number'><a name='L41' href='#L41'><pre>41</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> T: KeyValue&lt;K, V&gt;,</pre></td></tr><tr><td class='line-number'><a name='L42' href='#L42'><pre>42</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> S: Stream&lt;Item = T&gt;,</pre></td></tr><tr><td class='line-number'><a name='L43' href='#L43'><pre>43</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>{</pre></td></tr><tr><td class='line-number'><a name='L44' href='#L44'><pre>44</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> past_messages: LinkedHashMap&lt;K, TimedItem&lt;V&gt;&gt;,</pre></td></tr><tr><td class='line-number'><a name='L45' href='#L45'><pre>45</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> delay: Duration,</pre></td></tr><tr><td class='line-number'><a name='L46' href='#L46'><pre>46</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> inner_stream: Pin&lt;Box&lt;S&gt;&gt;,</pre></td></tr><tr><td class='line-number'><a name='L47' href='#L47'><pre>47</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> sleep: Option&lt;Pin&lt;Box&lt;tokio::time::Sleep&gt;&gt;&gt;,</pre></td></tr><tr><td class='line-number'><a name='L48' href='#L48'><pre>48</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> input_finished: bool,</pre></td></tr><tr><td class='line-number'><a name='L49' href='#L49'><pre>49</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>}</pre></td></tr><tr><td class='line-number'><a name='L50' href='#L50'><pre>50</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L51' href='#L51'><pre>51</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>impl&lt;T, K, V, S&gt; DelayedStream&lt;T, K, V, S&gt;</pre></td></tr><tr><td class='line-number'><a name='L52' href='#L52'><pre>52</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>where</pre></td></tr><tr><td class='line-number'><a name='L53' href='#L53'><pre>53</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> T: KeyValue&lt;K, V&gt;,</pre></td></tr><tr><td class='line-number'><a name='L54' href='#L54'><pre>54</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> S: Stream&lt;Item = T&gt;,</pre></td></tr><tr><td class='line-number'><a name='L55' href='#L55'><pre>55</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> K: Hash + Eq,</pre></td></tr><tr><td class='line-number'><a name='L56' href='#L56'><pre>56</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>{</pre></td></tr><tr><td class='line-number'><a name='L57' href='#L57'><pre>57</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> pub fn new(stream: S, delay: Duration) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L58' href='#L58'><pre>58</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> DelayedStream {</pre></td></tr><tr><td class='line-number'><a name='L59' href='#L59'><pre>59</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> past_messages: LinkedHashMap::new(),</pre></td></tr><tr><td class='line-number'><a name='L60' href='#L60'><pre>60</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> inner_stream: Box::pin(stream),</pre></td></tr><tr><td class='line-number'><a name='L61' href='#L61'><pre>61</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> delay,</pre></td></tr><tr><td class='line-number'><a name='L62' href='#L62'><pre>62</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> sleep: None,</pre></td></tr><tr><td class='line-number'><a name='L63' href='#L63'><pre>63</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> input_finished: false,</pre></td></tr><tr><td class='line-number'><a name='L64' href='#L64'><pre>64</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L65' href='#L65'><pre>65</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, i32), &amp;str, i32, futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, i32)&gt;&gt;&gt;&gt;::new</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L57' href='#L57'><pre>57</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> pub fn new(stream: S, delay: Duration) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L58' href='#L58'><pre>58</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> DelayedStream {</pre></td></tr><tr><td class='line-number'><a name='L59' href='#L59'><pre>59</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> past_messages: LinkedHashMap::new(),</pre></td></tr><tr><td class='line-number'><a name='L60' href='#L60'><pre>60</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> inner_stream: Box::pin(stream),</pre></td></tr><tr><td class='line-number'><a name='L61' href='#L61'><pre>61</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> delay,</pre></td></tr><tr><td class='line-number'><a name='L62' href='#L62'><pre>62</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> sleep: None,</pre></td></tr><tr><td class='line-number'><a name='L63' href='#L63'><pre>63</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> input_finished: false,</pre></td></tr><tr><td class='line-number'><a name='L64' href='#L64'><pre>64</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L65' href='#L65'><pre>65</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(char, usize), char, usize, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(char, usize, u64)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::rand_stream::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::rand_stream::{closure#0}::{closure#0}&gt;&gt;&gt;::new</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L57' href='#L57'><pre>57</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> pub fn new(stream: S, delay: Duration) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L58' href='#L58'><pre>58</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> DelayedStream {</pre></td></tr><tr><td class='line-number'><a name='L59' href='#L59'><pre>59</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> past_messages: LinkedHashMap::new(),</pre></td></tr><tr><td class='line-number'><a name='L60' href='#L60'><pre>60</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> inner_stream: Box::pin(stream),</pre></td></tr><tr><td class='line-number'><a name='L61' href='#L61'><pre>61</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> delay,</pre></td></tr><tr><td class='line-number'><a name='L62' href='#L62'><pre>62</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> sleep: None,</pre></td></tr><tr><td class='line-number'><a name='L63' href='#L63'><pre>63</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> input_finished: false,</pre></td></tr><tr><td class='line-number'><a name='L64' href='#L64'><pre>64</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L65' href='#L65'><pre>65</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, u32), &amp;str, u32, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, u32)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::same_key_delayed_test::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::same_key_delayed_test::{closure#0}::{closure#0}&gt;&gt;&gt;::new</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L57' href='#L57'><pre>57</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> pub fn new(stream: S, delay: Duration) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L58' href='#L58'><pre>58</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> DelayedStream {</pre></td></tr><tr><td class='line-number'><a name='L59' href='#L59'><pre>59</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> past_messages: LinkedHashMap::new(),</pre></td></tr><tr><td class='line-number'><a name='L60' href='#L60'><pre>60</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> inner_stream: Box::pin(stream),</pre></td></tr><tr><td class='line-number'><a name='L61' href='#L61'><pre>61</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> delay,</pre></td></tr><tr><td class='line-number'><a name='L62' href='#L62'><pre>62</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> sleep: None,</pre></td></tr><tr><td class='line-number'><a name='L63' href='#L63'><pre>63</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> input_finished: false,</pre></td></tr><tr><td class='line-number'><a name='L64' href='#L64'><pre>64</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L65' href='#L65'><pre>65</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, u32), &amp;str, u32, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, u32)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::same_key_little_delayed_test::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::same_key_little_delayed_test::{closure#0}::{closure#0}&gt;&gt;&gt;::new</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L57' href='#L57'><pre>57</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> pub fn new(stream: S, delay: Duration) -&gt; Self {</pre></td></tr><tr><td class='line-number'><a name='L58' href='#L58'><pre>58</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> DelayedStream {</pre></td></tr><tr><td class='line-number'><a name='L59' href='#L59'><pre>59</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> past_messages: LinkedHashMap::new(),</pre></td></tr><tr><td class='line-number'><a name='L60' href='#L60'><pre>60</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> inner_stream: Box::pin(stream),</pre></td></tr><tr><td class='line-number'><a name='L61' href='#L61'><pre>61</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> delay,</pre></td></tr><tr><td class='line-number'><a name='L62' href='#L62'><pre>62</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> sleep: None,</pre></td></tr><tr><td class='line-number'><a name='L63' href='#L63'><pre>63</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> input_finished: false,</pre></td></tr><tr><td class='line-number'><a name='L64' href='#L64'><pre>64</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L65' href='#L65'><pre>65</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div></td></tr><tr><td class='line-number'><a name='L66' href='#L66'><pre>66</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L67' href='#L67'><pre>67</pre></a></td><td class='covered-line'><pre>289</pre></td><td class='code'><pre> fn set_sleep(&amp;mut self) {</pre></td></tr><tr><td class='line-number'><a name='L68' href='#L68'><pre>68</pre></a></td><td class='covered-line'><pre>289</pre></td><td class='code'><pre> let time_to_wait = self.past_messages.front().map(|item| {</pre></td></tr><tr><td class='line-number'><a name='L69' href='#L69'><pre>69</pre></a></td><td class='covered-line'><pre>281</pre></td><td class='code'><pre> let time_to_first = Instant::now().duration_since(item.1.ts);</pre></td></tr><tr><td class='line-number'><a name='L70' href='#L70'><pre>70</pre></a></td><td class='covered-line'><pre>281</pre></td><td class='code'><pre> if time_to_first &gt; self.delay {</pre></td></tr><tr><td class='line-number'><a name='L71' href='#L71'><pre>71</pre></a></td><td class='covered-line'><pre>5</pre></td><td class='code'><pre> Duration::from_millis(0)</pre></td></tr><tr><td class='line-number'><a name='L72' href='#L72'><pre>72</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> } else {</pre></td></tr><tr><td class='line-number'><a name='L73' href='#L73'><pre>73</pre></a></td><td class='covered-line'><pre>276</pre></td><td class='code'><pre> self.delay - time_to_first</pre></td></tr><tr><td class='line-number'><a name='L74' href='#L74'><pre>74</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L75' href='#L75'><pre>75</pre></a></td><td class='covered-line'><pre>289</pre></td><td class='code'><pre> });</pre><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, i32), &amp;str, i32, futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, i32)&gt;&gt;&gt;&gt;::set_sleep::{closure#0}</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L68' href='#L68'><pre>68</pre></a></td><td class='covered-line'><pre>8</pre></td><td class='code'><pre> let time_to_wait = self.past_messages.front().map(|item| {</pre></td></tr><tr><td class='line-number'><a name='L69' href='#L69'><pre>69</pre></a></td><td class='covered-line'><pre>8</pre></td><td class='code'><pre> let time_to_first = Instant::now().duration_since(item.1.ts);</pre></td></tr><tr><td class='line-number'><a name='L70' href='#L70'><pre>70</pre></a></td><td class='covered-line'><pre>8</pre></td><td class='code'><pre> if time_to_first &gt; self.delay {</pre></td></tr><tr><td class='line-number'><a name='L71' href='#L71'><pre>71</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> Duration::from_millis(0)</pre></td></tr><tr><td class='line-number'><a name='L72' href='#L72'><pre>72</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> } else {</pre></td></tr><tr><td class='line-number'><a name='L73' href='#L73'><pre>73</pre></a></td><td class='covered-line'><pre>5</pre></td><td class='code'><pre> self.delay - time_to_first</pre></td></tr><tr><td class='line-number'><a name='L74' href='#L74'><pre>74</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L75' href='#L75'><pre>75</pre></a></td><td class='covered-line'><pre>8</pre></td><td class='code'><pre> });</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, u32), &amp;str, u32, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, u32)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::same_key_delayed_test::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::same_key_delayed_test::{closure#0}::{closure#0}&gt;&gt;&gt;::set_sleep::{closure#0}</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L68' href='#L68'><pre>68</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> let time_to_wait = self.past_messages.front().map(|item| {</pre></td></tr><tr><td class='line-number'><a name='L69' href='#L69'><pre>69</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> let time_to_first = Instant::now().duration_since(item.1.ts);</pre></td></tr><tr><td class='line-number'><a name='L70' href='#L70'><pre>70</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> if time_to_first &gt; self.delay {</pre></td></tr><tr><td class='line-number'><a name='L71' href='#L71'><pre>71</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre> <span class='red'>Duration::from_millis(0)</span></pre></td></tr><tr><td class='line-number'><a name='L72' href='#L72'><pre>72</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> } else {</pre></td></tr><tr><td class='line-number'><a name='L73' href='#L73'><pre>73</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.delay - time_to_first</pre></td></tr><tr><td class='line-number'><a name='L74' href='#L74'><pre>74</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L75' href='#L75'><pre>75</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> });</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(char, usize), char, usize, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(char, usize, u64)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::rand_stream::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::rand_stream::{closure#0}::{closure#0}&gt;&gt;&gt;::set_sleep::{closure#0}</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L68' href='#L68'><pre>68</pre></a></td><td class='covered-line'><pre>267</pre></td><td class='code'><pre> let time_to_wait = self.past_messages.front().map(|item| {</pre></td></tr><tr><td class='line-number'><a name='L69' href='#L69'><pre>69</pre></a></td><td class='covered-line'><pre>267</pre></td><td class='code'><pre> let time_to_first = Instant::now().duration_since(item.1.ts);</pre></td></tr><tr><td class='line-number'><a name='L70' href='#L70'><pre>70</pre></a></td><td class='covered-line'><pre>267</pre></td><td class='code'><pre> if time_to_first &gt; self.delay {</pre></td></tr><tr><td class='line-number'><a name='L71' href='#L71'><pre>71</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> Duration::from_millis(0)</pre></td></tr><tr><td class='line-number'><a name='L72' href='#L72'><pre>72</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> } else {</pre></td></tr><tr><td class='line-number'><a name='L73' href='#L73'><pre>73</pre></a></td><td class='covered-line'><pre>265</pre></td><td class='code'><pre> self.delay - time_to_first</pre></td></tr><tr><td class='line-number'><a name='L74' href='#L74'><pre>74</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L75' href='#L75'><pre>75</pre></a></td><td class='covered-line'><pre>267</pre></td><td class='code'><pre> });</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, u32), &amp;str, u32, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, u32)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::same_key_little_delayed_test::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::same_key_little_delayed_test::{closure#0}::{closure#0}&gt;&gt;&gt;::set_sleep::{closure#0}</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L68' href='#L68'><pre>68</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> let time_to_wait = self.past_messages.front().map(|item| {</pre></td></tr><tr><td class='line-number'><a name='L69' href='#L69'><pre>69</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> let time_to_first = Instant::now().duration_since(item.1.ts);</pre></td></tr><tr><td class='line-number'><a name='L70' href='#L70'><pre>70</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> if time_to_first &gt; self.delay {</pre></td></tr><tr><td class='line-number'><a name='L71' href='#L71'><pre>71</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre> <span class='red'>Duration::from_millis(0)</span></pre></td></tr><tr><td class='line-number'><a name='L72' href='#L72'><pre>72</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> } else {</pre></td></tr><tr><td class='line-number'><a name='L73' href='#L73'><pre>73</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.delay - time_to_first</pre></td></tr><tr><td class='line-number'><a name='L74' href='#L74'><pre>74</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L75' href='#L75'><pre>75</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> });</pre></td></tr></table></div></div></td></tr><tr><td class='line-number'><a name='L76' href='#L76'><pre>76</pre></a></td><td class='covered-line'><pre>289</pre></td><td class='code'><pre> self.sleep = time_to_wait.map(|t| Box::pin(tokio::time::sleep(t)));</pre><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, u32), &amp;str, u32, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, u32)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::same_key_delayed_test::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::same_key_delayed_test::{closure#0}::{closure#0}&gt;&gt;&gt;::set_sleep::{closure#1}</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L76' href='#L76'><pre>76</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.sleep = time_to_wait.map(|t| Box::pin(tokio::time::sleep(t)));</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(char, usize), char, usize, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(char, usize, u64)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::rand_stream::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::rand_stream::{closure#0}::{closure#0}&gt;&gt;&gt;::set_sleep::{closure#1}</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L76' href='#L76'><pre>76</pre></a></td><td class='covered-line'><pre>267</pre></td><td class='code'><pre> self.sleep = time_to_wait.map(|t| Box::pin(tokio::time::sleep(t)));</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, i32), &amp;str, i32, futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, i32)&gt;&gt;&gt;&gt;::set_sleep::{closure#1}</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L76' href='#L76'><pre>76</pre></a></td><td class='covered-line'><pre>8</pre></td><td class='code'><pre> self.sleep = time_to_wait.map(|t| Box::pin(tokio::time::sleep(t)));</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, u32), &amp;str, u32, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, u32)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::same_key_little_delayed_test::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::same_key_little_delayed_test::{closure#0}::{closure#0}&gt;&gt;&gt;::set_sleep::{closure#1}</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L76' href='#L76'><pre>76</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.sleep = time_to_wait.map(|t| Box::pin(tokio::time::sleep(t)));</pre></td></tr></table></div></div></td></tr><tr><td class='line-number'><a name='L77' href='#L77'><pre>77</pre></a></td><td class='covered-line'><pre>289</pre></td><td class='code'><pre> }</pre><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(char, usize), char, usize, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(char, usize, u64)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::rand_stream::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::rand_stream::{closure#0}::{closure#0}&gt;&gt;&gt;::set_sleep</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L67' href='#L67'><pre>67</pre></a></td><td class='covered-line'><pre>269</pre></td><td class='code'><pre> fn set_sleep(&amp;mut self) {</pre></td></tr><tr><td class='line-number'><a name='L68' href='#L68'><pre>68</pre></a></td><td class='covered-line'><pre>269</pre></td><td class='code'><pre> let time_to_wait = self.past_messages.front().map(|item| {</pre></td></tr><tr><td class='line-number'><a name='L69' href='#L69'><pre>69</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> let time_to_first = Instant::now().duration_since(item.1.ts);</pre></td></tr><tr><td class='line-number'><a name='L70' href='#L70'><pre>70</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> if time_to_first &gt; self.delay {</pre></td></tr><tr><td class='line-number'><a name='L71' href='#L71'><pre>71</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> Duration::from_millis(0)</pre></td></tr><tr><td class='line-number'><a name='L72' href='#L72'><pre>72</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> } else {</pre></td></tr><tr><td class='line-number'><a name='L73' href='#L73'><pre>73</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> self.delay - time_to_first</pre></td></tr><tr><td class='line-number'><a name='L74' href='#L74'><pre>74</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L75' href='#L75'><pre>75</pre></a></td><td class='covered-line'><pre>269</pre></td><td class='code'><pre> });</pre></td></tr><tr><td class='line-number'><a name='L76' href='#L76'><pre>76</pre></a></td><td class='covered-line'><pre>269</pre></td><td class='code'><pre> self.sleep = time_to_wait.map(|t| Box::pin(tokio::time::sleep(t)));</pre></td></tr><tr><td class='line-number'><a name='L77' href='#L77'><pre>77</pre></a></td><td class='covered-line'><pre>269</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, u32), &amp;str, u32, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, u32)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::same_key_delayed_test::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::same_key_delayed_test::{closure#0}::{closure#0}&gt;&gt;&gt;::set_sleep</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L67' href='#L67'><pre>67</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> fn set_sleep(&amp;mut self) {</pre></td></tr><tr><td class='line-number'><a name='L68' href='#L68'><pre>68</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> let time_to_wait = self.past_messages.front().map(|item| {</pre></td></tr><tr><td class='line-number'><a name='L69' href='#L69'><pre>69</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> let time_to_first = Instant::now().duration_since(item.1.ts);</pre></td></tr><tr><td class='line-number'><a name='L70' href='#L70'><pre>70</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> if time_to_first &gt; self.delay {</pre></td></tr><tr><td class='line-number'><a name='L71' href='#L71'><pre>71</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> Duration::from_millis(0)</pre></td></tr><tr><td class='line-number'><a name='L72' href='#L72'><pre>72</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> } else {</pre></td></tr><tr><td class='line-number'><a name='L73' href='#L73'><pre>73</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> self.delay - time_to_first</pre></td></tr><tr><td class='line-number'><a name='L74' href='#L74'><pre>74</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L75' href='#L75'><pre>75</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> });</pre></td></tr><tr><td class='line-number'><a name='L76' href='#L76'><pre>76</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> self.sleep = time_to_wait.map(|t| Box::pin(tokio::time::sleep(t)));</pre></td></tr><tr><td class='line-number'><a name='L77' href='#L77'><pre>77</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, u32), &amp;str, u32, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, u32)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::same_key_little_delayed_test::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::same_key_little_delayed_test::{closure#0}::{closure#0}&gt;&gt;&gt;::set_sleep</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L67' href='#L67'><pre>67</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> fn set_sleep(&amp;mut self) {</pre></td></tr><tr><td class='line-number'><a name='L68' href='#L68'><pre>68</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> let time_to_wait = self.past_messages.front().map(|item| {</pre></td></tr><tr><td class='line-number'><a name='L69' href='#L69'><pre>69</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> let time_to_first = Instant::now().duration_since(item.1.ts);</pre></td></tr><tr><td class='line-number'><a name='L70' href='#L70'><pre>70</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> if time_to_first &gt; self.delay {</pre></td></tr><tr><td class='line-number'><a name='L71' href='#L71'><pre>71</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> Duration::from_millis(0)</pre></td></tr><tr><td class='line-number'><a name='L72' href='#L72'><pre>72</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> } else {</pre></td></tr><tr><td class='line-number'><a name='L73' href='#L73'><pre>73</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> self.delay - time_to_first</pre></td></tr><tr><td class='line-number'><a name='L74' href='#L74'><pre>74</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L75' href='#L75'><pre>75</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> });</pre></td></tr><tr><td class='line-number'><a name='L76' href='#L76'><pre>76</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> self.sleep = time_to_wait.map(|t| Box::pin(tokio::time::sleep(t)));</pre></td></tr><tr><td class='line-number'><a name='L77' href='#L77'><pre>77</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, i32), &amp;str, i32, futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, i32)&gt;&gt;&gt;&gt;::set_sleep</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L67' href='#L67'><pre>67</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> fn set_sleep(&amp;mut self) {</pre></td></tr><tr><td class='line-number'><a name='L68' href='#L68'><pre>68</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> let time_to_wait = self.past_messages.front().map(|item| {</pre></td></tr><tr><td class='line-number'><a name='L69' href='#L69'><pre>69</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> let time_to_first = Instant::now().duration_since(item.1.ts);</pre></td></tr><tr><td class='line-number'><a name='L70' href='#L70'><pre>70</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> if time_to_first &gt; self.delay {</pre></td></tr><tr><td class='line-number'><a name='L71' href='#L71'><pre>71</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> Duration::from_millis(0)</pre></td></tr><tr><td class='line-number'><a name='L72' href='#L72'><pre>72</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> } else {</pre></td></tr><tr><td class='line-number'><a name='L73' href='#L73'><pre>73</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> self.delay - time_to_first</pre></td></tr><tr><td class='line-number'><a name='L74' href='#L74'><pre>74</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L75' href='#L75'><pre>75</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> });</pre></td></tr><tr><td class='line-number'><a name='L76' href='#L76'><pre>76</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> self.sleep = time_to_wait.map(|t| Box::pin(tokio::time::sleep(t)));</pre></td></tr><tr><td class='line-number'><a name='L77' href='#L77'><pre>77</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div></td></tr><tr><td class='line-number'><a name='L78' href='#L78'><pre>78</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>}</pre></td></tr><tr><td class='line-number'><a name='L79' href='#L79'><pre>79</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L80' href='#L80'><pre>80</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>impl&lt;T, K, V, S&gt; Stream for DelayedStream&lt;T, K, V, S&gt;</pre></td></tr><tr><td class='line-number'><a name='L81' href='#L81'><pre>81</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>where</pre></td></tr><tr><td class='line-number'><a name='L82' href='#L82'><pre>82</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> T: KeyValue&lt;K, V&gt;,</pre></td></tr><tr><td class='line-number'><a name='L83' href='#L83'><pre>83</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> S: Stream&lt;Item = T&gt;,</pre></td></tr><tr><td class='line-number'><a name='L84' href='#L84'><pre>84</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> K: Hash + Eq,</pre></td></tr><tr><td class='line-number'><a name='L85' href='#L85'><pre>85</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>{</pre></td></tr><tr><td class='line-number'><a name='L86' href='#L86'><pre>86</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> type Item = T;</pre></td></tr><tr><td class='line-number'><a name='L87' href='#L87'><pre>87</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L88' href='#L88'><pre>88</pre></a></td><td class='covered-line'><pre>846</pre></td><td class='code'><pre> fn poll_next(</pre></td></tr><tr><td class='line-number'><a name='L89' href='#L89'><pre>89</pre></a></td><td class='covered-line'><pre>846</pre></td><td class='code'><pre> mut self: std::pin::Pin&lt;&amp;mut Self&gt;,</pre></td></tr><tr><td class='line-number'><a name='L90' href='#L90'><pre>90</pre></a></td><td class='covered-line'><pre>846</pre></td><td class='code'><pre> cx: &amp;mut Context&lt;&apos;_&gt;,</pre></td></tr><tr><td class='line-number'><a name='L91' href='#L91'><pre>91</pre></a></td><td class='covered-line'><pre>846</pre></td><td class='code'><pre> ) -&gt; Poll&lt;Option&lt;Self::Item&gt;&gt; {</pre></td></tr><tr><td class='line-number'><a name='L92' href='#L92'><pre>92</pre></a></td><td class='covered-line'><pre>846</pre></td><td class='code'><pre> if !self.input_finished {</pre></td></tr><tr><td class='line-number'><a name='L93' href='#L93'><pre>93</pre></a></td><td class='covered-line'><pre>785</pre></td><td class='code'><pre> match Pin::new(&amp;mut self.inner_stream).poll_next(cx) {</pre></td></tr><tr><td class='line-number'><a name='L94' href='#L94'><pre>94</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> Poll::Ready(Some(item)) =&gt; {</pre></td></tr><tr><td class='line-number'><a name='L95' href='#L95'><pre>95</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> let (k, v) = item.split();</pre></td></tr><tr><td class='line-number'><a name='L96' href='#L96'><pre>96</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> self.past_messages.remove(&amp;k); // have to remove key so new entry is at end of list</pre></td></tr><tr><td class='line-number'><a name='L97' href='#L97'><pre>97</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> self.past_messages.insert(k, TimedItem::new(v));</pre></td></tr><tr><td class='line-number'><a name='L98' href='#L98'><pre>98</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> self.set_sleep();</pre></td></tr><tr><td class='line-number'><a name='L99' href='#L99'><pre>99</pre></a></td><td class='covered-line'><pre>212</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L100' href='#L100'><pre>100</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> Poll::Ready(None) =&gt; self.input_finished = true,</pre></td></tr><tr><td class='line-number'><a name='L101' href='#L101'><pre>101</pre></a></td><td class='covered-line'><pre>567</pre></td><td class='code'><pre> Poll::Pending =&gt; {}</pre></td></tr><tr><td class='line-number'><a name='L102' href='#L102'><pre>102</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L103' href='#L103'><pre>103</pre></a></td><td class='covered-line'><pre>61</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L104' href='#L104'><pre>104</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L105' href='#L105'><pre>105</pre></a></td><td class='covered-line'><pre>846</pre></td><td class='code'><pre> if let Some(sleep) = self.sleep.as_mut() {</pre></td></tr><tr><td class='line-number'><a name='L106' href='#L106'><pre>106</pre></a></td><td class='covered-line'><pre>831</pre></td><td class='code'><pre> match sleep.as_mut().poll(cx) {</pre></td></tr><tr><td class='line-number'><a name='L107' href='#L107'><pre>107</pre></a></td><td class='covered-line'><pre>831</pre></td><td class='code'><pre> Poll::Ready(_) =&gt; {</pre></td></tr><tr><td class='line-number'><a name='L108' href='#L108'><pre>108</pre></a></td><td class='covered-line'><pre>77</pre></td><td class='code'><pre> let item = self.past_messages.pop_front();</pre></td></tr><tr><td class='line-number'><a name='L109' href='#L109'><pre>109</pre></a></td><td class='covered-line'><pre>77</pre></td><td class='code'><pre> self.set_sleep();</pre></td></tr><tr><td class='line-number'><a name='L110' href='#L110'><pre>110</pre></a></td><td class='covered-line'><pre>77</pre></td><td class='code'><pre> if let Some((k, v)) = item {</pre></td></tr><tr><td class='line-number'><a name='L111' href='#L111'><pre>111</pre></a></td><td class='covered-line'><pre>77</pre></td><td class='code'><pre> return Poll::Ready(Some(KeyValue::unsplit(k, v.value)));</pre></td></tr><tr><td class='line-number'><a name='L112' href='#L112'><pre>112</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre> }<span class='red'></span></pre></td></tr><tr><td class='line-number'><a name='L113' href='#L113'><pre>113</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L114' href='#L114'><pre>114</pre></a></td><td class='covered-line'><pre>754</pre></td><td class='code'><pre> Poll::Pending =&gt; {}</pre></td></tr><tr><td class='line-number'><a name='L115' href='#L115'><pre>115</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L116' href='#L116'><pre>116</pre></a></td><td class='covered-line'><pre>15</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L117' href='#L117'><pre>117</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L118' href='#L118'><pre>118</pre></a></td><td class='covered-line'><pre>769</pre></td><td class='code'><pre> if self.input_finished &amp;&amp; self.sleep.is_none() {</pre></td></tr><tr><td class='line-number'><a name='L119' href='#L119'><pre>119</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> return Poll::Ready(None);</pre></td></tr><tr><td class='line-number'><a name='L120' href='#L120'><pre>120</pre></a></td><td class='covered-line'><pre>763</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L121' href='#L121'><pre>121</pre></a></td><td class='covered-line'><pre>763</pre></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L122' href='#L122'><pre>122</pre></a></td><td class='covered-line'><pre>763</pre></td><td class='code'><pre> Poll::Pending</pre></td></tr><tr><td class='line-number'><a name='L123' href='#L123'><pre>123</pre></a></td><td class='covered-line'><pre>846</pre></td><td class='code'><pre> }</pre><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(char, usize), char, usize, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(char, usize, u64)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::rand_stream::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::rand_stream::{closure#0}::{closure#0}&gt;&gt; as futures_core::stream::Stream&gt;::poll_next</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L88' href='#L88'><pre>88</pre></a></td><td class='covered-line'><pre>803</pre></td><td class='code'><pre> fn poll_next(</pre></td></tr><tr><td class='line-number'><a name='L89' href='#L89'><pre>89</pre></a></td><td class='covered-line'><pre>803</pre></td><td class='code'><pre> mut self: std::pin::Pin&lt;&amp;mut Self&gt;,</pre></td></tr><tr><td class='line-number'><a name='L90' href='#L90'><pre>90</pre></a></td><td class='covered-line'><pre>803</pre></td><td class='code'><pre> cx: &amp;mut Context&lt;&apos;_&gt;,</pre></td></tr><tr><td class='line-number'><a name='L91' href='#L91'><pre>91</pre></a></td><td class='covered-line'><pre>803</pre></td><td class='code'><pre> ) -&gt; Poll&lt;Option&lt;Self::Item&gt;&gt; {</pre></td></tr><tr><td class='line-number'><a name='L92' href='#L92'><pre>92</pre></a></td><td class='covered-line'><pre>803</pre></td><td class='code'><pre> if !self.input_finished {</pre></td></tr><tr><td class='line-number'><a name='L93' href='#L93'><pre>93</pre></a></td><td class='covered-line'><pre>755</pre></td><td class='code'><pre> match Pin::new(&amp;mut self.inner_stream).poll_next(cx) {</pre></td></tr><tr><td class='line-number'><a name='L94' href='#L94'><pre>94</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> Poll::Ready(Some(item)) =&gt; {</pre></td></tr><tr><td class='line-number'><a name='L95' href='#L95'><pre>95</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> let (k, v) = item.split();</pre></td></tr><tr><td class='line-number'><a name='L96' href='#L96'><pre>96</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> self.past_messages.remove(&amp;k); // have to remove key so new entry is at end of list</pre></td></tr><tr><td class='line-number'><a name='L97' href='#L97'><pre>97</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> self.past_messages.insert(k, TimedItem::new(v));</pre></td></tr><tr><td class='line-number'><a name='L98' href='#L98'><pre>98</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> self.set_sleep();</pre></td></tr><tr><td class='line-number'><a name='L99' href='#L99'><pre>99</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L100' href='#L100'><pre>100</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> Poll::Ready(None) =&gt; self.input_finished = true,</pre></td></tr><tr><td class='line-number'><a name='L101' href='#L101'><pre>101</pre></a></td><td class='covered-line'><pre>553</pre></td><td class='code'><pre> Poll::Pending =&gt; {}</pre></td></tr><tr><td class='line-number'><a name='L102' href='#L102'><pre>102</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L103' href='#L103'><pre>103</pre></a></td><td class='covered-line'><pre>48</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L104' href='#L104'><pre>104</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L105' href='#L105'><pre>105</pre></a></td><td class='covered-line'><pre>803</pre></td><td class='code'><pre> if let Some(sleep) = self.sleep.as_mut() {</pre></td></tr><tr><td class='line-number'><a name='L106' href='#L106'><pre>106</pre></a></td><td class='covered-line'><pre>798</pre></td><td class='code'><pre> match sleep.as_mut().poll(cx) {</pre></td></tr><tr><td class='line-number'><a name='L107' href='#L107'><pre>107</pre></a></td><td class='covered-line'><pre>798</pre></td><td class='code'><pre> Poll::Ready(_) =&gt; {</pre></td></tr><tr><td class='line-number'><a name='L108' href='#L108'><pre>108</pre></a></td><td class='covered-line'><pre>69</pre></td><td class='code'><pre> let item = self.past_messages.pop_front();</pre></td></tr><tr><td class='line-number'><a name='L109' href='#L109'><pre>109</pre></a></td><td class='covered-line'><pre>69</pre></td><td class='code'><pre> self.set_sleep();</pre></td></tr><tr><td class='line-number'><a name='L110' href='#L110'><pre>110</pre></a></td><td class='covered-line'><pre>69</pre></td><td class='code'><pre> if let Some((k, v)) = item {</pre></td></tr><tr><td class='line-number'><a name='L111' href='#L111'><pre>111</pre></a></td><td class='covered-line'><pre>69</pre></td><td class='code'><pre> return Poll::Ready(Some(KeyValue::unsplit(k, v.value)));</pre></td></tr><tr><td class='line-number'><a name='L112' href='#L112'><pre>112</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre> }<span class='red'></span></pre></td></tr><tr><td class='line-number'><a name='L113' href='#L113'><pre>113</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L114' href='#L114'><pre>114</pre></a></td><td class='covered-line'><pre>729</pre></td><td class='code'><pre> Poll::Pending =&gt; {}</pre></td></tr><tr><td class='line-number'><a name='L115' href='#L115'><pre>115</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L116' href='#L116'><pre>116</pre></a></td><td class='covered-line'><pre>5</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L117' href='#L117'><pre>117</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L118' href='#L118'><pre>118</pre></a></td><td class='covered-line'><pre>734</pre></td><td class='code'><pre> if self.input_finished &amp;&amp; self.sleep.is_none() {</pre></td></tr><tr><td class='line-number'><a name='L119' href='#L119'><pre>119</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> return Poll::Ready(None);</pre></td></tr><tr><td class='line-number'><a name='L120' href='#L120'><pre>120</pre></a></td><td class='covered-line'><pre>732</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L121' href='#L121'><pre>121</pre></a></td><td class='covered-line'><pre>732</pre></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L122' href='#L122'><pre>122</pre></a></td><td class='covered-line'><pre>732</pre></td><td class='code'><pre> Poll::Pending</pre></td></tr><tr><td class='line-number'><a name='L123' href='#L123'><pre>123</pre></a></td><td class='covered-line'><pre>803</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, u32), &amp;str, u32, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, u32)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::same_key_delayed_test::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::same_key_delayed_test::{closure#0}::{closure#0}&gt;&gt; as futures_core::stream::Stream&gt;::poll_next</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L88' href='#L88'><pre>88</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> fn poll_next(</pre></td></tr><tr><td class='line-number'><a name='L89' href='#L89'><pre>89</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> mut self: std::pin::Pin&lt;&amp;mut Self&gt;,</pre></td></tr><tr><td class='line-number'><a name='L90' href='#L90'><pre>90</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> cx: &amp;mut Context&lt;&apos;_&gt;,</pre></td></tr><tr><td class='line-number'><a name='L91' href='#L91'><pre>91</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> ) -&gt; Poll&lt;Option&lt;Self::Item&gt;&gt; {</pre></td></tr><tr><td class='line-number'><a name='L92' href='#L92'><pre>92</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> if !self.input_finished {</pre></td></tr><tr><td class='line-number'><a name='L93' href='#L93'><pre>93</pre></a></td><td class='covered-line'><pre>13</pre></td><td class='code'><pre> match Pin::new(&amp;mut self.inner_stream).poll_next(cx) {</pre></td></tr><tr><td class='line-number'><a name='L94' href='#L94'><pre>94</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> Poll::Ready(Some(item)) =&gt; {</pre></td></tr><tr><td class='line-number'><a name='L95' href='#L95'><pre>95</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> let (k, v) = item.split();</pre></td></tr><tr><td class='line-number'><a name='L96' href='#L96'><pre>96</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.past_messages.remove(&amp;k); // have to remove key so new entry is at end of list</pre></td></tr><tr><td class='line-number'><a name='L97' href='#L97'><pre>97</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.past_messages.insert(k, TimedItem::new(v));</pre></td></tr><tr><td class='line-number'><a name='L98' href='#L98'><pre>98</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.set_sleep();</pre></td></tr><tr><td class='line-number'><a name='L99' href='#L99'><pre>99</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L100' href='#L100'><pre>100</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> Poll::Ready(None) =&gt; self.input_finished = true,</pre></td></tr><tr><td class='line-number'><a name='L101' href='#L101'><pre>101</pre></a></td><td class='covered-line'><pre>9</pre></td><td class='code'><pre> Poll::Pending =&gt; {}</pre></td></tr><tr><td class='line-number'><a name='L102' href='#L102'><pre>102</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L103' href='#L103'><pre>103</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L104' href='#L104'><pre>104</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L105' href='#L105'><pre>105</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> if let Some(sleep) = self.sleep.as_mut() {</pre></td></tr><tr><td class='line-number'><a name='L106' href='#L106'><pre>106</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> match sleep.as_mut().poll(cx) {</pre></td></tr><tr><td class='line-number'><a name='L107' href='#L107'><pre>107</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> Poll::Ready(_) =&gt; {</pre></td></tr><tr><td class='line-number'><a name='L108' href='#L108'><pre>108</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> let item = self.past_messages.pop_front();</pre></td></tr><tr><td class='line-number'><a name='L109' href='#L109'><pre>109</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.set_sleep();</pre></td></tr><tr><td class='line-number'><a name='L110' href='#L110'><pre>110</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> if let Some((k, v)) = item {</pre></td></tr><tr><td class='line-number'><a name='L111' href='#L111'><pre>111</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> return Poll::Ready(Some(KeyValue::unsplit(k, v.value)));</pre></td></tr><tr><td class='line-number'><a name='L112' href='#L112'><pre>112</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre> }<span class='red'></span></pre></td></tr><tr><td class='line-number'><a name='L113' href='#L113'><pre>113</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L114' href='#L114'><pre>114</pre></a></td><td class='covered-line'><pre>7</pre></td><td class='code'><pre> Poll::Pending =&gt; {}</pre></td></tr><tr><td class='line-number'><a name='L115' href='#L115'><pre>115</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L116' href='#L116'><pre>116</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L117' href='#L117'><pre>117</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L118' href='#L118'><pre>118</pre></a></td><td class='covered-line'><pre>13</pre></td><td class='code'><pre> if self.input_finished &amp;&amp; self.sleep.is_none() {</pre></td></tr><tr><td class='line-number'><a name='L119' href='#L119'><pre>119</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> return Poll::Ready(None);</pre></td></tr><tr><td class='line-number'><a name='L120' href='#L120'><pre>120</pre></a></td><td class='covered-line'><pre>12</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L121' href='#L121'><pre>121</pre></a></td><td class='covered-line'><pre>12</pre></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L122' href='#L122'><pre>122</pre></a></td><td class='covered-line'><pre>12</pre></td><td class='code'><pre> Poll::Pending</pre></td></tr><tr><td class='line-number'><a name='L123' href='#L123'><pre>123</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, i32), &amp;str, i32, futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, i32)&gt;&gt;&gt; as futures_core::stream::Stream&gt;::poll_next</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L88' href='#L88'><pre>88</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> fn poll_next(</pre></td></tr><tr><td class='line-number'><a name='L89' href='#L89'><pre>89</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> mut self: std::pin::Pin&lt;&amp;mut Self&gt;,</pre></td></tr><tr><td class='line-number'><a name='L90' href='#L90'><pre>90</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> cx: &amp;mut Context&lt;&apos;_&gt;,</pre></td></tr><tr><td class='line-number'><a name='L91' href='#L91'><pre>91</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> ) -&gt; Poll&lt;Option&lt;Self::Item&gt;&gt; {</pre></td></tr><tr><td class='line-number'><a name='L92' href='#L92'><pre>92</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> if !self.input_finished {</pre></td></tr><tr><td class='line-number'><a name='L93' href='#L93'><pre>93</pre></a></td><td class='covered-line'><pre>8</pre></td><td class='code'><pre> match Pin::new(&amp;mut self.inner_stream).poll_next(cx) {</pre></td></tr><tr><td class='line-number'><a name='L94' href='#L94'><pre>94</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> Poll::Ready(Some(item)) =&gt; {</pre></td></tr><tr><td class='line-number'><a name='L95' href='#L95'><pre>95</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> let (k, v) = item.split();</pre></td></tr><tr><td class='line-number'><a name='L96' href='#L96'><pre>96</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> self.past_messages.remove(&amp;k); // have to remove key so new entry is at end of list</pre></td></tr><tr><td class='line-number'><a name='L97' href='#L97'><pre>97</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> self.past_messages.insert(k, TimedItem::new(v));</pre></td></tr><tr><td class='line-number'><a name='L98' href='#L98'><pre>98</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> self.set_sleep();</pre></td></tr><tr><td class='line-number'><a name='L99' href='#L99'><pre>99</pre></a></td><td class='covered-line'><pre>6</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L100' href='#L100'><pre>100</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> Poll::Ready(None) =&gt; self.input_finished = true,</pre></td></tr><tr><td class='line-number'><a name='L101' href='#L101'><pre>101</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre> Poll::Pending =&gt; <span class='red'>{}</span></pre></td></tr><tr><td class='line-number'><a name='L102' href='#L102'><pre>102</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L103' href='#L103'><pre>103</pre></a></td><td class='covered-line'><pre>8</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L104' href='#L104'><pre>104</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L105' href='#L105'><pre>105</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> if let Some(sleep) = self.sleep.as_mut() {</pre></td></tr><tr><td class='line-number'><a name='L106' href='#L106'><pre>106</pre></a></td><td class='covered-line'><pre>14</pre></td><td class='code'><pre> match sleep.as_mut().poll(cx) {</pre></td></tr><tr><td class='line-number'><a name='L107' href='#L107'><pre>107</pre></a></td><td class='covered-line'><pre>14</pre></td><td class='code'><pre> Poll::Ready(_) =&gt; {</pre></td></tr><tr><td class='line-number'><a name='L108' href='#L108'><pre>108</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> let item = self.past_messages.pop_front();</pre></td></tr><tr><td class='line-number'><a name='L109' href='#L109'><pre>109</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> self.set_sleep();</pre></td></tr><tr><td class='line-number'><a name='L110' href='#L110'><pre>110</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> if let Some((k, v)) = item {</pre></td></tr><tr><td class='line-number'><a name='L111' href='#L111'><pre>111</pre></a></td><td class='covered-line'><pre>4</pre></td><td class='code'><pre> return Poll::Ready(Some(KeyValue::unsplit(k, v.value)));</pre></td></tr><tr><td class='line-number'><a name='L112' href='#L112'><pre>112</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre> }<span class='red'></span></pre></td></tr><tr><td class='line-number'><a name='L113' href='#L113'><pre>113</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L114' href='#L114'><pre>114</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> Poll::Pending =&gt; {}</pre></td></tr><tr><td class='line-number'><a name='L115' href='#L115'><pre>115</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L116' href='#L116'><pre>116</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L117' href='#L117'><pre>117</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L118' href='#L118'><pre>118</pre></a></td><td class='covered-line'><pre>12</pre></td><td class='code'><pre> if self.input_finished &amp;&amp; self.sleep.is_none() {</pre></td></tr><tr><td class='line-number'><a name='L119' href='#L119'><pre>119</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> return Poll::Ready(None);</pre></td></tr><tr><td class='line-number'><a name='L120' href='#L120'><pre>120</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L121' href='#L121'><pre>121</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L122' href='#L122'><pre>122</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> Poll::Pending</pre></td></tr><tr><td class='line-number'><a name='L123' href='#L123'><pre>123</pre></a></td><td class='covered-line'><pre>16</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div><div class='expansion-view'><div class='centered'><table><div class='source-name-title'><pre>&lt;dstream::DelayedStream&lt;(&amp;str, u32), &amp;str, u32, futures_util::stream::stream::then::Then&lt;futures_util::stream::iter::Iter&lt;alloc::vec::into_iter::IntoIter&lt;(&amp;str, u32)&gt;&gt;, core::pin::Pin&lt;alloc::boxed::Box&lt;futures_util::future::future::Map&lt;tokio::time::driver::sleep::Sleep, dstream::tests::same_key_little_delayed_test::{closure#0}::{closure#0}::{closure#0}&gt;&gt;&gt;, dstream::tests::same_key_little_delayed_test::{closure#0}::{closure#0}&gt;&gt; as futures_core::stream::Stream&gt;::poll_next</pre></div><tr><td><pre>Line</pre></td><td><pre>Count</pre></td><td><pre>Source</pre></td></tr><tr><td class='line-number'><a name='L88' href='#L88'><pre>88</pre></a></td><td class='covered-line'><pre>11</pre></td><td class='code'><pre> fn poll_next(</pre></td></tr><tr><td class='line-number'><a name='L89' href='#L89'><pre>89</pre></a></td><td class='covered-line'><pre>11</pre></td><td class='code'><pre> mut self: std::pin::Pin&lt;&amp;mut Self&gt;,</pre></td></tr><tr><td class='line-number'><a name='L90' href='#L90'><pre>90</pre></a></td><td class='covered-line'><pre>11</pre></td><td class='code'><pre> cx: &amp;mut Context&lt;&apos;_&gt;,</pre></td></tr><tr><td class='line-number'><a name='L91' href='#L91'><pre>91</pre></a></td><td class='covered-line'><pre>11</pre></td><td class='code'><pre> ) -&gt; Poll&lt;Option&lt;Self::Item&gt;&gt; {</pre></td></tr><tr><td class='line-number'><a name='L92' href='#L92'><pre>92</pre></a></td><td class='covered-line'><pre>11</pre></td><td class='code'><pre> if !self.input_finished {</pre></td></tr><tr><td class='line-number'><a name='L93' href='#L93'><pre>93</pre></a></td><td class='covered-line'><pre>9</pre></td><td class='code'><pre> match Pin::new(&amp;mut self.inner_stream).poll_next(cx) {</pre></td></tr><tr><td class='line-number'><a name='L94' href='#L94'><pre>94</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> Poll::Ready(Some(item)) =&gt; {</pre></td></tr><tr><td class='line-number'><a name='L95' href='#L95'><pre>95</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> let (k, v) = item.split();</pre></td></tr><tr><td class='line-number'><a name='L96' href='#L96'><pre>96</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.past_messages.remove(&amp;k); // have to remove key so new entry is at end of list</pre></td></tr><tr><td class='line-number'><a name='L97' href='#L97'><pre>97</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.past_messages.insert(k, TimedItem::new(v));</pre></td></tr><tr><td class='line-number'><a name='L98' href='#L98'><pre>98</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> self.set_sleep();</pre></td></tr><tr><td class='line-number'><a name='L99' href='#L99'><pre>99</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L100' href='#L100'><pre>100</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> Poll::Ready(None) =&gt; self.input_finished = true,</pre></td></tr><tr><td class='line-number'><a name='L101' href='#L101'><pre>101</pre></a></td><td class='covered-line'><pre>5</pre></td><td class='code'><pre> Poll::Pending =&gt; {}</pre></td></tr><tr><td class='line-number'><a name='L102' href='#L102'><pre>102</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L103' href='#L103'><pre>103</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L104' href='#L104'><pre>104</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L105' href='#L105'><pre>105</pre></a></td><td class='covered-line'><pre>11</pre></td><td class='code'><pre> if let Some(sleep) = self.sleep.as_mut() {</pre></td></tr><tr><td class='line-number'><a name='L106' href='#L106'><pre>106</pre></a></td><td class='covered-line'><pre>9</pre></td><td class='code'><pre> match sleep.as_mut().poll(cx) {</pre></td></tr><tr><td class='line-number'><a name='L107' href='#L107'><pre>107</pre></a></td><td class='covered-line'><pre>9</pre></td><td class='code'><pre> Poll::Ready(_) =&gt; {</pre></td></tr><tr><td class='line-number'><a name='L108' href='#L108'><pre>108</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let item = self.past_messages.pop_front();</pre></td></tr><tr><td class='line-number'><a name='L109' href='#L109'><pre>109</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> self.set_sleep();</pre></td></tr><tr><td class='line-number'><a name='L110' href='#L110'><pre>110</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> if let Some((k, v)) = item {</pre></td></tr><tr><td class='line-number'><a name='L111' href='#L111'><pre>111</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> return Poll::Ready(Some(KeyValue::unsplit(k, v.value)));</pre></td></tr><tr><td class='line-number'><a name='L112' href='#L112'><pre>112</pre></a></td><td class='uncovered-line'><pre>0</pre></td><td class='code'><pre> }<span class='red'></span></pre></td></tr><tr><td class='line-number'><a name='L113' href='#L113'><pre>113</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L114' href='#L114'><pre>114</pre></a></td><td class='covered-line'><pre>8</pre></td><td class='code'><pre> Poll::Pending =&gt; {}</pre></td></tr><tr><td class='line-number'><a name='L115' href='#L115'><pre>115</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L116' href='#L116'><pre>116</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L117' href='#L117'><pre>117</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L118' href='#L118'><pre>118</pre></a></td><td class='covered-line'><pre>10</pre></td><td class='code'><pre> if self.input_finished &amp;&amp; self.sleep.is_none() {</pre></td></tr><tr><td class='line-number'><a name='L119' href='#L119'><pre>119</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> return Poll::Ready(None);</pre></td></tr><tr><td class='line-number'><a name='L120' href='#L120'><pre>120</pre></a></td><td class='covered-line'><pre>9</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L121' href='#L121'><pre>121</pre></a></td><td class='covered-line'><pre>9</pre></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L122' href='#L122'><pre>122</pre></a></td><td class='covered-line'><pre>9</pre></td><td class='code'><pre> Poll::Pending</pre></td></tr><tr><td class='line-number'><a name='L123' href='#L123'><pre>123</pre></a></td><td class='covered-line'><pre>11</pre></td><td class='code'><pre> }</pre></td></tr></table></div></div></td></tr><tr><td class='line-number'><a name='L124' href='#L124'><pre>124</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>}</pre></td></tr><tr><td class='line-number'><a name='L125' href='#L125'><pre>125</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L126' href='#L126'><pre>126</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>#[cfg(test)]</pre></td></tr><tr><td class='line-number'><a name='L127' href='#L127'><pre>127</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>mod tests {</pre></td></tr><tr><td class='line-number'><a name='L128' href='#L128'><pre>128</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> use rand::Rng;</pre></td></tr><tr><td class='line-number'><a name='L129' href='#L129'><pre>129</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> use tokio::time::sleep;</pre></td></tr><tr><td class='line-number'><a name='L130' href='#L130'><pre>130</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L131' href='#L131'><pre>131</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> use futures::{FutureExt, StreamExt};</pre></td></tr><tr><td class='line-number'><a name='L132' href='#L132'><pre>132</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L133' href='#L133'><pre>133</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> use super::*;</pre></td></tr><tr><td class='line-number'><a name='L134' href='#L134'><pre>134</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> #[tokio::test]</pre></td></tr><tr><td class='line-number'><a name='L135' href='#L135'><pre>135</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> async fn same_key_test() {</pre></td></tr><tr><td class='line-number'><a name='L136' href='#L136'><pre>136</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let values = vec![(&quot;A&quot;, 1), (&quot;A&quot;, 2), (&quot;A&quot;, 3)];</pre></td></tr><tr><td class='line-number'><a name='L137' href='#L137'><pre>137</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let s = futures::stream::iter(values.into_iter());</pre></td></tr><tr><td class='line-number'><a name='L138' href='#L138'><pre>138</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let ds = DelayedStream::new(s, Duration::from_millis(10));</pre></td></tr><tr><td class='line-number'><a name='L139' href='#L139'><pre>139</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let res: Vec&lt;_&gt; = ds.collect().await;</pre></td></tr><tr><td class='line-number'><a name='L140' href='#L140'><pre>140</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert_eq!(1, res.len());</pre></td></tr><tr><td class='line-number'><a name='L141' href='#L141'><pre>141</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert_eq!(3, res[0].1);</pre></td></tr><tr><td class='line-number'><a name='L142' href='#L142'><pre>142</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L143' href='#L143'><pre>143</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L144' href='#L144'><pre>144</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> #[tokio::test]</pre></td></tr><tr><td class='line-number'><a name='L145' href='#L145'><pre>145</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> async fn different_key_test() {</pre></td></tr><tr><td class='line-number'><a name='L146' href='#L146'><pre>146</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let values = vec![(&quot;A&quot;, 1), (&quot;B&quot;, 2), (&quot;C&quot;, 3)];</pre></td></tr><tr><td class='line-number'><a name='L147' href='#L147'><pre>147</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let s = futures::stream::iter(values.clone().into_iter());</pre></td></tr><tr><td class='line-number'><a name='L148' href='#L148'><pre>148</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let ds = DelayedStream::new(s, Duration::from_millis(10));</pre></td></tr><tr><td class='line-number'><a name='L149' href='#L149'><pre>149</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let res: Vec&lt;_&gt; = ds.collect().await;</pre></td></tr><tr><td class='line-number'><a name='L150' href='#L150'><pre>150</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert_eq!(3, res.len());</pre></td></tr><tr><td class='line-number'><a name='L151' href='#L151'><pre>151</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert_eq!(values, res);</pre></td></tr><tr><td class='line-number'><a name='L152' href='#L152'><pre>152</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L153' href='#L153'><pre>153</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L154' href='#L154'><pre>154</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> #[tokio::test]</pre></td></tr><tr><td class='line-number'><a name='L155' href='#L155'><pre>155</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> async fn same_key_delayed_test() {</pre></td></tr><tr><td class='line-number'><a name='L156' href='#L156'><pre>156</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let values = vec![(&quot;A&quot;, 1u32), (&quot;A&quot;, 2), (&quot;A&quot;, 3)];</pre></td></tr><tr><td class='line-number'><a name='L157' href='#L157'><pre>157</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let s = futures::stream::iter(values.clone().into_iter());</pre></td></tr><tr><td class='line-number'><a name='L158' href='#L158'><pre>158</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> let s = s.then(|i| Box::pin(sleep(Duration::from_millis(20)).map(move |_| i)));</pre></td></tr><tr><td class='line-number'><a name='L159' href='#L159'><pre>159</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let ds = DelayedStream::new(s, Duration::from_millis(10));</pre></td></tr><tr><td class='line-number'><a name='L160' href='#L160'><pre>160</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let res: Vec&lt;_&gt; = ds.collect().await;</pre></td></tr><tr><td class='line-number'><a name='L161' href='#L161'><pre>161</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert_eq!(3, res.len());</pre></td></tr><tr><td class='line-number'><a name='L162' href='#L162'><pre>162</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert_eq!(values, res);</pre></td></tr><tr><td class='line-number'><a name='L163' href='#L163'><pre>163</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L164' href='#L164'><pre>164</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L165' href='#L165'><pre>165</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> #[tokio::test]</pre></td></tr><tr><td class='line-number'><a name='L166' href='#L166'><pre>166</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> async fn same_key_little_delayed_test() {</pre></td></tr><tr><td class='line-number'><a name='L167' href='#L167'><pre>167</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let values = vec![(&quot;A&quot;, 1u32), (&quot;A&quot;, 2), (&quot;A&quot;, 3)];</pre></td></tr><tr><td class='line-number'><a name='L168' href='#L168'><pre>168</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let s = futures::stream::iter(values.clone().into_iter());</pre></td></tr><tr><td class='line-number'><a name='L169' href='#L169'><pre>169</pre></a></td><td class='covered-line'><pre>3</pre></td><td class='code'><pre> let s = s.then(|i| Box::pin(sleep(Duration::from_millis(5)).map(move |_| i)));</pre></td></tr><tr><td class='line-number'><a name='L170' href='#L170'><pre>170</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let ds = DelayedStream::new(s, Duration::from_millis(10));</pre></td></tr><tr><td class='line-number'><a name='L171' href='#L171'><pre>171</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let res: Vec&lt;_&gt; = ds.collect().await;</pre></td></tr><tr><td class='line-number'><a name='L172' href='#L172'><pre>172</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert_eq!(1, res.len());</pre></td></tr><tr><td class='line-number'><a name='L173' href='#L173'><pre>173</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert_eq!(3, res[0].1);</pre></td></tr><tr><td class='line-number'><a name='L174' href='#L174'><pre>174</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L175' href='#L175'><pre>175</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L176' href='#L176'><pre>176</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> async fn rand_stream(delay: u64) -&gt; Vec&lt;(char, usize)&gt; {</pre></td></tr><tr><td class='line-number'><a name='L177' href='#L177'><pre>177</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> let keys = &apos;A&apos;..=&apos;J&apos;;</pre></td></tr><tr><td class='line-number'><a name='L178' href='#L178'><pre>178</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> let step = 3; //ms</pre></td></tr><tr><td class='line-number'><a name='L179' href='#L179'><pre>179</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> let steps = 10;</pre></td></tr><tr><td class='line-number'><a name='L180' href='#L180'><pre>180</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> let size = 100;</pre></td></tr><tr><td class='line-number'><a name='L181' href='#L181'><pre>181</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L182' href='#L182'><pre>182</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> let mut values = Vec::with_capacity(size);</pre></td></tr><tr><td class='line-number'><a name='L183' href='#L183'><pre>183</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> let mut rng = rand::thread_rng();</pre></td></tr><tr><td class='line-number'><a name='L184' href='#L184'><pre>184</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> for i in 0..size {</pre></td></tr><tr><td class='line-number'><a name='L185' href='#L185'><pre>185</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> let key = rng.gen_range(keys.clone());</pre></td></tr><tr><td class='line-number'><a name='L186' href='#L186'><pre>186</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> let d = rng.gen_range(1..=steps) * step;</pre></td></tr><tr><td class='line-number'><a name='L187' href='#L187'><pre>187</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> values.push((key, i, d))</pre></td></tr><tr><td class='line-number'><a name='L188' href='#L188'><pre>188</pre></a></td><td class='uncovered-line'></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L189' href='#L189'><pre>189</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> let s = futures::stream::iter(values.clone().into_iter());</pre></td></tr><tr><td class='line-number'><a name='L190' href='#L190'><pre>190</pre></a></td><td class='covered-line'><pre>200</pre></td><td class='code'><pre> let s = s.then(|(k, v, d)| Box::pin(sleep(Duration::from_millis(d)).map(move |_| (k, v))));</pre></td></tr><tr><td class='line-number'><a name='L191' href='#L191'><pre>191</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> let ds = DelayedStream::new(s, Duration::from_millis(delay));</pre></td></tr><tr><td class='line-number'><a name='L192' href='#L192'><pre>192</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> ds.collect().await</pre></td></tr><tr><td class='line-number'><a name='L193' href='#L193'><pre>193</pre></a></td><td class='covered-line'><pre>2</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L194' href='#L194'><pre>194</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L195' href='#L195'><pre>195</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> #[tokio::test]</pre></td></tr><tr><td class='line-number'><a name='L196' href='#L196'><pre>196</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> async fn rand_stream_test() {</pre></td></tr><tr><td class='line-number'><a name='L197' href='#L197'><pre>197</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let res = rand_stream(2000).await;</pre></td></tr><tr><td class='line-number'><a name='L198' href='#L198'><pre>198</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> println!(&quot;result({}): {:?}&quot;, res.len(), res);</pre></td></tr><tr><td class='line-number'><a name='L199' href='#L199'><pre>199</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert_eq!(10, res.len());</pre></td></tr><tr><td class='line-number'><a name='L200' href='#L200'><pre>200</pre></a></td><td class='uncovered-line'></td><td class='code'><pre></pre></td></tr><tr><td class='line-number'><a name='L201' href='#L201'><pre>201</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> let res = rand_stream(100).await;</pre></td></tr><tr><td class='line-number'><a name='L202' href='#L202'><pre>202</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> println!(&quot;result({}): {:?}&quot;, res.len(), res);</pre></td></tr><tr><td class='line-number'><a name='L203' href='#L203'><pre>203</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert!(res.len() &gt; 30);</pre></td></tr><tr><td class='line-number'><a name='L204' href='#L204'><pre>204</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> assert!(res.len() &lt; 90);</pre></td></tr><tr><td class='line-number'><a name='L205' href='#L205'><pre>205</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre> }</pre></td></tr><tr><td class='line-number'><a name='L206' href='#L206'><pre>206</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>}</pre></td></tr></table></div></body></html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment