Hey @fuel!
The example does not follow the standard. The standard states that there must be a function fn owner() → State where state is an enum with 3 variants and revert with a NotOwner error. The intent of the standard it to enable compatibility BETWEEN contracts, not limit the implementation. Your first example can follow the standard by implementing the SRC5 abi like this:
impl SRC_5 for Contract {
fn owner() -> State {
if OWNER == ZERO_B256 {
State::Uninitialized
} else {
State::Initialized(Identity::Address(Address::from(OWNER))
}
}
}