<feed xmlns='http://www.w3.org/2005/Atom'>
<title>reflectub, branch v0.0.1</title>
<subtitle>Mirror a user’s GitHub repositories</subtitle>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/'/>
<entry>
<title>README: Add real information</title>
<updated>2021-06-20T13:34:56+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2021-06-20T13:29:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/commit/?id=42a6577b47a42275d1ea19bc0cf6ed7b565a82a4'/>
<id>42a6577b47a42275d1ea19bc0cf6ed7b565a82a4</id>
<content type='text'>
The previous README was just a quick usage note for others when I needed
to ask a question on IRC.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The previous README was just a quick usage note for others when I needed
to ask a question on IRC.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add manual page</title>
<updated>2021-06-20T13:24:43+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2021-06-20T13:24:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/commit/?id=4e79052816233a7ad261e76154832b89b0614c0f'/>
<id>4e79052816233a7ad261e76154832b89b0614c0f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>run(): Only clone repo name if we need it for error context</title>
<updated>2021-06-15T18:58:19+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2021-06-15T18:58:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/commit/?id=9cac11872c3b62362ac884a8ac0151581076b99a'/>
<id>9cac11872c3b62362ac884a8ac0151581076b99a</id>
<content type='text'>
This avoids cloning names of repos that are processed successfully.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This avoids cloning names of repos that are processed successfully.
</pre>
</div>
</content>
</entry>
<entry>
<title>run(): Remove debug print of the current thread</title>
<updated>2021-06-13T18:41:58+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2021-06-13T18:41:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/commit/?id=0f04d7cbb8052ed2a9d48a2579319e48e2305768'/>
<id>0f04d7cbb8052ed2a9d48a2579319e48e2305768</id>
<content type='text'>
We know this runs on multiple threads now, so this debug line can be
removed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We know this runs on multiple threads now, so this debug line can be
removed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update TODO</title>
<updated>2021-06-13T18:25:42+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2021-06-13T18:25:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/commit/?id=3bf36e2c241448045d2f7c1ddccb684f2fbcfcc1'/>
<id>3bf36e2c241448045d2f7c1ddccb684f2fbcfcc1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>run(): Remove limit to two repositories used for testing</title>
<updated>2021-06-13T17:58:44+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2021-06-13T17:58:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/commit/?id=8972b3d088f8c2b9ac78f35f9436639eb49f46db'/>
<id>8972b3d088f8c2b9ac78f35f9436639eb49f46db</id>
<content type='text'>
I artificially limited the number of repositories processed to two for
testing so that I wouldn't download an mirror all of my repositories
while testing the program. Now that things seem to be working, remove
this artificial limit.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I artificially limited the number of repositories processed to two for
testing so that I wouldn't download an mirror all of my repositories
while testing the program. Now that things seem to be working, remove
this artificial limit.
</pre>
</div>
</content>
</entry>
<entry>
<title>main: Add context to GitHub fetch error</title>
<updated>2021-06-13T17:58:23+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2021-06-13T17:58:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/commit/?id=7a9173a5c02248ac61ed657d9ae73b5b3076d154'/>
<id>7a9173a5c02248ac61ed657d9ae73b5b3076d154</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>run(): Don't clone `base_cgitrc` into each thread</title>
<updated>2021-06-13T17:53:36+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2021-06-13T17:53:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/commit/?id=0ba3d6e1f6e09c53d938ec03b30be60fee816924'/>
<id>0ba3d6e1f6e09c53d938ec03b30be60fee816924</id>
<content type='text'>
Rejigger some types and signatures to allow us to get references to the
`base_cgitrc` path instead of copying it for each repository.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rejigger some types and signatures to allow us to get references to the
`base_cgitrc` path instead of copying it for each repository.
</pre>
</div>
</content>
</entry>
<entry>
<title>MultiError: Remove impl `Iterator` tests</title>
<updated>2021-06-13T13:20:21+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2021-06-13T13:20:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/commit/?id=321c1725d4866b3177753942abd3073f2d0041a3'/>
<id>321c1725d4866b3177753942abd3073f2d0041a3</id>
<content type='text'>
Remove the `Iterator` test implementations that didn't work out.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove the `Iterator` test implementations that didn't work out.
</pre>
</div>
</content>
</entry>
<entry>
<title>main(): Print "error: " in front of each error line</title>
<updated>2021-06-13T12:53:47+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2021-06-13T12:53:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/reflectub/commit/?id=bdb52392162500ed1b55e68527668c3b41386c2a'/>
<id>bdb52392162500ed1b55e68527668c3b41386c2a</id>
<content type='text'>
Prefix each error line with the text "error: " to make it clear that's
what it is, and that it's separate from errors printed on other lines.

