<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="223234" data-post-id="223234">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="darkmarmot" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/darkmarmot/120/15926_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  darkmarmot
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Our setup is covered in some detail in this talk: <a href="https://www.youtube.com/watch?v=cVQUPvmmaxQ" rel="noopener nofollow ugc">https://www.youtube.com/watch?v=cVQUPvmmaxQ</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="223234" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/i-think-elixir-2-0-should-drop-structs/41766/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-223234" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="223234"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="223235" data-post-id="223235">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="darkmarmot" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/darkmarmot/120/15926_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  darkmarmot
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>P.S. – Your work on Gleam is inspiring!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="223235" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/i-think-elixir-2-0-should-drop-structs/41766/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-223235" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="223235"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="223239" data-post-id="223239">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jeremyjh" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/120/5995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jeremyjh
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think this versioning problem is a really interesting problem actually. In Haskell there is a library called <a href="https://hackage.haskell.org/package/safecopy-0.10.4.2/docs/Data-SafeCopy.html" rel="noopener nofollow ugc">SafeCopy</a> that attempts to solve the same problem; it is used for restoring binary serialized data in an updated version of the “same” logical type. Basically you have a separate type for each version that has existed, and a typeclass (similar to protocol) that is responsible for migrating the data from the previous version to some later version. I think something conceptually similar could be done in an Elixir library though the details would be completely different (there is no multi-type protocol in Elixir for one thing, but you could manipulate structs as raw maps in a migration function).</p>
<p>It is a very small fraction of the Elixir community that even uses hot code loading so I wouldn’t expect language changes to address it, but I think it could be done in a library and even be pretty usable with the right macros.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="223239" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/i-think-elixir-2-0-should-drop-structs/41766/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-223239" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="223239"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="223242" data-post-id="223242">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wojtekmach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wojtekmach/120/999_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wojtekmach
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Hex Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I must be missing something because I don’t see where the problem is. Please bare with me. This Elixir code:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def f(%Date{} = date) do
  date
