<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Swastik Baranwal</title>
    <description>The latest articles on DEV Community by Swastik Baranwal (@delta456).</description>
    <link>https://dev.to/delta456</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F244300%2Ff94e2693-9735-4f62-9a41-66e16e7c1fd1.jpg</url>
      <title>DEV Community: Swastik Baranwal</title>
      <link>https://dev.to/delta456</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/delta456"/>
    <language>en</language>
    <item>
      <title>Modern C++: Variadic Templates</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Wed, 12 Nov 2025 20:07:00 +0000</pubDate>
      <link>https://dev.to/delta456/modern-c-variadic-templates-16nn</link>
      <guid>https://dev.to/delta456/modern-c-variadic-templates-16nn</guid>
      <description>&lt;p&gt;This follows my series to cover lesser known features of Modern C++&lt;/p&gt;

&lt;p&gt;Today, we have variadic templates, which is an improvement over variadic arguments (&lt;code&gt;...&lt;/code&gt;), a type of argument that can take variable arguments.&lt;/p&gt;

&lt;p&gt;Before we start with variadic templates, an introduction to variadic arguments is &lt;strong&gt;required&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Variadic Arguments
&lt;/h3&gt;

&lt;p&gt;Variadic arguments have been around since &lt;strong&gt;the time of C and old C++&lt;/strong&gt; but it has a lot of limitations, which can be seen in the code demonstration below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cstdarg&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;printNumbers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;va_list&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Hold and make argument list with capacity "count"&lt;/span&gt;
    &lt;span class="n"&gt;va_start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Start processing variable args&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;va_arg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Get next argument&lt;/span&gt;
        &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;" "&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;va_end&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Clean up&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printNumbers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Works completely fine&lt;/span&gt;
    &lt;span class="n"&gt;printNumbers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;34&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sc"&gt;'4'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;12.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"12"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// It doesn't raise error but IT SHOULD!&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;As can be seen above:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Number of arguments need to be provided manually (most of the time, it's &lt;strong&gt;dynamic&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;The compiler doesn't raise any error if variable arguments have &lt;strong&gt;different&lt;/strong&gt; types&lt;/li&gt;
&lt;li&gt;Need to import header file &lt;code&gt;&amp;lt;cstdarg&amp;gt;&lt;/code&gt; to use them&lt;/li&gt;
&lt;li&gt;It only works with basic primitive types (&lt;code&gt;std::string&lt;/code&gt; is &lt;strong&gt;NOT&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is very limited and doesn't work for the &lt;strong&gt;Modern C++&lt;/strong&gt; world where classes, objects and templates are used all the time.&lt;/p&gt;
&lt;h3&gt;
  
  
  Variadic Templates
&lt;/h3&gt;

&lt;p&gt;Variadic Templates were introduced in &lt;strong&gt;C++  11&lt;/strong&gt; to eliminate the limitations of variadic arguments by providing type safety, dynamic argument length and lesser usage of macros.&lt;/p&gt;

&lt;p&gt;The following code is a basic example of variadic templates used to sum numbers:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;typename&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="nc"&gt;Args&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Args&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;...);&lt;/span&gt; &lt;span class="c1"&gt;// Fold expression (C++17)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Output: 15&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;      &lt;span class="c1"&gt;// Output: 6.0&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The function &lt;code&gt;sum&lt;/code&gt; has a packet parameter &lt;code&gt;Args... args&lt;/code&gt; which can accept any number of arguments&lt;/p&gt;

&lt;p&gt;&lt;code&gt;(args + ...)&lt;/code&gt; is a fold expression, introduced in &lt;strong&gt;C++ 17&lt;/strong&gt;, and is a clean and concise way to perform operations over variadic templates.&lt;/p&gt;

&lt;p&gt;This code is then expanded to &lt;code&gt;((1 + 2) + 3) + 4 + 5&lt;/code&gt;, which returns the value of &lt;code&gt;15&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  More than Functions
&lt;/h3&gt;

&lt;p&gt;Variadic Templates have more usage than just using them with basic functions. They can be used in situations like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Logical AND / OR Boolean Operations
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;typename&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="nc"&gt;Bools&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="nf"&gt;allTrue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Bools&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="n"&gt;bs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bs&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;...);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;typename&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="nc"&gt;Bools&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="nf"&gt;anyTrue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Bools&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="n"&gt;bs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bs&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;...);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;allTrue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// false&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;anyTrue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This operation is used in flag evaluation and validation checks&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Calling a Function on Each Argument
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"[int] "&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"[str] "&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;typename&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="nc"&gt;Args&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;logAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Args&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;...);&lt;/span&gt; &lt;span class="c1"&gt;// C++17 fold expression with comma&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;logAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"hello"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"world"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The code snippet logs all the arguments according to their type.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;int] 1
&lt;span class="o"&gt;[&lt;/span&gt;str] hello
&lt;span class="o"&gt;[&lt;/span&gt;int] 42
&lt;span class="o"&gt;[&lt;/span&gt;str] world

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;Custom Factory functions
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;memory&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;utility&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;typename&lt;/span&gt; &lt;span class="nc"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;typename&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="nc"&gt;Args&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;unique_ptr&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;make_instance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Args&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;make_unique&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;forward&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Args&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)...);&lt;/span&gt; &lt;span class="c1"&gt;// preserve the argument was originally passed&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="nc"&gt;Foo&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Foo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"Foo constructed: "&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;", "&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;



&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;make_instance&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Foo&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"bar"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The code snippet is a custom factory function which makes a class with any number of parameters.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Foo constructed: 10, bar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt; Real life applications&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Variadic templates are heavily used by C++ STL such as &lt;code&gt;std::tuple&lt;/code&gt;, &lt;code&gt;std::pair&lt;/code&gt;, &lt;code&gt;std::array&lt;/code&gt; &lt;code&gt;std::make_unique&lt;/code&gt;, &lt;code&gt;std::make_shared&lt;/code&gt; libraries&lt;/p&gt;
&lt;h3&gt;
  
  
  When to use C variadic arguments &lt;code&gt;va_arg&lt;/code&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Working with C functions such as &lt;code&gt;printf&lt;/code&gt;, &lt;code&gt;scanf&lt;/code&gt;, &lt;code&gt;syslog&lt;/code&gt;, etc&lt;/li&gt;
&lt;li&gt;Extending C code on top of C++ code&lt;/li&gt;
&lt;li&gt;Writing bindings for legacy support&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Variadic Arguments to Variadic Templates
&lt;/h3&gt;

&lt;p&gt;Variadic Arguments can easily be wrapped with Variadic Templates &lt;strong&gt;incase&lt;/strong&gt; there's a need to do it:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cstdarg&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cstdio&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;c_log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;va_list&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;va_start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;vprintf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;va_end&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;typename&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="nc"&gt;Args&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;logSafe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Args&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// c_str() method turns std::string into char*&lt;/span&gt;
    &lt;span class="n"&gt;c_log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c_str&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;...);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;logSafe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Number: %d, Text: %s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This example demonstrates how a C-style variadic, which logs a message, is wrapped by a Variadic Template.&lt;/p&gt;
&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;C variadic functions&lt;/strong&gt; only when you need to &lt;strong&gt;interop with legacy C code&lt;/strong&gt; or &lt;strong&gt;third-party libraries&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;For all modern C++ code, prefer &lt;strong&gt;variadic templates&lt;/strong&gt; for type safety, maintainability, and cleaner syntax.
&lt;/li&gt;
&lt;li&gt;You can even &lt;strong&gt;wrap&lt;/strong&gt; C variadic functions with variadic templates when needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;

&lt;p&gt;All the code used in this article is available here.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Delta456" rel="noopener noreferrer"&gt;
        Delta456
      &lt;/a&gt; / &lt;a href="https://github.com/Delta456/modern_cpp_series" rel="noopener noreferrer"&gt;
        modern_cpp_series
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Code for my Modern C++ Articles
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Modern C++ Series&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;Code for my Modern C++ Article Series.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Articles&lt;/h2&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/delta456/modern-c-an-introduction-36kg" rel="nofollow"&gt;Modern C++: An Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/delta456/modern-c-raw-strings-5c25" rel="nofollow"&gt;Modern C++: Raw strings &lt;code&gt;R("string")&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://builtin.com/articles/c-or-and" rel="nofollow noopener noreferrer"&gt;Modern C++: &lt;code&gt;and&lt;/code&gt;, &lt;code&gt;or&lt;/code&gt; and &lt;code&gt;not&lt;/code&gt;  as bool operators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/delta456/modern-c-constexpr-38bk" rel="nofollow"&gt;Modern C++: &lt;code&gt;constexpr&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/delta456/modern-c-temp-vars-in-if-switch-ig0" rel="nofollow"&gt;Modern C++: Temp Vars in &lt;code&gt;if&lt;/code&gt;/&lt;code&gt;switch&lt;/code&gt; statments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/delta456/modern-c-lambdas-3pjl" rel="nofollow"&gt;Modern C++: Lambdas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/delta456/modern-c-enum-class-struct-m2f" rel="nofollow"&gt;Modern C++: &lt;code&gt;enum class|struct&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://builtin.com/articles/stdoptional" rel="nofollow noopener noreferrer"&gt;Modern C++: &lt;code&gt;std::optional&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/delta456/modern-c-variadic-templates-16nn" rel="nofollow"&gt;Modern C++: Variadic Templates&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Delta456/modern_cpp_series" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;





