// Copyright 2018 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. // compile-pass // https://github.com/rust-lang/rust/issues/51300 #[derive(PartialEq, Eq, Clone, Copy)] pub struct Stat { pub id: u8, pub index: usize, } impl Stat { pub const STUDENT_HAPPINESS: Stat = Stat{ id: 0, index: 0, }; pub const STUDENT_HUNGER: Stat = Stat{ id: 0, index: Self::STUDENT_HAPPINESS.index + 1, }; } pub fn from_index(id: u8, index: usize) -> Option { let stat = Stat{id, index}; match stat { Stat::STUDENT_HAPPINESS => Some(Stat::STUDENT_HAPPINESS), Stat::STUDENT_HUNGER => Some(Stat::STUDENT_HUNGER), _ => None, } } fn main() { }