fn won(&self) -> bool {
        // Horizontal win conditions
        if self.get_mark(0,0) == self.get_mark(1,0) && 
           self.get_mark(1,0) == self.get_mark(2,0) && 
           self.get_mark(0,0) != Mark::Empty {
            return true    
        }
        
        if self.get_mark(0,1) == self.get_mark(1,1) && 
           self.get_mark(1,1) == self.get_mark(2,1) &&
           self.get_mark(0,1) != Mark::Empty {
            return true
        }
        
        if self.get_mark(0,2) == self.get_mark(1,2) &&
           self.get_mark(1,2) == self.get_mark(2,2) &&
           self.get_mark(0,2) != Mark::Empty {
                    return true
        }
    
        // Vertical win conditions
        if self.get_mark(0,0) == self.get_mark(0,1) &&
           self.get_mark(0,1) == self.get_mark(0,2) &&
           self.get_mark(0,0) != Mark::Empty {
                    return true
        }

        if self.get_mark(1,0) == self.get_mark(1,1) &&
           self.get_mark(1,1) == self.get_mark(1,2) &&
           self.get_mark(1,0) != Mark::Empty {
                    return true
        }

        if self.get_mark(2,0) == self.get_mark(2,1) &&
           self.get_mark(2,1) == self.get_mark(2,2) &&
           self.get_mark(2,0) != Mark::Empty {
                    return true
        }

        // Diagonal win conditions
        if self.get_mark(0,0) == self.get_mark(1,1) &&
           self.get_mark(1,1) == self.get_mark(2,2) &&
           self.get_mark(0,0) != Mark::Empty {
                    return true
        }

        if self.get_mark(0,2) == self.get_mark(1,1) &&
           self.get_mark(1,1) == self.get_mark(2,0) &&
           self.get_mark(0,2) != Mark::Empty {
                return true
        }

        // Everything else failed, so nobody's won yet.
        return false
    }
/// Returns true if either side won, false if neither side has won.

Returns true if either side won, false if neither side has won.
Returns true if either side won false if neither side has won .
fn won(&self) -> bool {
        // Horizontal win conditions
        if self.get_mark(0,0) == self.get_mark(1,0) && 
           self.get_mark(1,0) == self.get_mark(2,0) && 
           self.get_mark(0,0) != Mark::Empty {
            return true    
        }
        if self.get_mark(0,1) == self.get_mark(1,1) && 
           self.get_mark(1,1) == self.get_mark(2,1) &&
           self.get_mark(0,1) != Mark::Empty {
            return true
        }
        if self.get_mark(0,2) == self.get_mark(1,2) &&
           self.get_mark(1,2) == self.get_mark(2,2) &&
           self.get_mark(0,2) != Mark::Empty {
                    return true
        }
        // Vertical win conditions
        if self.get_mark(0,0) == self.get_mark(0,1) &&
           self.get_mark(0,1) == self.get_mark(0,2) &&
           self.get_mark(0,0) != Mark::Empty {
                    return true
        }
        if self.get_mark(1,0) == self.get_mark(1,1) &&
           self.get_mark(1,1) == self.get_mark(1,2) &&
           self.get_mark(1,0) != Mark::Empty {
                    return true
        }
        if self.get_mark(2,0) == self.get_mark(2,1) &&
           self.get_mark(2,1) == self.get_mark(2,2) &&
           self.get_mark(2,0) != Mark::Empty {
                    return true
        }
        // Diagonal win conditions
        if self.get_mark(0,0) == self.get_mark(1,1) &&
           self.get_mark(1,1) == self.get_mark(2,2) &&
           self.get_mark(0,0) != Mark::Empty {
                    return true
        }
        if self.get_mark(0,2) == self.get_mark(1,1) &&
           self.get_mark(1,1) == self.get_mark(2,0) &&
           self.get_mark(0,2) != Mark::Empty {
                return true
        }
        // Everything else failed, so nobody's won yet.
        return false
    }
fn won ( & self ) -> bool { // Horizontal win conditions
 if self . get_mark ( 0 , 0 ) == self . get_mark ( 1 , 0 ) && self . get_mark ( 1 , 0 ) == self . get_mark ( 2 , 0 ) && self . get_mark ( 0 , 0 ) != Mark :: Empty { return true } if self . get_mark ( 0 , 1 ) == self . get_mark ( 1 , 1 ) && self . get_mark ( 1 , 1 ) == self . get_mark ( 2 , 1 ) && self . get_mark ( 0 , 1 ) != Mark :: Empty { return true } if self . get_mark ( 0 , 2 ) == self . get_mark ( 1 , 2 ) && self . get_mark ( 1 , 2 ) == self . get_mark ( 2 , 2 ) && self . get_mark ( 0 , 2 ) != Mark :: Empty { return true } // Vertical win conditions
 if self . get_mark ( 0 , 0 ) == self . get_mark ( 0 , 1 ) && self . get_mark ( 0 , 1 ) == self . get_mark ( 0 , 2 ) && self . get_mark ( 0 , 0 ) != Mark :: Empty { return true } if self . get_mark ( 1 , 0 ) == self . get_mark ( 1 , 1 ) && self . get_mark ( 1 , 1 ) == self . get_mark ( 1 , 2 ) && self . get_mark ( 1 , 0 ) != Mark :: Empty { return true } if self . get_mark ( 2 , 0 ) == self . get_mark ( 2 , 1 ) && self . get_mark ( 2 , 1 ) == self . get_mark ( 2 , 2 ) && self . get_mark ( 2 , 0 ) != Mark :: Empty { return true } // Diagonal win conditions
 if self . get_mark ( 0 , 0 ) == self . get_mark ( 1 , 1 ) && self . get_mark ( 1 , 1 ) == self . get_mark ( 2 , 2 ) && self . get_mark ( 0 , 0 ) != Mark :: Empty { return true } if self . get_mark ( 0 , 2 ) == self . get_mark ( 1 , 1 ) && self . get_mark ( 1 , 1 ) == self . get_mark ( 2 , 0 ) && self . get_mark ( 0 , 2 ) != Mark :: Empty { return true } // Everything else failed, so nobody's won yet.
 return false }
Returns true if either side won, false if neither side has won.
Returns true if either side won false if neither side has won .
&self
&self