LiveInternet
LiveInternet
x
(+ )
rss forum sources ru
rss forum sources ru
rss_forum_sources_ru
-
-
e-mail
-
(3)
YalanLife
livemask2
spiegel1
-
: 29.07.2007
:
:
: 80
:
, 27 2021 . 12:14
+
OpenGL: , .. , BC " mut ". , .. , mut, Cell:
use std::cell::Cell;
struct Foo
{
field: Cell
,
}
impl Foo
{
fn new() -> Self
{
Foo{field: Cell::new(42)}
}
}
fn main() {
//
let f = Foo::new();
println!("{:?}", f.field.get());
f.field.set(-42);
// ,
println!("{:?}", f.field.get());
}
:
42
-42
https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846851
:
Holy Wars
0
0
0
0
0
0
<a href="https://www.liveinternet.ru/users/rss_forum_sources_ru/post483574427/">Что делать с жунами</a><br/>OpenGL: Именно в таком виде нет, т.к. если бы было можно, то легко было бы нарушить правило BC "на объект есть только одна mut ссылка". Но тем не менее это не иммутабельность, т.к. ничто не мешает менять объект, на котором нет mut, посредством Cell: use std::cell::Cell; struct Foo{ field: Cell,} impl Foo{ fn new() -> Self { Foo{field: Cell::new(42)} }} fn main() { // Иммутабельный объект let f = Foo::new(); println!("{:?}", f.field.get()); f.field.set(-42); // Упс, он поменялся println!("{:?}", f.field.get());} Вывод: 42-42 https://forum.sources.ru/index.p... <a href="https://www.liveinternet.ru/users/rss_forum_sources_ru/post483574427/">Читать далее...</a>
« .
—
—
. »
:
[1] [
]
:
:
: ( )
:
URL
LiveInternet
PDA