# Code style smoltcp does not follow the rustfmt code style because whitequark (the original author of smoltcp) finds automated formatters annoying and impairing readability just as much as improving it in different cases. In general, format the things like the existing code and it'll be alright. Here are a few things to watch out for, though: ## Ordering use statements Use statements should be separated into two sections, uses from other crates and uses from the current crate. The latter would ideally be sorted from most general to most specific, but it's not very important. ```rust use core::cell::RefCell; use crate::{Error, Result}; use crate::phy::{self, DeviceCapabilities, Device}; ``` ## Wrapping function calls Avoid rightwards drift. This is fine: ```rust assert_eq!(iface.inner.process_ethernet(&mut socket_set, 0, frame.into_inner()), Ok(Packet::None)); ``` This is also fine: ```rust assert_eq!(iface.inner.lookup_hardware_addr(MockTxToken, 0, &IpAddress::Ipv4(Ipv4Address([0x7f, 0x00, 0x00, 0x01])), &IpAddress::Ipv4(remote_ip_addr)), Ok((remote_hw_addr, MockTxToken))); ``` This is not: ```rust assert_eq!(iface.inner.lookup_hardware_addr(MockTxToken, 0, &IpAddress::Ipv4(Ipv4Address([0x7f, 0x00, 0x00, 0x01])), &IpAddress::Ipv4(remote_ip_addr)), Ok((remote_hw_addr, MockTxToken))); ``` ## Wrapping function prototypes A function declaration might be wrapped... * right after `,`, * right after `>`, * right after `)`, * right after `->`, * right before and after `where`. Here's an artificial example, wrapped at 50 columns: ```rust fn dispatch_ethernet (&mut self, tx_token: Tx, timestamp: u64, f: F) -> Result<()> where Tx: TxToken, F: FnOnce(EthernetFrame<&mut [u8]>) { // ... } ``` ## Visually aligning tokens This is fine: ```rust struct State { rng_seed: u32, refilled_at: u64, tx_bucket: u64, rx_bucket: u64, } ``` This is also fine: ```rust struct State { rng_seed: u32, refilled_at: u64, tx_bucket: u64, rx_bucket: u64, } ``` It's OK to change between those if you touch that code anyway, but avoid reformatting just for the sake of it.