</description>
      <category>cpp</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Kubernetes' minikube uses my Go Lang Project!</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Sat, 06 Aug 2022 13:01:00 +0000</pubDate>
      <link>https://dev.to/delta456/kubernetes-minikube-uses-my-go-lang-project-d9o</link>
      <guid>https://dev.to/delta456/kubernetes-minikube-uses-my-go-lang-project-d9o</guid>
      <description>&lt;p&gt;I am very honoured to announce that my &lt;strong&gt;Go Language Project&lt;/strong&gt; &lt;a href="https://github.com/Delta456/box-cli-maker" rel="noopener noreferrer"&gt;Box CLI Maker&lt;/a&gt; which makes Highly Customized Boxes for CLI is being used in Kubernetes's &lt;a href="https://github.com/kubernetes/minikube" rel="noopener noreferrer"&gt;minikube&lt;/a&gt; which implements a local Kubernetes cluster for Mac OS, Linux and Windows, according to the description.&lt;/p&gt;

&lt;p&gt;They are the first major user of my module which has been out for 2-3 years. This is a big achievement for me as it inspires me to make more Open source projects and continue as an Open source contributor throughout my career.&lt;/p&gt;

&lt;p&gt;They added my module in PR &lt;a href="https://github.com/kubernetes/minikube/pull/10818" rel="noopener noreferrer"&gt;&lt;code&gt;#10818&lt;/code&gt;&lt;/a&gt; which was merged 1 year ago and it is also used in their &lt;a href="https://pkg.go.dev/k8s.io/minikube/cmd/minikube/cmd" rel="noopener noreferrer"&gt;&lt;code&gt;cmd&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://pkg.go.dev/k8s.io/minikube/pkg/minikube/out" rel="noopener noreferrer"&gt;&lt;code&gt;out&lt;/code&gt;&lt;/a&gt; sub-packages.&lt;/p&gt;

&lt;p&gt;Currently, my module has &lt;a href="https://github.com/Delta456/box-cli-maker/stargazers" rel="noopener noreferrer"&gt;222 🌟 stars&lt;/a&gt; and &lt;a href="https://github.com/Delta456/box-cli-maker/network/dependents?dependent_type=PACKAGE&amp;amp;package_id=UGFja2FnZS0yMjc2NDgzNzMz" rel="noopener noreferrer"&gt;14 📦 importers&lt;/a&gt; which is a good sign and motivation for me to develop on this open source project even further.&lt;/p&gt;

&lt;p&gt;I would like to thank the open source and Go Lang community for all the support and love that made this feat possible!&lt;/p&gt;

</description>
      <category>github</category>
      <category>go</category>
      <category>opensource</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>I am back!</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Sat, 06 Aug 2022 11:33:12 +0000</pubDate>
      <link>https://dev.to/delta456/i-am-back-30da</link>
      <guid>https://dev.to/delta456/i-am-back-30da</guid>
      <description>&lt;p&gt;Finally after 2 years of studies, I am back! I will finally be coding, making projects, blogging and what not again. I hope to do my future goals well and perfectly. &lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>My Review of 2020</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Thu, 31 Dec 2020 04:18:00 +0000</pubDate>
      <link>https://dev.to/delta456/my-review-of-2020-3gd8</link>
      <guid>https://dev.to/delta456/my-review-of-2020-3gd8</guid>
      <description>&lt;p&gt;The 2020 year has been hard almost for everyone due to the pandemic. My year was almost alright, but then my family also got infected with COVID-19 recently. However, we luckily fought through it and now we are safe.&lt;/p&gt;

&lt;p&gt;I hope everyone's safe and I pray for those who are going through this tough time. Since I was always at home, I was over-productive this year as I had a lot of time to learn and make stuff. I believed that such an opportunity to improve will never come again, so I made the best use of it.&lt;/p&gt;

&lt;p&gt;And as 2020 is about to end soon, these are the things I accomplished this year:&lt;/p&gt;

&lt;h3&gt;
  
  
  Accomplished
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;My Dev.to account articles have passed more than 100K views in less than one year of creation!&lt;/li&gt;
&lt;li&gt;I made small 5 projects and learned a lot of things and met a lot of people who helped me to implement those features! I would like to thank them very much ^-^&lt;/li&gt;
&lt;li&gt;My GoLang library: &lt;a href="https://github.com/Delta456/box-cli-maker" rel="noopener noreferrer"&gt;&lt;code&gt;Box Cli Maker&lt;/code&gt;&lt;/a&gt; has 100+ stars in just 8 months!!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/v-community/v_by_example" rel="noopener noreferrer"&gt;&lt;code&gt;V By Example&lt;/code&gt;&lt;/a&gt; has also 100+ stars :)&lt;/li&gt;
&lt;li&gt;I have done a total of 200 Pull Requests in my whole life.&lt;/li&gt;
&lt;li&gt;I have completed &lt;a href="https://hacktoberfest.digitalocean.com" rel="noopener noreferrer"&gt;&lt;code&gt;Hacktoberfest 2020&lt;/code&gt;&lt;/a&gt; and I did around 7 PRs this time during October because I was busy that time with other things!&lt;/li&gt;
&lt;li&gt;I learnt more about &lt;a href="//vlang.io]"&gt;&lt;code&gt;V&lt;/code&gt;&lt;/a&gt;'s internal compiler and started to implement small features and fix bugs and issues slowly and step by step!&lt;/li&gt;
&lt;li&gt; I had started taking part in discussions of &lt;a href="https://github.com/gvanrossum/patma" rel="noopener noreferrer"&gt;Python's Pattern Matching syntax&lt;/a&gt; and was against the favour of using &lt;code&gt;_&lt;/code&gt; for denoting &lt;code&gt;else&lt;/code&gt; case in &lt;code&gt;match&lt;/code&gt; syntax as it would be inconsistent and wouldn't make it Pythonic anymore. I tried giving some issues and I got &lt;a href="https://github.com/gvanrossum/patma/issues/89#issuecomment-649210954" rel="noopener noreferrer"&gt;acknowledged&lt;/a&gt; from them. Though my proposal was rejected as I wasn't a part of them.&lt;/li&gt;
&lt;li&gt;I got some "job offers" but I feel those were scams so I rejected them as who can hire someone like that? I think it's still an achievement as people are coming to me xD&lt;/li&gt;
&lt;li&gt;I made a &lt;a href="https://github.com/Delta456/Delta456" rel="noopener noreferrer"&gt;&lt;code&gt;Github Profile README.md&lt;/code&gt;&lt;/a&gt; in such a unique style that others liked and copied it.&lt;/li&gt;
&lt;li&gt;Opened several issues in &lt;code&gt;Golang&lt;/code&gt;, &lt;code&gt;V&lt;/code&gt; and &lt;code&gt;Deno&lt;/code&gt; etc.&lt;/li&gt;
&lt;li&gt;Became a collaborator of &lt;a href="https://github.com/Bhupesh-V/30-seconds-of-cpp" rel="noopener noreferrer"&gt;&lt;code&gt;Bhupesh-V/30-seconds-of-cpp&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Got 90+ followers on &lt;code&gt;GitHub&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;My &lt;a href="https://github.com/microsoft/terminal/issues/8331" rel="noopener noreferrer"&gt;proposal&lt;/a&gt; for &lt;a href="https://github.com/microsoft/terminal" rel="noopener noreferrer"&gt;Windows Terminal&lt;/a&gt; got accepted!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Projects made
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Box CLI Maker&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Delta456" rel="noopener noreferrer"&gt;
        Delta456
      &lt;/a&gt; / &lt;a href="https://github.com/Delta456/box-cli-maker" rel="noopener noreferrer"&gt;
        box-cli-maker
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Make Highly Customized Boxes for CLI
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/Delta456/box-cli-makerimg/lib_logo.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FDelta456%2Fbox-cli-makerimg%2Flib_logo.png" alt="logo"&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;br&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href="https://pkg.go.dev/github.com/Delta456/box-cli-maker/v2" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0eae12fa740982edd2460582e17c2f95644485180c268f3ea48b4ed8a7e09330/68747470733a2f2f706b672e676f2e6465762f62616467652f6769746875622e636f6d2f44656c74613435362f626f782d636c692d6d616b65722f76322e737667" alt="Go Reference"&gt;&lt;/a&gt;
&lt;a href="https://godocs.io/github.com/Delta456/box-cli-maker/v2" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/98d60c64e86959befef4f25476921f5fda55a0e1dc138fe5a81ff5dbcd3a9dbd/687474703a2f2f676f646f63732e696f2f6769746875622e636f6d2f44656c74613435362f626f782d636c692d6d616b65723f7374617475732e737667" alt="godocs.io"&gt;&lt;/a&gt;
&lt;a href="https://github.com/Delta456/box-cli-maker/actions?query=workflow%3A%22Box+CLI+Maker%22" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/Delta456/box-cli-maker/workflows/Box%20CLI%20Maker/badge.svg" alt="CI"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/github.com/Delta456/box-cli-maker" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/08ff8b522ad194cfed4ddabed198184cfe7c134130370b6bb251350f3d06a0ae/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f44656c74613435362f626f782d636c692d6d616b6572" alt="Go Report Card"&gt;&lt;/a&gt;
&lt;a href="https://golangci.com/r/github.com/Delta456/box-cli-maker" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/19719c51b95c8ffe59e8982123cdbdd0efb6435fbaf40f23b5d4095e99dca264/68747470733a2f2f676f6c616e6763692e636f6d2f6261646765732f6769746875622e636f6d2f6d6f756c2f676f6c616e672d7265706f2d74656d706c6174652e737667" alt="GolangCI"&gt;&lt;/a&gt;
&lt;a href="https://github.com/Delta456/box-cli-maker/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2d5e2ecba4fab0da3e7683ed7cf40addd2fbb71060f7ffd414438705854b44f8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f44656c74613435362f626f782d636c692d6d616b65722e737667" alt="GitHub release"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avelino/awesome-go" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d8b2bde4796b67266f07c7a619f554c926ca4750d5d8861b4b740baaddc3fd1e/68747470733a2f2f617765736f6d652e72652f6d656e74696f6e65642d62616467652e737667" alt="Mentioned in Awesome Go"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Make a Terminal Box in 8️⃣ inbuilt different styles&lt;/li&gt;
&lt;li&gt;16 Inbuilt Colors and True Color Support 🎨&lt;/li&gt;
&lt;li&gt;Custom Title Positions 📏&lt;/li&gt;
&lt;li&gt;Make your Terminal Box style 📦&lt;/li&gt;
&lt;li&gt;Support for ANSI, Tabbed, Multi-line and Line Wrapping boxes 📑&lt;/li&gt;
&lt;li&gt;Align the text according to your needs 📐&lt;/li&gt;
&lt;li&gt;Unicode, Emoji and &lt;a href="https://en.wikipedia.org/wiki/Windows_Console" rel="nofollow noopener noreferrer"&gt;Windows Console&lt;/a&gt; Support 😋&lt;/li&gt;
&lt;li&gt;Written in 🇬 🇴&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt; go get github.com/Delta456/box-cli-maker/v2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage Tutorial&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;In &lt;code&gt;main.go&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-go notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;package&lt;/span&gt; main