Worked out how to set up an `Iterator` for `MultiError` based on a
comment by 'chris-morgan' (https://old.reddit.com/user/chris-morgan) on
Reddit /r/rust:

&gt; 1. Implement your own iterator type which wraps existing iterator
&gt;    types (std::slice::Iter, and std::vec::IntoIter if you want a
&gt;    consuming iterator).
&gt;    Advantages: most flexible, ensures API stability if you
&gt;    need to change internal details.
&gt;    Disadvantages: a lot more effort, if you want to do it properly
&gt;    (which involves implementing about ten traits on your iterator
&gt;    wrapper type); and if slices or their iterators add something new,
&gt;    you don’t get it unless you implement a wrapper yourself.
&gt;
&gt; 2. Have your iter() functions and IntoIterator implementations use the
&gt;    standard iterator types directly.
&gt;    Advantages: easier, gets you all the other trait implementations on
&gt;    std::slice::Iter for free—AsRef, Clone, FusedIterator,
&gt;    ExactSizeIterator, Debug, Send, DoubleEndedIterator, TrustedLen,
&gt;    Sync).
&gt;    Disadvantages: if you need to restructure things so that this is no
&gt;    longer an option (e.g. store things in a different type of vector
&gt;    and thus need to map it before presenting it to the user) it’s a
&gt;    breaking change.
&gt;
&gt; 3. Implement Deref&lt;Target = [(K, V)]&gt; and just treat your Bucket&lt;K, V&gt;
&gt;    as a &amp;[(K, V)]. (Read-only; implement DerefMut if you want to allow
&gt;    mutations of values.)
&gt;    Advantages: easy, and lets you simply treat the whole thing as a
&gt;    slice (this is what Vec&lt;T&gt; does).
&gt;    Disadvantages: there really aren’t any, if it matches your purpose.
&gt;    (If not, it’s useless.)

(https://old.reddit.com/r/rust/comments/7a0slp/questionimplementing_iterator_for_a_struct_with_a/)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Prefix each error line with the text "error: " to make it clear that's
what it is, and that it's separate from errors printed on other lines.

Worked out how to set up an `Iterator` for `MultiError` based on a
comment by 'chris-morgan' (https://old.reddit.com/user/chris-morgan) on
Reddit /r/rust:

&gt; 1. Implement your own iterator type which wraps existing iterator
&gt;    types (std::slice::Iter, and std::vec::IntoIter if you want a
&gt;    consuming iterator).
&gt;    Advantages: most flexible, ensures API stability if you
&gt;    need to change internal details.
&gt;    Disadvantages: a lot more effort, if you want to do it properly
&gt;    (which involves implementing about ten traits on your iterator
&gt;    wrapper type); and if slices or their iterators add something new,
&gt;    you don’t get it unless you implement a wrapper yourself.
&gt;
&gt; 2. Have your iter() functions and IntoIterator implementations use the
&gt;    standard iterator types directly.
&gt;    Advantages: easier, gets you all the other trait implementations on
&gt;    std::slice::Iter for free—AsRef, Clone, FusedIterator,
&gt;    ExactSizeIterator, Debug, Send, DoubleEndedIterator, TrustedLen,
&gt;    Sync).
&gt;    Disadvantages: if you need to restructure things so that this is no
&gt;    longer an option (e.g. store things in a different type of vector
&gt;    and thus need to map it before presenting it to the user) it’s a
&gt;    breaking change.
&gt;
&gt; 3. Implement Deref&lt;Target = [(K, V)]&gt; and just treat your Bucket&lt;K, V&gt;
&gt;    as a &amp;[(K, V)]. (Read-only; implement DerefMut if you want to allow
&gt;    mutations of values.)
&gt;    Advantages: easy, and lets you simply treat the whole thing as a
&gt;    slice (this is what Vec&lt;T&gt; does).
&gt;    Disadvantages: there really aren’t any, if it matches your purpose.
&gt;    (If not, it’s useless.)

(https://old.reddit.com/r/rust/comments/7a0slp/questionimplementing_iterator_for_a_struct_with_a/)
</pre>
</div>
</content>
</entry>
</feed>
