All things that you mention have very precise meaning and map directly to POSIX/BSD Socket API. It's up to you to decide.
is_hup
on Read mean the other side hanged-up it's sending side. Meaning it won't send you anything again. However it might have kept the reading open, and you might still want to send some data to it.
shutdown
closes Reading/Writing/Both https://doc.rust-lang.org/std/net/enum.Shutdown.html , so it's up to you what and when you want to do.
TcpStream
internally holds FileDesc
and that will close
the fd
when you drop it, so if you don't shutdown
manually everything will be closed anyway, as soon as you remove given TcpStream
from usage. https://github.com/rust-lang/rust/blob/master/src/libstd/sys/unix/fd.rs#L217