add span class and i tag inside wp_nav_menu link anchor tag

You can use the wp_nav_menu() arguments like so:

wp_nav_menu( array(
    'menu'          => 'Whatever Your Menu Name Is',
    'link_before'   => '<span class="main-nav__item-icon-wrapper"><i class="main-nav__item-icon icon-home"></i></span><span class="main-nav__item-content">',
    'link_after'    => '</span>'
) );

link_before and *_after will add anything before/after the text inside the link where just the normal argument before and after will add anything before/after the entire link but still inside the list-item.

This will add them to all the list items but you can use CSS to style them or not display them however you wish and I think it’s faster and easier than working with a walker.