&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;"github.com/Delta456/box-cli-maker/v2"&lt;/span&gt;

&lt;span class="pl-k"&gt;func&lt;/span&gt; &lt;span class="pl-s1"&gt;main&lt;/span&gt;() {
 &lt;span class="pl-s1"&gt;Box&lt;/span&gt; &lt;span class="pl-c1"&gt;:=&lt;/span&gt; &lt;span class="pl-s1"&gt;box&lt;/span&gt;.&lt;span class="pl-c1"&gt;New&lt;/span&gt;(box.&lt;span class="pl-smi"&gt;Config&lt;/span&gt;{&lt;span class="pl-s1"&gt;Px&lt;/span&gt;: &lt;span class="pl-c1"&gt;2&lt;/span&gt;, &lt;span class="pl-s1"&gt;Py&lt;/span&gt;: &lt;span class="pl-c1"&gt;5&lt;/span&gt;, &lt;span class="pl-s1"&gt;Type&lt;/span&gt;: &lt;span class="pl-s"&gt;"Single"&lt;/span&gt;, &lt;span class="pl-s1"&gt;Color&lt;/span&gt;: &lt;span class="pl-s"&gt;"Cyan"&lt;/span&gt;})
 &lt;span class="pl-s1"&gt;Box&lt;/span&gt;.&lt;span class="pl-c1"&gt;Print&lt;/span&gt;(&lt;span class="pl-s"&gt;"Box CLI Maker"&lt;/span&gt;, &lt;span class="pl-s"&gt;"Highly Customized Terminal Box Maker"&lt;/span&gt;)
}&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;code&gt;box.New(config Config)&lt;/code&gt; takes Box &lt;code&gt;Config&lt;/code&gt; and returns a &lt;code&gt;Box&lt;/code&gt; from the given &lt;code&gt;Config&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Parameters
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Px&lt;/code&gt; : Horizontal Padding&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Py&lt;/code&gt; : Vertical Padding&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ContentAlign&lt;/code&gt; : Content Alignment inside Box i.e. &lt;code&gt;Center&lt;/code&gt;, &lt;code&gt;Left&lt;/code&gt; and &lt;code&gt;Right&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Type&lt;/code&gt;: Box…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Delta456/box-cli-maker" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;random&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Delta456" rel="noopener noreferrer"&gt;
        Delta456
      &lt;/a&gt; / &lt;a href="https://github.com/Delta456/random" rel="noopener noreferrer"&gt;
        random
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An all purpose random library written in V.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;THIS MODULE HAS BEEN DEPRECATED AND &lt;a href="https://github.com/vlang/v/tree/master/vlib/rand" rel="noopener noreferrer"&gt;V'S RAND MODULE&lt;/a&gt; SHOULD BE USED INSTEAD!&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;random&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;An all purpose random library written in V.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;All variate functions possible.&lt;/li&gt;
&lt;li&gt;Generate random &lt;code&gt;int&lt;/code&gt; and &lt;code&gt;string&lt;/code&gt; with ease.&lt;/li&gt;
&lt;li&gt;range functions for &lt;code&gt;int&lt;/code&gt; and &lt;code&gt;f32&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Array functions like &lt;code&gt;shuffle&lt;/code&gt;, &lt;code&gt;choose&lt;/code&gt;, &lt;code&gt;sample&lt;/code&gt; etc.&lt;/li&gt;
&lt;li&gt;Makes life easier &lt;em&gt;sorta&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Many more features coming soon!&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Via &lt;code&gt;git clone&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git clone https://github.com/Delta456/random&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Via &lt;code&gt;v install&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;v install random&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Via &lt;code&gt;vpkg&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vpkg install random&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Docs&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-v notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;//&lt;/span&gt; struct for `triangular()`&lt;/span&gt;
&lt;span class="pl-k"&gt;struct&lt;/span&gt; &lt;span class="pl-en"&gt;Triangular&lt;/span&gt; {
&lt;span class="pl-k"&gt;mut&lt;/span&gt;
        low  &lt;span class="pl-k"&gt;f32&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-c1"&gt;1.0&lt;/span&gt;
        high &lt;span class="pl-k"&gt;f32&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-c1"&gt;1.0&lt;/span&gt;
        mode &lt;span class="pl-k"&gt;int&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-c1"&gt;1&lt;/span&gt;
}

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;//&lt;/span&gt; struct for `int_range()`&lt;/span&gt;
&lt;span class="pl-k"&gt;struct&lt;/span&gt; &lt;span class="pl-en"&gt;IntRange&lt;/span&gt; {
        start &lt;span class="pl-k"&gt;int&lt;/span&gt;
        stop  &lt;span class="pl-k"&gt;int&lt;/span&gt;
        step  &lt;span class="pl-k"&gt;int&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-c1"&gt;1&lt;/span&gt;
}

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;//&lt;/span&gt; struct for `float_range()`&lt;/span&gt;
&lt;span class="pl-k"&gt;struct&lt;/span&gt; &lt;span class="pl-en"&gt;FloatRange&lt;/span&gt; {
        start &lt;span class="pl-k"&gt;f32&lt;/span&gt;
        stop  &lt;span class="pl-k"&gt;f32&lt;/span&gt;
        step  &lt;span class="pl-k"&gt;f32&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-c1"&gt;1.0&lt;/span&gt;
}

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;//&lt;/span&gt; normal_variate is the normal distribution where mu is the &lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;//&lt;/span&gt; mean, and stigma is the standard deviation&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Delta456/random" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;CLI Badges&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Delta456" rel="noopener noreferrer"&gt;
        Delta456
      &lt;/a&gt; / &lt;a href="https://github.com/Delta456/cli_badges" rel="noopener noreferrer"&gt;
        cli_badges
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Generate Badges for your CLI written in 🦕 Deno and TS
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CLI Badges&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Generate Badges for your CLI.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://deno.land/x/cli_badges" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/584412915e84b31d51332beaf7d5c3d54b7f6f2e01afd2e2ddd855de40536647/687474703a2f2f696d672e736869656c64732e696f2f62616467652f617661696c61626c652532306f6e2d64656e6f2e6c616e642f782d6c69676874677265792e7376673f6c6f676f3d64656e6f266c6162656c436f6c6f723d626c61636b" alt="deno land"&gt;&lt;/a&gt;  &lt;a href="https://github.com/denoland/deno" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ec5130012bab54043107f3606b6cd436e40a8cee8fb27211a6f34299c75d647e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64656e6f2d253545312e332e322d6c69676874677265793f6c6f676f3d64656e6f" alt="deno version"&gt;&lt;/a&gt; &lt;a href="https://github.com/Delta456/cli_badges/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2300643e9d96a0506ebbf272202759415dafb449d259ec4529850c2432c06c23/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f44656c74613435362f636c695f6261646765732e737667" alt="GitHub release"&gt;&lt;/a&gt; &lt;a href="https://github.com/Delta456/cli_badges/actions?query=workflow%3ACI" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/Delta456/cli_badges/workflows/CI/badge.svg" alt="CI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: It is recommended to update pre-exisiting versions of this module to &lt;code&gt;^v0.1.0&lt;/code&gt; as there are many breaking changes from this release in the API.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Make Beautiful Badges for CLI 🤩&lt;/li&gt;
&lt;li&gt;Works across all terminals 🦄&lt;/li&gt;
&lt;li&gt;Link support 🔗&lt;/li&gt;
&lt;li&gt;Variety of colors to choose from 🎨&lt;/li&gt;
&lt;li&gt;Written in TS with Deno 🦕&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Warning ⚠️: If your terminal has a custom theme then the colors will blend according to your configuration which can cause unwanted results.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Simple Example&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Showcases &lt;code&gt;failed&lt;/code&gt;, &lt;code&gt;success&lt;/code&gt; and &lt;code&gt;skipped&lt;/code&gt; badge on the terminal&lt;/p&gt;
&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;badge&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;"https://deno.land/x/cli_badges@v0.1.1/mod.ts"&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-en"&gt;badge&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;"failed"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;"2"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;msgBg&lt;/span&gt;: &lt;span class="pl-s"&gt;"red"&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-en"&gt;badge&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;"success"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;"2"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;msgBg&lt;/span&gt;: &lt;span class="pl-s"&gt;"green"&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-en"&gt;badge&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;"skipped"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;"2"&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Delta456/cli_badges" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;range&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Delta456" rel="noopener noreferrer"&gt;
        Delta456
      &lt;/a&gt; / &lt;a href="https://github.com/Delta456/range" rel="noopener noreferrer"&gt;
        range
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Functionality of Python's range() in V 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;range&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Numeric ranges in V.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;a..b&lt;/code&gt; in V can only be in increasing order and not in negative order.&lt;/li&gt;
&lt;li&gt;Lacks inbuilt &lt;code&gt;step&lt;/code&gt; which most people need or want.&lt;/li&gt;
&lt;li&gt;No support for &lt;code&gt;float&lt;/code&gt; type.&lt;/li&gt;
&lt;li&gt;Solution for &lt;a href="https://github.com/vlang/v/issues/5944" rel="noopener noreferrer"&gt;vlang/v#5944&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Make &lt;code&gt;range&lt;/code&gt; easily&lt;/li&gt;
&lt;li&gt;Make ranges for &lt;code&gt;int&lt;/code&gt; and &lt;code&gt;f32&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Positive as well as negative support!&lt;/li&gt;
&lt;li&gt;No need to write the whole for loop! (&lt;em&gt;this maybe slower than the normal one&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;range&lt;/code&gt; for functional programming&lt;/li&gt;
&lt;li&gt;Support iterators. Long ranges without high memory allocation.&lt;/li&gt;
&lt;li&gt;Half open-open ranges &lt;code&gt;[from,to]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Via &lt;code&gt;git clone&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git clone https://github.com/Delta456/range&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Via &lt;code&gt;v install&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;v install Delta456.range&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Via &lt;code&gt;vpkg&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vpkg install range&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Use an iterator if you need a large range but don't want to allocate space in memory for all numbers in the range.&lt;/p&gt;
&lt;div class="highlight highlight-source-v notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-en"&gt;delta456.range&lt;/span&gt;
&lt;span class="pl-k"&gt;mut&lt;/span&gt; &lt;span class="pl-smi"&gt;iter&lt;/span&gt; &lt;span class="pl-k"&gt;:=&lt;/span&gt; range.&lt;span class="pl-en"&gt;to_iterator&lt;/span&gt;(from: &lt;span class="pl-c1"&gt;0&lt;/span&gt;, to: &lt;span class="pl-c1"&gt;1000000&lt;/span&gt;, step: &lt;span class="pl-c1"&gt;2&lt;/span&gt;)
&lt;span class="pl-k"&gt;for&lt;/span&gt; v &lt;span class="pl-k"&gt;in&lt;/span&gt; iter&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Delta456/range" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;ASCII Robot&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Delta456" rel="noopener noreferrer"&gt;
        Delta456
      &lt;/a&gt; / &lt;a href="https://github.com/Delta456/ascii_robot" rel="noopener noreferrer"&gt;
        ascii_robot
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ASCII Robot Generator in V
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ascii robot&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;ASCII Robot Generator in V&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation:&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Via &lt;code&gt;git clone&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git clone https://github.com/Delta456/ascii_robot&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Via &lt;code&gt;v install&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;v install ascii_robot&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Via &lt;code&gt;vpkg&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vpkg install ascii_robot&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;random_id()&lt;/code&gt; returns a random 5 digit hex number in string.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;generate(string)&lt;/code&gt; returns a string optional. string returns random made ASCII bot depending upon the 5 digit number.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;must_generate(string)&lt;/code&gt; is same as &lt;code&gt;generate()&lt;/code&gt; but returns an empty string if the hex number provided is not valid.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;random_robot()&lt;/code&gt; returns a random ASCII robot.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In main.v&lt;/p&gt;
&lt;div class="highlight highlight-source-v notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-en"&gt;delta456.ascii_robot&lt;/span&gt; &lt;span class="pl-k"&gt;as&lt;/span&gt; &lt;span class="pl-en"&gt;robot&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-en"&gt;rand&lt;/span&gt;

&lt;span class="pl-k"&gt;fn&lt;/span&gt; &lt;span class="pl-en"&gt;main&lt;/span&gt;() {
    rand.&lt;span class="pl-en"&gt;seed&lt;/span&gt;([&lt;span class="pl-en"&gt;u32&lt;/span&gt;(&lt;span class="pl-c1"&gt;42&lt;/span&gt;), &lt;span class="pl-c1"&gt;0&lt;/span&gt;]) &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;//&lt;/span&gt; or use your seeder&lt;/span&gt;
    &lt;span class="pl-en"&gt;println&lt;/span&gt;(robot.&lt;span class="pl-en"&gt;must_generate&lt;/span&gt;(&lt;span class="pl-s"&gt;'1f35a'&lt;/span&gt;))

    &lt;span class="pl-k"&gt;for&lt;/span&gt; &lt;span class="pl-smi"&gt;i&lt;/span&gt; &lt;span class="pl-k"&gt;:=&lt;/span&gt; &lt;span class="pl-c1"&gt;0&lt;/span&gt;; i &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt; &lt;span class="pl-c1"&gt;5&lt;/span&gt;; i&lt;span class="pl-k"&gt;++&lt;/span&gt; {
        &lt;span class="pl-en"&gt;println&lt;/span&gt;(robot.&lt;span class="pl-en"&gt;random_robot&lt;/span&gt;())
    }
}
&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Bot Types&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Total ASCII Robot Types possible:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;   _ _,_,_ _
   \( q p )/   
     \_#_/     
  .==|&amp;gt;o&amp;lt;|==:=L
  '=c|___|     
     ]| |[     
    [_| |_]     




     ,_,_,     
     \O&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Delta456/ascii_robot" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Hacktoberfest 2020 Stats
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhe7xfb3ssfmxmdpn4xe1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhe7xfb3ssfmxmdpn4xe1.png" alt="stats" width="327" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub Stats
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frexevfhnyxwtziodkxmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frexevfhnyxwtziodkxmx.png" alt="stats" width="491" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Dev.to Dashboard
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgptrm04vhay1xqeswmbb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgptrm04vhay1xqeswmbb.png" alt="dashboard" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Hacktoberfest 2020 Swags
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FEp6j_p3VQAEb4sh%3Fformat%3Dpng%26name%3Dmedium" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FEp6j_p3VQAEb4sh%3Fformat%3Dpng%26name%3Dmedium" alt="swags" width="760" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Dev.to Badges Earned
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9dwpc0igbh9mcpk5ysth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9dwpc0igbh9mcpk5ysth.png" alt="badges" width="317" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;I think this will be my last article for now as I have to study for the next 1.5 years for preparation! I hope you all liked this article and wish me to achieve more!!&lt;/p&gt;

&lt;p&gt;I thank all of the people who I have met and taught me a lot of things, especially people from V Community!!&lt;/p&gt;

&lt;p&gt;Happy New Year's Eve to All! I hope everyone achieves what they want to :)&lt;/p&gt;

</description>
      <category>career</category>
      <category>yearinreview</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Uses and difference b/w switch and match</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Thu, 10 Sep 2020 08:22:00 +0000</pubDate>
      <link>https://dev.to/delta456/use-of-switch-and-match-3h7g</link>
      <guid>https://dev.to/delta456/use-of-switch-and-match-3h7g</guid>
      <description>&lt;p&gt;Everyone must be using selection statements for &lt;a href="https://en.wikipedia.org/wiki/Pattern_matching" rel="noopener noreferrer"&gt;pattern matching&lt;/a&gt; or equality checking. Some language like &lt;code&gt;Rust&lt;/code&gt;, &lt;code&gt;F#&lt;/code&gt;, &lt;code&gt;Kotlin&lt;/code&gt;, &lt;code&gt;Scala&lt;/code&gt;, &lt;code&gt;V&lt;/code&gt; and &lt;code&gt;Python&lt;/code&gt; &lt;a href="https://github.com/gvanrossum/patma" rel="noopener noreferrer"&gt;(future)&lt;/a&gt; use &lt;code&gt;match&lt;/code&gt; and while some use &lt;code&gt;switch&lt;/code&gt; like &lt;code&gt;C&lt;/code&gt;, &lt;code&gt;C++&lt;/code&gt;, &lt;code&gt;Go&lt;/code&gt;, &lt;code&gt;C#&lt;/code&gt; etc.&lt;/p&gt;

&lt;p&gt;What was the need for separate names for the same purpose? This article tries to clarify the difference and usage between these two.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;switch&lt;/code&gt; statement
&lt;/h2&gt;

&lt;p&gt;A &lt;code&gt;switch&lt;/code&gt; statement allows a variable to be tested for equality against a list of values. Each value is called &lt;code&gt;case&lt;/code&gt; but needs to be terminated by &lt;code&gt;break&lt;/code&gt;. &lt;code&gt;switch&lt;/code&gt; can also have a &lt;code&gt;default&lt;/code&gt; case for handling other cases which are not listed.&lt;/p&gt;

&lt;p&gt;Here's a simple &lt;code&gt;switch&lt;/code&gt; Statement Program in C++.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"i is zero"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"i is one"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="nl"&gt;default:&lt;/span&gt;
      &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"invalid"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This program declares variable &lt;code&gt;i&lt;/code&gt; as &lt;code&gt;int&lt;/code&gt; and the &lt;code&gt;switch&lt;/code&gt; statement checks the value of &lt;code&gt;i&lt;/code&gt;. The first case will be evaluated as it satisfied the condition &lt;code&gt;i == 0&lt;/code&gt; so &lt;code&gt;i is zero&lt;/code&gt; will be printed.&lt;/p&gt;

&lt;p&gt;Though &lt;code&gt;switch&lt;/code&gt; has certain limitations:   &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;switch&lt;/code&gt; only works with integral values i.e. &lt;code&gt;int&lt;/code&gt;, &lt;code&gt;char&lt;/code&gt; and &lt;code&gt;enum&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;switch&lt;/code&gt; can only be used for checking equality&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;switch&lt;/code&gt; cannot be used as an expression&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;match&lt;/code&gt; statement/expression
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;match&lt;/code&gt; can be used both used as a statement and expression accordingly and are much like &lt;code&gt;switch&lt;/code&gt; except it solves the above limitation stated plus &lt;strong&gt;saves&lt;/strong&gt; additional keywords over switch like no &lt;code&gt;default&lt;/code&gt; or &lt;code&gt;case&lt;/code&gt; (though Python has &lt;code&gt;case&lt;/code&gt; and it's a statement). &lt;code&gt;default&lt;/code&gt; is either replaced with &lt;code&gt;else&lt;/code&gt; or &lt;code&gt;_&lt;/code&gt; (some may just use default). &lt;/p&gt;

&lt;p&gt;&lt;code&gt;match&lt;/code&gt; also supports range like &lt;code&gt;1..2&lt;/code&gt; which means in a range of &lt;code&gt;[1, 2)&lt;/code&gt; and &lt;code&gt;1..=3&lt;/code&gt; or &lt;code&gt;1...3&lt;/code&gt; which means &lt;code&gt;[1, 3]&lt;/code&gt;, &lt;code&gt;2 | 3 | 4&lt;/code&gt; or &lt;code&gt;3, 4, 5&lt;/code&gt; for matching if either of them is true plus matching them as a &lt;code&gt;var&lt;/code&gt;/&lt;code&gt;object&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The following examples of &lt;code&gt;match&lt;/code&gt; are written in Rust.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Taken from &lt;a href="https://doc.rust-lang.org/stable/rust-by-example/flow_control/match.html" rel="noopener noreferrer"&gt;&lt;code&gt;Learn Rust by Examples&lt;/code&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Simple example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;match&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"one"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="k"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"two"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="k"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"three"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="k"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"four"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="k"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"five"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
       &lt;span class="c1"&gt;// else clause, executed when none of the values matches&lt;/span&gt;
        &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="k"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"something else"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Using ranges and combining multiple values as an expression
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;match&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"not many"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// check if matches either to 0 or 1&lt;/span&gt;
        &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;..=&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="k"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"a few"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="c1"&gt;// check if its in a range of `[2, 9]`&lt;/span&gt;
        &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="k"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"too many"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// check if its in a range of `[10, 15)`&lt;/span&gt;
        &lt;span class="c1"&gt;// else clause, if neither of the cases matches then "lots of&lt;/span&gt;
        &lt;span class="c1"&gt;// many" will be assigned&lt;/span&gt;
        &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="k"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"lots of many"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="nd"&gt;assert_eq!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"a few"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Exceptions
&lt;/h2&gt;

&lt;p&gt;Some languages like &lt;code&gt;Go&lt;/code&gt;, &lt;code&gt;JS&lt;/code&gt;, &lt;code&gt;TS&lt;/code&gt; etc have switch statements but support all primitive data types though they don't have support for ranges, using them as expressions and have &lt;code&gt;default&lt;/code&gt; as the keyword, pattern matching etc.&lt;/p&gt;

&lt;p&gt;In Go, there's no need to put &lt;code&gt;break&lt;/code&gt; on every case, it does it automatically plus you can use &lt;code&gt;interface{}&lt;/code&gt; to detect the type of the variable.&lt;/p&gt;

&lt;p&gt;An example of Go's &lt;code&gt;switch&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Taken from &lt;a href="https://play.golang.org/p/qVDqWoUQ6AI" rel="noopener noreferrer"&gt;&lt;code&gt;Go By Examples&lt;/code&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Simple example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"fmt"&lt;/span&gt;
    &lt;span class="s"&gt;"time"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="c"&gt;// Here's a basic `switch`.&lt;/span&gt;
    &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Write "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;" as "&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"one"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"two"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"three"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c"&gt;// You can use commas to separate multiple expressions&lt;/span&gt;
    &lt;span class="c"&gt;// in the same `case` statement. We use the optional&lt;/span&gt;
    &lt;span class="c"&gt;// `default` case in this example as well.&lt;/span&gt;
    &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Weekday&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Saturday&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Sunday&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"It's the weekend"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"It's a weekday"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c"&gt;// `switch` without an expression is an alternate way&lt;/span&gt;
    &lt;span class="c"&gt;// to express if/else logic. Here we also show how the&lt;/span&gt;
    &lt;span class="c"&gt;// `case` expressions can be non-constants.&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Hour&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"It's before noon"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"It's after noon"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c"&gt;// A type `switch` compares types instead of values.  You&lt;/span&gt;
    &lt;span class="c"&gt;// can use this to discover the type of an interface&lt;/span&gt;
    &lt;span class="c"&gt;// value.  In this example, the variable `t` will have the&lt;/span&gt;
    &lt;span class="c"&gt;// type corresponding to its clause.&lt;/span&gt;
    &lt;span class="n"&gt;whatAmI&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt;&lt;span class="p"&gt;{})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"I'm a bool"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"I'm an int"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Don't know type %T&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;whatAmI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;whatAmI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;whatAmI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hey"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;match&lt;/code&gt; and &lt;code&gt;switch&lt;/code&gt; are just convenient ways of writing long &lt;code&gt;if-else&lt;/code&gt; statements for increasing readability and making code more robust etc.&lt;/p&gt;

&lt;p&gt;Usually, &lt;code&gt;match&lt;/code&gt; is used for &lt;a href="https://en.wikipedia.org/wiki/Pattern_matching" rel="noopener noreferrer"&gt;pattern matching&lt;/a&gt; and also it can be a statement and as well as expression whereas &lt;code&gt;switch&lt;/code&gt; is used for equality checking and is a statement only.&lt;/p&gt;

&lt;p&gt;Some languages might not even use &lt;code&gt;switch&lt;/code&gt; (f.e. Kotlin with the &lt;a href="https://kotlinlang.org/docs/reference/control-flow.html#when-expression" rel="noopener noreferrer"&gt;&lt;code&gt;when&lt;/code&gt;&lt;/a&gt; which has the same semantics as &lt;code&gt;match&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;Dynamically and statically typed languages often do things differently on their specific use cases. Some may provide or disallow certain features so that the language doesn't become much complex. &lt;/p&gt;

&lt;p&gt;Similarly, V only supports the inclusive range of the last element i.e. &lt;code&gt;start...end&lt;/code&gt; which is the same as &lt;code&gt;[start, end]&lt;/code&gt; to remove the complexity.&lt;/p&gt;

&lt;p&gt;Some languages may even keep &lt;code&gt;switch&lt;/code&gt; for simplicity and easiness to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://doc.rust-lang.org/stable/rust-by-example/flow_control/match.html" rel="noopener noreferrer"&gt;Match in Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vlang/v/blob/master/doc/docs.md#match" rel="noopener noreferrer"&gt;Match in V&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/gvanrossum/patma" rel="noopener noreferrer"&gt;Match in Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/pattern-matching" rel="noopener noreferrer"&gt;Match in F#&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.scala-lang.org/files/archive/spec/2.11/08-pattern-matching.html" rel="noopener noreferrer"&gt;Match in Scala&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gobyexample.com/switch" rel="noopener noreferrer"&gt;Switch in Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kotlinlang.org/docs/reference/control-flow.html#when-expression" rel="noopener noreferrer"&gt;Match in Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/dotnet/csharp/pattern-matching" rel="noopener noreferrer"&gt;Switch in C#&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Pattern_matching" rel="noopener noreferrer"&gt;Pattern Matching&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there's anything wrong in this article then please reply in the comments.&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>rust</category>
      <category>go</category>
      <category>cpp</category>
    </item>
    <item>
      <title>CLI Badges: Generate Badges for your CLI</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Sat, 29 Aug 2020 14:18:13 +0000</pubDate>
      <link>https://dev.to/delta456/cli-badges-generate-badges-for-your-cli-1p3g</link>
      <guid>https://dev.to/delta456/cli-badges-generate-badges-for-your-cli-1p3g</guid>
      <description>&lt;h1&gt;
  
  
  CLI Badges
&lt;/h1&gt;

&lt;p&gt;Generate Badges for your CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Make Beautiful Badges for CLI 🤩&lt;/li&gt;
&lt;li&gt;Works across all terminals 🦄&lt;/li&gt;
&lt;li&gt;Link support 🔗&lt;/li&gt;
&lt;li&gt;Variety of colors to choose from 🎨&lt;/li&gt;
&lt;li&gt;Written in TS with Deno 🦕&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;badge&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://deno.land/x/cli_badges@v0.1.0/mod.ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;badge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;failed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;msgBg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;red&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;badge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;success&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;msgBg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;green&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;badge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;skipped&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;msgBg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;yellow&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Output
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdwka11yj2ad2xa7ranct.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdwka11yj2ad2xa7ranct.png" alt="sample_output" width="408" height="58"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;code&gt;badge&lt;/code&gt; function
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;badge&lt;/code&gt; function accepts the following arguments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;label&lt;/code&gt;: label of the badge&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;msg&lt;/code&gt;: message of the badge&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;opts&lt;/code&gt;: accepts an interface of &lt;code&gt;BadgeOptions&lt;/code&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  &lt;code&gt;BadgeOptions&lt;/code&gt; Interface
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;BadgeOptions&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;msgBg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default is blue&lt;/span&gt;
  &lt;span class="nl"&gt;labelBg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default is brightBlack&lt;/span&gt;
  &lt;span class="nl"&gt;msgColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default is white&lt;/span&gt;
  &lt;span class="nl"&gt;labelColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default is white&lt;/span&gt;
  &lt;span class="nl"&gt;msgStyle&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default is null&lt;/span&gt;
  &lt;span class="nl"&gt;labelStyle&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default is null&lt;/span&gt;
  &lt;span class="nl"&gt;msgWidth&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default is msg length + 2&lt;/span&gt;
  &lt;span class="nl"&gt;labelWidth&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default is label length + 2&lt;/span&gt;
  &lt;span class="nl"&gt;is_8bit&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default is false as it uses 24 bits&lt;/span&gt;
  &lt;span class="nl"&gt;hyper_link&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// hyperlink for the badge&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Available Options
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Foreground Colors
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;black&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;red&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;blue&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;green&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;yellow&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;magenta&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cyan&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;white&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightBlack&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightRed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightBlue&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightGreen&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightYellow&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightMagenta&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightCyan&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightWhite&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Background Colors
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;black&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;red&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;blue&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;green&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;yellow&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;magenta&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cyan&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;white&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightBlack&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightRed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightBlue&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightGreen&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightYellow&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightMagenta&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightCyan&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brightWhite&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Styles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bold&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;italic&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inverse&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dim&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;strike&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;underline&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Custom Colors
&lt;/h3&gt;

&lt;p&gt;Custom Colors are available and can be used for &lt;code&gt;msgBg&lt;/code&gt;, &lt;code&gt;labelmsg&lt;/code&gt;, &lt;code&gt;msgColor&lt;/code&gt; and &lt;code&gt;labelColor&lt;/code&gt; only. There are options to make &lt;code&gt;8 bit&lt;/code&gt; and &lt;code&gt;24 bit&lt;/code&gt; colors respectively. Set &lt;code&gt;is_8bit&lt;/code&gt; to true if you want custom 8 bit RGB colors else it will be set to 24 bit RBG colors by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: &lt;code&gt;24 bit&lt;/code&gt; Colors &lt;strong&gt;must&lt;/strong&gt; be in a range of &lt;code&gt;0x000000&lt;/code&gt; and &lt;code&gt;0xffffff&lt;/code&gt; and &lt;code&gt;8 bit&lt;/code&gt; Colors &lt;strong&gt;must&lt;/strong&gt; in a range of &lt;code&gt;0x0&lt;/code&gt; and &lt;code&gt;0xFF&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Hyperlink Support
&lt;/h3&gt;

&lt;p&gt;Hyperlink is only supported on &lt;a href="https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda" rel="noopener noreferrer"&gt;some&lt;/a&gt; terminals.&lt;/p&gt;
&lt;h2&gt;
  
  
  Acknowledgments
&lt;/h2&gt;

&lt;p&gt;I thank the author of &lt;a href="https://github.com/nombrekeff/cli-badges" rel="noopener noreferrer"&gt;nombrekeff/cli-badges&lt;/a&gt; for his original implementation in JS wth Node and also helped me with some Deno issues and giving me guidance on this project as this is my first project with TS.&lt;/p&gt;
&lt;h2&gt;
  
  
  GitHub
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Delta456" rel="noopener noreferrer"&gt;
        Delta456
      &lt;/a&gt; / &lt;a href="https://github.com/Delta456/cli_badges" rel="noopener noreferrer"&gt;
        cli_badges
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Generate Badges for your CLI written in 🦕 Deno and TS
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CLI Badges&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;Generate Badges for your CLI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://deno.land/x/cli_badges" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/584412915e84b31d51332beaf7d5c3d54b7f6f2e01afd2e2ddd855de40536647/687474703a2f2f696d672e736869656c64732e696f2f62616467652f617661696c61626c652532306f6e2d64656e6f2e6c616e642f782d6c69676874677265792e7376673f6c6f676f3d64656e6f266c6162656c436f6c6f723d626c61636b" alt="deno land"&gt;&lt;/a&gt;  &lt;a href="https://github.com/denoland/deno" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ec5130012bab54043107f3606b6cd436e40a8cee8fb27211a6f34299c75d647e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64656e6f2d253545312e332e322d6c69676874677265793f6c6f676f3d64656e6f" alt="deno version"&gt;&lt;/a&gt; &lt;a href="https://github.com/Delta456/cli_badges/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2300643e9d96a0506ebbf272202759415dafb449d259ec4529850c2432c06c23/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f44656c74613435362f636c695f6261646765732e737667" alt="GitHub release"&gt;&lt;/a&gt; &lt;a href="https://github.com/Delta456/cli_badges/actions?query=workflow%3ACI" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/Delta456/cli_badges/workflows/CI/badge.svg" alt="CI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: It is recommended to update pre-exisiting versions of this module to &lt;code&gt;^v0.1.0&lt;/code&gt; as there are many breaking changes from this release in the API.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Make Beautiful Badges for CLI 🤩&lt;/li&gt;
&lt;li&gt;Works across all terminals 🦄&lt;/li&gt;
&lt;li&gt;Link support 🔗&lt;/li&gt;
&lt;li&gt;Variety of colors to choose from 🎨&lt;/li&gt;
&lt;li&gt;Written in TS with Deno 🦕&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Warning ⚠️: If your terminal has a custom theme then the colors will blend according to your configuration which can cause unwanted results.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Simple Example&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;Showcases &lt;code&gt;failed&lt;/code&gt;, &lt;code&gt;success&lt;/code&gt; and &lt;code&gt;skipped&lt;/code&gt; badge on the terminal&lt;/p&gt;

&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;badge&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;"https://deno.land/x/cli_badges@v0.1.1/mod.ts"&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-en"&gt;badge&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;"failed"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;"2"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;msgBg&lt;/span&gt;: &lt;span class="pl-s"&gt;"red"&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-en"&gt;badge&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;"success"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;"2"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;msgBg&lt;/span&gt;: &lt;span class="pl-s"&gt;"green"&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-en"&gt;badge&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;"skipped"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;"2"&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Delta456/cli_badges" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>typescript</category>
      <category>deno</category>
      <category>showdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Package Validator for V</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Tue, 18 Aug 2020 14:52:56 +0000</pubDate>
      <link>https://dev.to/delta456/package-validator-for-v-n06</link>
      <guid>https://dev.to/delta456/package-validator-for-v-n06</guid>
      <description>&lt;p&gt;This workflow is a package validator for &lt;a href="//vlang.io"&gt;V&lt;/a&gt; Language. It uses V Actions for building and using V for Windows 10, Ubuntu 18.04 LTS and MacOS. This is a pretty simple workflow as V is really a new language and most things are handled by V itself!&lt;/p&gt;

&lt;p&gt;It took a lot of time to create as I was backed by the limitations of V so I had to tell the creator about these issues which he fixed it in his free time but of course he couldn't solve all.&lt;/p&gt;

&lt;p&gt;More things will be added soon. Any suggestions are welcome!&lt;/p&gt;

&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;I am using this as my Actions for V as its made by the community.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nocturlab" rel="noopener noreferrer"&gt;
        nocturlab
      &lt;/a&gt; / &lt;a href="https://github.com/nocturlab/setup-vlang-action" rel="noopener noreferrer"&gt;
        setup-vlang-action
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Github Action that allow you to compile v programs without the use of docker (because it's very slow)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;This repository will be ARCHIVED soon !! Check the official &lt;a href="https://github.com/vlang/setup-v" rel="noopener noreferrer"&gt;action&lt;/a&gt;
&lt;/h1&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Setup V environment &lt;a href="https://github.com/nocturlab/setup-vlang-action/releases/" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e6ae4f9038d2148001201c62870a550ea0bc05627462c26561e30c813f376b54/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6e6f637475726c61622f73657475702d766c616e672d616374696f6e" alt="Latest version"&gt;&lt;/a&gt; &lt;a href="https://github.com/nocturlab/setup-vlang-action/actions?query=workflow%3ABuild" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/nocturlab/setup-vlang-action/workflows/Build/badge.svg" alt="Build"&gt;&lt;/a&gt; &lt;a href="https://github.com/nocturlab/setup-vlang-action/actions?query=workflow%3ATests" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/nocturlab/setup-vlang-action/workflows/Tests/badge.svg" alt="Tests"&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;GitHub Action that allows you to compile V programs without the use of Docker (because it's very slow).&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;You just have to setup your workflow like this:&lt;/p&gt;
&lt;div class="highlight highlight-source-yaml notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; file: .github/workflows/vlang-build-pipeline.yml&lt;/span&gt;
&lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;vlang-build-pipeline&lt;/span&gt;

&lt;span class="pl-ent"&gt;on&lt;/span&gt;:
  &lt;span class="pl-ent"&gt;push&lt;/span&gt;:
    &lt;span class="pl-ent"&gt;paths-ignore&lt;/span&gt;:
      - &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;**.md&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;

&lt;span class="pl-ent"&gt;jobs&lt;/span&gt;:
  &lt;span class="pl-ent"&gt;run&lt;/span&gt;:
    &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Run&lt;/span&gt;
    &lt;span class="pl-ent"&gt;runs-on&lt;/span&gt;: &lt;span class="pl-s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="pl-ent"&gt;steps&lt;/span&gt;:
    - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Checkout&lt;/span&gt;
      &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;actions/checkout@v2&lt;/span&gt;
    - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Set up V version latest&lt;/span&gt;
      &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;nocturlab/setup-vlang-action@v1&lt;/span&gt;
      &lt;span class="pl-ent"&gt;with&lt;/span&gt;:
        &lt;span class="pl-ent"&gt;v-version&lt;/span&gt;: &lt;span class="pl-s"&gt;latest&lt;/span&gt;
      &lt;span class="pl-ent"&gt;id&lt;/span&gt;: &lt;span class="pl-s"&gt;v&lt;/span&gt;
    - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Build repository app&lt;/span&gt;
      &lt;span class="pl-ent"&gt;run&lt;/span&gt;: &lt;span class="pl-s"&gt;v .&lt;/span&gt;
    - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Run V tests&lt;/span&gt;
      &lt;span class="pl-ent"&gt;run&lt;/span&gt;: &lt;span class="pl-s"&gt;v test .&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Inputs&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;v-version&lt;/code&gt;: V version. Can be either exact version number, &lt;code&gt;latest&lt;/code&gt; (by default), or &lt;code&gt;master&lt;/code&gt; (use the master branch instead of release).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nocturlab/setup-vlang-action" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Maintainer Must-Haves&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CI&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;master&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;opened&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;synchronize&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  
 &lt;span class="na"&gt;test&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run tests on ${{ matrix.os }} ${{ matrix.v-version }}&lt;/span&gt;
  &lt;span class="na"&gt;strategy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;matrix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;os&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ubuntu-latest&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;macos-latest&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;windows-latest&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
        &lt;span class="na"&gt;v-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;master&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;latest&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ matrix.os }}&lt;/span&gt;
  &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v1&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nocturlab/setup-vlang-action@master&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;v-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;master&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run vet&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v vet .&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run tests&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v test .&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;vfmt verify&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v fmt -verify -diff *.v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;p&gt;This workflow uses the master branch of &lt;a href="https://github.com/vlang/v" rel="noopener noreferrer"&gt;V&lt;/a&gt; repo. It goes through all the &lt;code&gt;.v&lt;/code&gt; files in the current directory which includes &lt;code&gt;vet&lt;/code&gt; i.e. find unnecessary code which can be optimized, &lt;code&gt;test&lt;/code&gt; which tests all files with &lt;code&gt;__test&lt;/code&gt; as suffix and &lt;code&gt;fmt&lt;/code&gt; which formats the code but here we are using using &lt;code&gt;-verify&lt;/code&gt; flag to see it's the files are formatted or not.&lt;/p&gt;

&lt;p&gt;Currently &lt;code&gt;v fmt -verify -diff&lt;/code&gt; shows the diff of the original and formatted files as &lt;code&gt;-verify&lt;/code&gt; doesn't assert true even though they are formatted, its due to line endings. (LF v/s CRLF) &lt;/p&gt;
&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;Example of Repo using it:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/v-community" rel="noopener noreferrer"&gt;
        v-community
      &lt;/a&gt; / &lt;a href="https://github.com/v-community/repo_template" rel="noopener noreferrer"&gt;
        repo_template
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Template for V Repos
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;V Repo Template&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;Template for &lt;a href="https://github.com/vlang/v" rel="noopener noreferrer"&gt;V&lt;/a&gt; Repos&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/v-community/repo_template/workflows/CI/badge.svg?branch=master"&gt;&lt;img src="https://github.com/v-community/repo_template/workflows/CI/badge.svg?branch=master" alt="CI"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/203f500345b76790627a9466fa3d79167fc50e523463bb1e780af8d1232533a2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f762d636f6d6d756e6974792f7265706f5f74656d706c6174652e737667"&gt;&lt;img src="https://camo.githubusercontent.com/203f500345b76790627a9466fa3d79167fc50e523463bb1e780af8d1232533a2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f762d636f6d6d756e6974792f7265706f5f74656d706c6174652e737667" alt="GitHub Release"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Purpose&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;This repo template tries to solve the complexity behind creating V repos as many people don't how to make one or people are lazy.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Makefile&lt;/code&gt; for formatting files, running examples and tests&lt;/li&gt;
&lt;li&gt;GitHub Actions workflow for V&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;v.mod&lt;/code&gt; A file for initalising V projects&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MIT&lt;/code&gt; License for Repo (though you can change the license)&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;.gitignore&lt;/code&gt; made for V&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ISSUE_TEMPLATE&lt;/code&gt;, &lt;code&gt;CODE_OF_CONDUCT&lt;/code&gt; etc written&lt;/li&gt;
&lt;li&gt;More things coming soon...&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/v-community/repo_template&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Acknowledgments&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Thanks to &lt;a href="https://github.com/moul/golang-repo-template" rel="noopener noreferrer"&gt;moul/golang-template&lt;/a&gt; for his &lt;code&gt;ISSUE_TEMPLATE&lt;/code&gt; and other things written by him and inspiration.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;License&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Licensed under &lt;a href="https://github.com/v-community/repo_templateLICENSE" rel="noopener noreferrer"&gt;MIT&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contributing&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Contribution is welcome. Please read &lt;a href="https://github.com/v-community/repo_template.github/CODE_OF_CONDUCT.md" rel="noopener noreferrer"&gt;Code of Conduct&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/v-community/repo_template" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>actionshackathon</category>
      <category>github</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Python: removeprefix() and removesuffix()</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Tue, 18 Aug 2020 07:08:00 +0000</pubDate>
      <link>https://dev.to/delta456/python-removeprefix-and-removesuffix-34jp</link>
      <guid>https://dev.to/delta456/python-removeprefix-and-removesuffix-34jp</guid>
      <description>&lt;p&gt;In Python 3.9 which is scheduled to be released in October 2020&lt;br&gt;
has introduced two new string methods &lt;code&gt;str.removeprefix()&lt;/code&gt; and &lt;code&gt;str.removesuffix()&lt;/code&gt; respectively. &lt;/p&gt;
&lt;h2&gt;
  
  
  Why
&lt;/h2&gt;

&lt;p&gt;There were a lot of confusion as people thought &lt;code&gt;str.lstrip()&lt;/code&gt; and &lt;code&gt;str.rstrip()&lt;/code&gt; that can be used to trim prefix and suffix but the parameter accepts a &lt;strong&gt;set of characters&lt;/strong&gt; not the substring. &lt;/p&gt;

&lt;p&gt;These methods are useful for trimming prefix/suffix and also make code short and readable.&lt;/p&gt;
&lt;h2&gt;
  
  
  Purpose
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;str.removeprefix(substring: string)&lt;/code&gt; is a method which returns a new string with the trimmed prefix if the &lt;code&gt;str&lt;/code&gt; starts with it else it will return the original string.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;str.removesuffix(substring: string)&lt;/code&gt; is a method which returns a new string with the trimmed suffix if the &lt;code&gt;str&lt;/code&gt; ends with it else it will return the original string.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;These functions were implemented in &lt;a href="https://github.com/python/cpython/pull/18939" rel="noopener noreferrer"&gt;python/cpython#18939&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;removepreifx()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;removeprefix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;):]&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;[:]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;removesuffix()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;removesuffix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;suffix&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;endswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suffix&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suffix&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;[:]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;This shows the usage of the functions and the output of all the cases.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Hello World from Python 3.9!&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeprefix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Hello World&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;Python&lt;/span&gt; &lt;span class="mf"&gt;3.9&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeprefix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;Hello&lt;/span&gt; &lt;span class="n"&gt;World&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;Python&lt;/span&gt; &lt;span class="mf"&gt;3.9&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removesuffix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3.9!&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;Hello&lt;/span&gt; &lt;span class="n"&gt;World&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;Python&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removesuffix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Python&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;Hello&lt;/span&gt; &lt;span class="n"&gt;World&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;Python&lt;/span&gt; &lt;span class="mf"&gt;3.9&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Python is always evolving with the community's needs and it will be the most used language in the future.&lt;/p&gt;

</description>
      <category>python</category>
      <category>news</category>
      <category>computerscience</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What would you do if you had a Time Machine?</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Thu, 13 Aug 2020 07:32:57 +0000</pubDate>
      <link>https://dev.to/delta456/what-would-you-do-if-you-had-a-time-machine-153p</link>
      <guid>https://dev.to/delta456/what-would-you-do-if-you-had-a-time-machine-153p</guid>
      <description>&lt;p&gt;If I had a Time Machine then I would probably won't ever use it because it will affect my present if I tried to travel and altered my past and future. What I have now, I may not have now as you have to give sacrifices to achieve in life and you learn lessons when you make mistakes and improve further. At least that's my way of thinking.&lt;/p&gt;

&lt;p&gt;So if you had a time machine then what you would do?&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How Dev.to has improved you?</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Sun, 02 Aug 2020 09:41:47 +0000</pubDate>
      <link>https://dev.to/delta456/how-dev-to-has-improved-you-16ib</link>
      <guid>https://dev.to/delta456/how-dev-to-has-improved-you-16ib</guid>
      <description>&lt;p&gt;Pretty self explanatory but I would like to know it in more detail&lt;/p&gt;

</description>
      <category>writing</category>
      <category>watercooler</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Go2: Map and Filter with Generics</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Fri, 24 Jul 2020 05:09:31 +0000</pubDate>
      <link>https://dev.to/delta456/go2-map-and-filter-with-generics-243h</link>
      <guid>https://dev.to/delta456/go2-map-and-filter-with-generics-243h</guid>
      <description>&lt;p&gt;Go plans to add generics in their next big release since &lt;a href="https://go.googlesource.com/proposal/+/refs/heads/master/design/15292-generics.md" rel="noopener noreferrer"&gt;2016&lt;/a&gt; and they have been working upon the syntax so that it matches with current semantics. &lt;/p&gt;

&lt;p&gt;In June 2020 they had released a &lt;a href="https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md" rel="noopener noreferrer"&gt;draft&lt;/a&gt; for how about they have planned the syntax to match with their semantics.&lt;/p&gt;

&lt;p&gt;One of the problems of Go which it was a lot criticized was that it had never had &lt;code&gt;map&lt;/code&gt; and &lt;code&gt;filter&lt;/code&gt; in built which is a lot used for functional programming. Gophers had to write a &lt;code&gt;for&lt;/code&gt; loop to achieve but &lt;a href="https://github.com/robpike" rel="noopener noreferrer"&gt;Rob Pike&lt;/a&gt; had written a &lt;a href="https://github.com/robpike/filter" rel="noopener noreferrer"&gt;&lt;code&gt;filter&lt;/code&gt;&lt;/a&gt; package to achieve this but it contains a lot of boilerplate and he suggests to use &lt;code&gt;for&lt;/code&gt; loop. With Generics &lt;code&gt;map&lt;/code&gt; and &lt;code&gt;filter&lt;/code&gt; can be implemented quiet easily.&lt;/p&gt;

&lt;p&gt;While going through the Go Reddit. I had found this &lt;a href="https://go2goplay.golang.org/p/7zFKUcpzhvZ" rel="noopener noreferrer"&gt;code&lt;/a&gt; which implements &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;any&lt;/code&gt; and &lt;code&gt;all&lt;/code&gt; in Go with Generics. You must have noticed that they use &lt;code&gt;[T]&lt;/code&gt; instead of &lt;code&gt;&amp;lt;T&amp;gt;&lt;/code&gt; for denoting them. They are currently testing and asking for feedback as &lt;code&gt;&amp;lt;T&amp;gt;&lt;/code&gt; doesn't match with Go semantics. You can find the thread &lt;a href="https://www.reddit.com/r/golang/comments/hvpis5/go2_playground_now_supports_square_brackets_for/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I hope Go2 will be best release of Go Language ever!&lt;/p&gt;

</description>
      <category>go</category>
      <category>todayisearched</category>
      <category>news</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Rate my GitHub Profile README</title>
      <dc:creator>Swastik Baranwal</dc:creator>
      <pubDate>Mon, 13 Jul 2020 14:34:17 +0000</pubDate>
      <link>https://dev.to/delta456/rate-my-github-profile-readme-4ahb</link>
      <guid>https://dev.to/delta456/rate-my-github-profile-readme-4ahb</guid>
      <description>&lt;p&gt;As GitHub recently launched their &lt;code&gt;README.md&lt;/code&gt; feature for Profiles so I decided to make one too. I really putted all my efforts to make this small and beautiful. I want people to rate this and gimme feedback about this. If I can do more edits on it!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fesfzqljs1xkygwz97c16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fesfzqljs1xkygwz97c16.png" alt="Profile" width="800" height="592"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl53c9h8qevwvfcvrbq5l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl53c9h8qevwvfcvrbq5l.png" alt="Profile" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>showdev</category>
      <category>design</category>
    </item>
  </channel>
</rss>
