write a sum function in asm
Certainly! Here's an example of a sum function in x86 assembly language:
```asm
section .text
global sum

sum:
  push ebp
  mov ebp, esp
  mov eax, [ebp+8] ; eax = first parameter
  mov ebx, [ebp+12] ; ebx = second parameter
  add eax, ebx ; eax = eax + ebx
  pop ebp
  ret
```
This function takes two parameters (the values to be added) and returns their sum. It uses the add instruction to perform the addition and then returns the result using the ret instruction.

I hope this helps! Let me know if you have any further questions.
Is that 16, 32 or 64 bits?
The code I provided is written in x86 assembly language, which is a family of instruction set architectures that supports 16-bit, 32-bit, and 64-bit processing modes.

In this case, the specific bit mode will depend on the environment in which the code is being executed. For example, if the code is running on a 32-bit operating system, it will use 32-bit registers and instructions, while on a 64-bit operating system, it will use 64-bit registers and instructions.

The example code I provided is written using 32-bit registers, but it can be modified to work with other bit modes as well.
Please convert this into Rust. Assume a vector of generic summable types as input.