end
</code></pre>
<p>compiles to this Erlang code:</p>
<pre data-code-wrap="erlang"><code class="lang-erlang">f(#{'__struct__' := 'Elixir.Date'} = _date@1) -&gt;
    _date@1.
</code></pre>
<p>so at runtime there are no checks on anything besides the <code>__struct__</code> field.</p>
<p>Of course, if you choose to write <code>f(%Date{year: year})</code> and you pass something other than a map<br>
with <code>%{__struct__: Date, year: year}</code> then that’s gonna be a match error.</p>
<p>This functions:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def f(%Date{} = date) do
  date.year
end
</code></pre>
<p>compiles to:</p>
<pre data-code-wrap="erlang"><code class="lang-erlang">f(#{'__struct__' := 'Elixir.Date'} = _date@1) -&gt;
    case _date@1 of
        #{year := _@1} -&gt; _@1;
        _@1 when erlang:is_map(_@1) -&gt;
            erlang:error({badkey, year, _@1});
        _@1 -&gt; _@1:year()
    end.
</code></pre>
<p>so there are no additional checks either.</p>
<p>If you don’t want this behaviour of <code>date.year</code> then call <code>Map.get(date, :year)</code>? Or implement<br>
Access for <em>your</em> structs? (cannot implement it for things you don’t own.)</p>
<p>Is it less about your code where you can choose not to use structs and more about libraries that you want to use which <em>do</em> use them, and thus you run into a danger of a runtime errors when things change?</p>
<p>I’m really curious, what dd you exactly mean by structs becoming more like duct typed maps. Which semantics of the structs are you proposing to change? How should they behave?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="223242" data-batch-url="/posts/batch_likers">
                        13
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/i-think-elixir-2-0-should-drop-structs/41766/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-223242" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="223242"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
    <div class="postbit" id="223259" data-post-id="223259">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cevado" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cevado/120/40655_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cevado
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="darkmarmot" data-post="1" data-topic="41766">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/darkmarmot/48/15926_2.png" class="avatar"> darkmarmot:</div>
<blockquote>
<p>And this is where it gets really ugly. A lot of Elixir’s base data types are implemented as structs, such as Range and DateTime.</p>
<p>So, what seems like a simple non-breaking change for the language, as when the recent version of Elixir added <code>step</code> to Range, could actually cause catastrophic chaos on our distributed system.</p>
</blockquote>
</aside>
<p>i think it’s about the internal elixir structs.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="223259" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/i-think-elixir-2-0-should-drop-structs/41766/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-223259" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="223259"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="223263" data-post-id="223263">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="darkmarmot" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/darkmarmot/120/15926_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  darkmarmot
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I probably should’ve gotten with my team first to put together a list of places where stuff has gone badly for us here. I think we’ve gotten a bit of PTSD about using them at this point, maybe undeservedly in some places.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="223263" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/i-think-elixir-2-0-should-drop-structs/41766/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-223263" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="223263"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="223322" data-post-id="223322">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="al2o3cr" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/al2o3cr/120/3457_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  al2o3cr
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I have a vague recollection of problems with <code>:erlang.binary_to_term</code> and structs with different definitions, but they don’t seem to happen on 1.12 + OTP24:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">iex(1)&gt; defmodule Foo do
...(1)&gt;   defstruct [:foo]
...(1)&gt; end

iex(2)&gt; %Foo{foo: "bar"}
%Foo{foo: "bar"}

iex(3)&gt; %Foo{foo: "bar"} |&gt; :erlang.term_to_binary()
&lt;&lt;131, 116, 0, 0, 0, 2, 100, 0, 10, 95, 95, 115, 116, 114, 117, 99, 116, 95, 95,
  100, 0, 10, 69, 108, 105, 120, 105, 114, 46, 70, 111, 111, 100, 0, 3, 102,
  111, 111, 109, 0, 0, 0, 3, 98, 97, 114&gt;&gt;

---RESTART IEX---

iex(1)&gt; defmodule Foo do
...(1)&gt;   defstruct [:foo, :bar]
...(1)&gt; end

iex(2)&gt; binary = &lt;&lt;131, 116, 0, 0, 0, 2, 100, 0, 10, 95, 95, 115, 116, 114, 117, 99, 116, 95, 95,
...(2)&gt;   100, 0, 10, 69, 108, 105, 120, 105, 114, 46, 70, 111, 111, 100, 0, 3, 102,
...(2)&gt;   111, 111, 109, 0, 0, 0, 3, 98, 97, 114&gt;&gt;

iex(3)&gt; :erlang.binary_to_term(binary)
%{__struct__: Foo, foo: "bar"}

---RESTART IEX---

iex(1)&gt; defmodule Foo do
...(1)&gt;   defstruct [:bar]
...(1)&gt; end

iex(2)&gt; binary = &lt;&lt;131, 116, 0, 0, 0, 2, 100, 0, 10, 95, 95, 115, 116, 114, 117, 99, 116, 95, 95,
...(2)&gt;   100, 0, 10, 69, 108, 105, 120, 105, 114, 46, 70, 111, 111, 100, 0, 3, 102,
...(2)&gt;   111, 111, 109, 0, 0, 0, 3, 98, 97, 114&gt;&gt;

iex(3)&gt; :erlang.binary_to_term(binary)
%{__struct__: Foo, foo: "bar"}
</code></pre>
<p>Even adding <code>@enforce_keys</code> didn’t change that last result <img src="https://forum.elixirforum.com/images/emoji/apple/thinking.png?v=15" title=":thinking:" class="emoji" alt=":thinking:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="223322" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/i-think-elixir-2-0-should-drop-structs/41766/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-223322" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="223322"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="223326" data-post-id="223326">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="hauleth" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hauleth/120/18942_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  hauleth
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Well, the explanation is simple - <code>binary_to_term/1</code> knows nothing about structs. When you use <code>%Foo{foo: "bar"}</code> what Elixir logically does is to check in the compiler cache whether it is allowed construct and then create map with all values. When you do something like <code>struct(Foo, foo: "bar")</code> then it will “behind the scenes” call the hidden “magical” function that will validate all that data. <code>binary_to_term/1</code> is “dumb” deserialiser and doesn’t know anything about Elixir structs, so it happily decode the encoded map. There is no way to circumvent that, as that would additionally make it really hard to use Distributed Erlang with structs. So it is all law of leaky abstractions.</p>
<p><a class="mention" href="/u/darkmarmot" rel="nofollow">@darkmarmot</a> only case when the stuff could go ugly after upgrade is if you have renamed or removed keys from the struct, otherwise it would work perfectly fine, as it is <strong>the</strong> reason why Elixir uses map-backed structs instead of tuple-based records as it is done in Erlang. Whole reason for that is that you can “painlessly” add new or reorder fields in the struct without need to change all pattern matching and recompile modules that use this structure. So you either done some real magic that broken that, or you have done something that would broke the invariants independently whether you would use other constructs. So show us what change have caused that mayhem, because now we are flying dark with explanations.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="223326" data-batch-url="/posts/batch_likers">
                        9
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/i-think-elixir-2-0-should-drop-structs/41766/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-223326" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="223326"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="223341" data-post-id="223341">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="paulstatezny" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/paulstatezny/120/18204_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  paulstatezny
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/darkmarmot" rel="nofollow">@darkmarmot</a> It seems in this thread there’s some disagreement or at least confusion about in what ways things can break due to changing struct shapes.</p>
<p>Would you be willing to share a specific piece of code (or distilled example) and elaborate on in what sense it broke? (The specific runtime error that happened, or whatever else happened.)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="223341" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/i-think-elixir-2-0-should-drop-structs/41766/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-223341" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="223341"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="223345" data-post-id="223345">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="darkmarmot" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/darkmarmot/120/15926_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  darkmarmot
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yeah, thanks!  I’m talking to my team now to see if we can build a project to reproduce what we thought we had been experiencing (to make sure we weren’t just deluding ourselves and misinterpreting data as well as to provide feedback here since it sounds like there are technical reasons we <em>shouldn’t</em> have experienced what we thought we were). And it’s totally possible we were wrong.</p>
<p>It might take a bit, though, as we’re in the middle of a bunch of stuff – but the basic setup will need to send structs between 2 nodes on different versions of a codebase using OTP 22 cluster, rpc and gzip. I’ll update this thread when we have something definitive.</p>
<p>Thanks!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="223345" data-batch-url="/posts/batch_likers">
                        12
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/i-think-elixir-2-0-should-drop-structs/41766/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-223345" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="223345"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/41766/load_more?page=3">Load more posts (3 remaining)</a>
</div></template></turbo-stream>