Is there actually anything you need to change to the target specification? Most distros just use x86_64-unknown-linux-gnu as target to compile for. The name of the target doesn't affect the compiled executables.
To add to what @bjorn3 said, the "vendor" component of a canonical system tuple (where you put "horizon") is a vestige of an era of bad marketing choices by Unix workstation vendors in the late 1980s. Most software ignores it. It has to stick around for backward compatibility with all the code that parses canonical system tuples, but it should always be -unknown- or -pc- for new systems.
Canonical system tuples are also intentionally not supposed to capture all the differences between systems. They stop at the level of the C library and the ABI. The questions you should ask yourself are:
Presumably you are using the Linux kernel, or you would not have -linux in there. Are you also using the GNU C library? If you aren't, change the -gnu piece: -musl for musl libc, -bionic for Bionic libc, -horizon if you wrote your own, etc.
Did you change the C calling convention or the size of any type defined by standard C or POSIX header files? If so, tack on a suffix (without another dash): -gnuabihorizon or something. I can be more specific if you tell me what you changed.
But if you're using glibc and you didn't change the ABI, stick to x86_64-unknown-linux-gnu.
All of the other softwares I compiled from scratch support a custom target. It's a bit the shame to be honest...
And the rust website support the possibility for adding new target, so it's normal I ask no ? ...
What I mean is the main goal of my distribution is to allow the user to configure everything in detail. So if rust support the possibility to add a new target, I want to do it
I'm telling you, in my capacity as the closest thing Autoconf has to a maintainer anymore, that this is not a customization point that's available to you. The canonical system name for all glibc-based Linux distributions is <cpu>-unknown-linux-gnu<abi-suffix> and you must not change this unless you are using a different C library or you have changed the ABI. So much stuff will break. Rust is just the first thing you happened to trip over.
Some Linux distros like RHEL or SUSE do change the vendor fields for their C compiler targets. I don't think they do it for Rust though, Rust doesn't really support this and that's good for everyone, there's no reason to have it be different. I'd recommend against changing the vendor field for anything.